feat: 支持CozeV3

This commit is contained in:
suziheng
2025-01-22 21:37:17 +08:00
parent dde3cff708
commit cbf8413a39
4 changed files with 40 additions and 8 deletions

View File

@@ -35,7 +35,7 @@ func (a *AdaptorV3) ConvertRequest(c *gin.Context, relayMode int, request *model
return nil, errors.New("request is nil")
}
request.User = a.meta.Config.UserID
return ConvertRequest(*request), nil
return V3ConvertRequest(*request), nil
}
func (a *AdaptorV3) ConvertImageRequest(request *model.ImageRequest) (any, error) {

View File

@@ -44,14 +44,40 @@ func ConvertRequest(textRequest model.GeneralOpenAIRequest) *Request {
}
for i, message := range textRequest.Messages {
if i == len(textRequest.Messages)-1 {
cozeRequest.Query = message.CozeV3StringContent()
cozeRequest.Query = message.StringContent()
continue
}
cozeMessage := Message{
Role: message.Role,
Content: message.StringContent(),
}
cozeRequest.ChatHistory = append(cozeRequest.ChatHistory, cozeMessage)
}
return &cozeRequest
}
func V3ConvertRequest(textRequest model.GeneralOpenAIRequest) *V3Request {
cozeRequest := V3Request{
UserId: textRequest.User,
Stream: textRequest.Stream,
BotId: strings.TrimPrefix(textRequest.Model, "bot-"),
}
if cozeRequest.UserId == "" {
cozeRequest.UserId = "any"
}
for i, message := range textRequest.Messages {
if i == len(textRequest.Messages)-1 {
cozeRequest.AdditionalMessages = append(cozeRequest.AdditionalMessages, Message{
Role: "user",
Content: message.CozeV3StringContent(),
})
continue
}
cozeMessage := Message{
Role: message.Role,
Content: message.CozeV3StringContent(),
}
cozeRequest.ChatHistory = append(cozeRequest.ChatHistory, cozeMessage)
cozeRequest.AdditionalMessages = append(cozeRequest.AdditionalMessages, cozeMessage)
}
return &cozeRequest
}
@@ -217,7 +243,7 @@ func V3StreamHandler(c *gin.Context, resp *http.Response) (*model.ErrorWithStatu
if len(parts) != 2 {
continue
}
if strings.HasPrefix(parts[0], "event:") && strings.HasPrefix(parts[1], "data:") {
if !strings.HasPrefix(parts[0], "event:") || !strings.HasPrefix(parts[1], "data:") {
continue
}
event, data := strings.TrimSpace(parts[0][6:]), strings.TrimSpace(parts[1][5:])

View File

@@ -2,9 +2,9 @@ package coze
type Message struct {
Role string `json:"role"`
Type string `json:"type"`
Type string `json:"type,omitempty"`
Content string `json:"content"`
ContentType string `json:"content_type"`
ContentType string `json:"content_type,omitempty"`
}
type ErrorInformation struct {
@@ -78,3 +78,10 @@ type V3Response struct {
Code int `json:"code"`
Msg string `json:"msg"`
}
type V3Request struct {
BotId string `json:"bot_id"`
UserId string `json:"user_id"`
AdditionalMessages []Message `json:"additional_messages"`
Stream bool `json:"stream"`
}

View File

@@ -20,7 +20,6 @@ const (
VertexAI
Proxy
Replicate
Dummy // this one is only for count, do not add any channel after this
CozeV3
Dummy // this one is only for count, do not add any channel after this
)