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") return nil, errors.New("request is nil")
} }
request.User = a.meta.Config.UserID request.User = a.meta.Config.UserID
return ConvertRequest(*request), nil return V3ConvertRequest(*request), nil
} }
func (a *AdaptorV3) ConvertImageRequest(request *model.ImageRequest) (any, error) { 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 { for i, message := range textRequest.Messages {
if i == len(textRequest.Messages)-1 { 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 continue
} }
cozeMessage := Message{ cozeMessage := Message{
Role: message.Role, Role: message.Role,
Content: message.CozeV3StringContent(), Content: message.CozeV3StringContent(),
} }
cozeRequest.ChatHistory = append(cozeRequest.ChatHistory, cozeMessage) cozeRequest.AdditionalMessages = append(cozeRequest.AdditionalMessages, cozeMessage)
} }
return &cozeRequest return &cozeRequest
} }
@@ -217,7 +243,7 @@ func V3StreamHandler(c *gin.Context, resp *http.Response) (*model.ErrorWithStatu
if len(parts) != 2 { if len(parts) != 2 {
continue continue
} }
if strings.HasPrefix(parts[0], "event:") && strings.HasPrefix(parts[1], "data:") { if !strings.HasPrefix(parts[0], "event:") || !strings.HasPrefix(parts[1], "data:") {
continue continue
} }
event, data := strings.TrimSpace(parts[0][6:]), strings.TrimSpace(parts[1][5:]) event, data := strings.TrimSpace(parts[0][6:]), strings.TrimSpace(parts[1][5:])

View File

@@ -2,9 +2,9 @@ package coze
type Message struct { type Message struct {
Role string `json:"role"` Role string `json:"role"`
Type string `json:"type"` Type string `json:"type,omitempty"`
Content string `json:"content"` Content string `json:"content"`
ContentType string `json:"content_type"` ContentType string `json:"content_type,omitempty"`
} }
type ErrorInformation struct { type ErrorInformation struct {
@@ -78,3 +78,10 @@ type V3Response struct {
Code int `json:"code"` Code int `json:"code"`
Msg string `json:"msg"` 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 VertexAI
Proxy Proxy
Replicate Replicate
Dummy // this one is only for count, do not add any channel after this
CozeV3 CozeV3
Dummy // this one is only for count, do not add any channel after this
) )