From b70378148e53c0b0fba3a8d04b8a63823de1fe18 Mon Sep 17 00:00:00 2001 From: Buer <42402987+MartialBE@users.noreply.github.com> Date: Mon, 11 Mar 2024 16:16:22 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=90=9B=20fix:=20hunyuan=20model=20name=20?= =?UTF-8?q?change=20(#100)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/model-ratio.go | 5 ++++ providers/baidu/chat.go | 45 +++++++++++++++------------- providers/baidu/type.go | 22 +++++++++----- providers/tencent/chat.go | 12 +------- web/src/views/Channel/type/Config.js | 4 +-- 5 files changed, 48 insertions(+), 40 deletions(-) diff --git a/common/model-ratio.go b/common/model-ratio.go index ac532180..877c7147 100644 --- a/common/model-ratio.go +++ b/common/model-ratio.go @@ -152,6 +152,11 @@ func init() { // ¥0.1 / 1k tokens // https://cloud.tencent.com/document/product/1729/97731#e0e6be58-60c8-469f-bdeb-6c264ce3b4d0 "hunyuan": {[]float64{7.143, 7.143}, ChannelTypeTencent}, + // https://cloud.tencent.com/document/product/1729/97731#e0e6be58-60c8-469f-bdeb-6c264ce3b4d0 + // ¥0.01 / 1k tokens + "ChatStd": {[]float64{0.7143, 0.7143}, ChannelTypeTencent}, + //¥0.1 / 1k tokens + "ChatPro": {[]float64{7.143, 7.143}, ChannelTypeTencent}, "Baichuan2-Turbo": {[]float64{0.5715, 0.5715}, ChannelTypeBaichuan}, // ¥0.008 / 1k tokens "Baichuan2-Turbo-192k": {[]float64{1.143, 1.143}, ChannelTypeBaichuan}, // ¥0.016 / 1k tokens diff --git a/providers/baidu/chat.go b/providers/baidu/chat.go index fd999e45..38180e5b 100644 --- a/providers/baidu/chat.go +++ b/providers/baidu/chat.go @@ -131,40 +131,45 @@ func (p *BaiduProvider) convertToChatOpenai(response *BaiduChatResponse, request } func convertFromChatOpenai(request *types.ChatCompletionRequest) *BaiduChatRequest { - messages := make([]BaiduMessage, 0, len(request.Messages)) + baiduChatRequest := &BaiduChatRequest{ + Messages: make([]BaiduMessage, 0, len(request.Messages)), + Temperature: request.Temperature, + Stream: request.Stream, + TopP: request.TopP, + PenaltyScore: request.FrequencyPenalty, + Stop: request.Stop, + MaxOutputTokens: request.MaxTokens, + } + + if request.ResponseFormat != nil { + baiduChatRequest.ResponseFormat = request.ResponseFormat.Type + + } + for _, message := range request.Messages { if message.Role == types.ChatMessageRoleSystem { - messages = append(messages, BaiduMessage{ - Role: types.ChatMessageRoleUser, - Content: message.StringContent(), - }) - messages = append(messages, BaiduMessage{ - Role: types.ChatMessageRoleAssistant, - Content: "Okay", - }) + baiduChatRequest.System = message.StringContent() + continue } else if message.Role == types.ChatMessageRoleFunction { - messages = append(messages, BaiduMessage{ - Role: types.ChatMessageRoleAssistant, - Content: "Okay", + baiduChatRequest.Messages = append(baiduChatRequest.Messages, BaiduMessage{ + Role: types.ChatMessageRoleAssistant, + FunctionCall: &types.ChatCompletionToolCallsFunction{ + Name: *message.Name, + Arguments: "{}", + }, }) - messages = append(messages, BaiduMessage{ + baiduChatRequest.Messages = append(baiduChatRequest.Messages, BaiduMessage{ Role: types.ChatMessageRoleUser, Content: "这是函数调用返回的内容,请回答之前的问题:\n" + message.StringContent(), }) } else { - messages = append(messages, BaiduMessage{ + baiduChatRequest.Messages = append(baiduChatRequest.Messages, BaiduMessage{ Role: message.Role, Content: message.StringContent(), }) } } - baiduChatRequest := &BaiduChatRequest{ - Messages: messages, - Temperature: request.Temperature, - Stream: request.Stream, - } - if request.Tools != nil { functions := make([]*types.ChatCompletionFunction, 0, len(request.Tools)) for _, tool := range request.Tools { diff --git a/providers/baidu/type.go b/providers/baidu/type.go index e222fe7a..e83d29cd 100644 --- a/providers/baidu/type.go +++ b/providers/baidu/type.go @@ -14,16 +14,24 @@ type BaiduAccessToken struct { } type BaiduMessage struct { - Role string `json:"role"` - Content string `json:"content"` + Role string `json:"role"` + Content string `json:"content,omitempty"` + FunctionCall *types.ChatCompletionToolCallsFunction `json:"function_call,omitempty"` } type BaiduChatRequest struct { - Messages []BaiduMessage `json:"messages"` - Functions []*types.ChatCompletionFunction `json:"functions,omitempty"` - Temperature float64 `json:"temperature,omitempty"` - Stream bool `json:"stream"` - UserId string `json:"user_id,omitempty"` + Messages []BaiduMessage `json:"messages"` + Functions []*types.ChatCompletionFunction `json:"functions,omitempty"` + Temperature float64 `json:"temperature,omitempty"` + TopP float64 `json:"top_p,omitempty"` + PenaltyScore float64 `json:"penalty_score,omitempty"` + Stream bool `json:"stream"` + System string `json:"system,omitempty"` + Stop []string `json:"stop,omitempty"` + DisableSearch bool `json:"disable_search,omitempty"` + MaxOutputTokens int `json:"max_output_tokens,omitempty"` + ResponseFormat string `json:"response_format,omitempty"` + UserId string `json:"user_id,omitempty"` } type BaiduChatResponse struct { diff --git a/providers/tencent/chat.go b/providers/tencent/chat.go index 49a1ae16..f3f35461 100644 --- a/providers/tencent/chat.go +++ b/providers/tencent/chat.go @@ -75,6 +75,7 @@ func (p *TencentProvider) getChatRequest(request *types.ChatCompletionRequest) ( // 获取请求头 headers := p.GetRequestHeaders() headers["Authorization"] = sign + headers["X-TC-Action"] = request.Model if request.Stream { headers["Accept"] = "text/event-stream" } @@ -125,17 +126,6 @@ func convertFromChatOpenai(request *types.ChatCompletionRequest) *TencentChatReq messages := make([]TencentMessage, 0, len(request.Messages)) for i := 0; i < len(request.Messages); i++ { message := request.Messages[i] - if message.Role == "system" { - messages = append(messages, TencentMessage{ - Role: "user", - Content: message.StringContent(), - }) - messages = append(messages, TencentMessage{ - Role: "assistant", - Content: "Okay", - }) - continue - } messages = append(messages, TencentMessage{ Content: message.StringContent(), Role: message.Role, diff --git a/web/src/views/Channel/type/Config.js b/web/src/views/Channel/type/Config.js index 63296f98..88c4a3c1 100644 --- a/web/src/views/Channel/type/Config.js +++ b/web/src/views/Channel/type/Config.js @@ -122,8 +122,8 @@ const typeConfig = { }, 23: { input: { - models: ['hunyuan'], - test_model: 'hunyuan' + models: ['ChatStd', 'ChatPro'], + test_model: 'ChatStd' }, prompt: { key: '按照如下格式输入:AppId|SecretId|SecretKey'