From ee4f27d01bc1dd1d452cf16c9bbc5acfe7f1043c Mon Sep 17 00:00:00 2001 From: CaIon <1808837298@qq.com> Date: Thu, 17 Apr 2025 16:50:52 +0800 Subject: [PATCH] refactor: simplify model prefix checks and update message role for o-series models --- controller/channel-test.go | 2 +- relay/channel/openai/adaptor.go | 18 +++++++++--------- service/token_counter.go | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/controller/channel-test.go b/controller/channel-test.go index aa00c0c4..99ba04b0 100644 --- a/controller/channel-test.go +++ b/controller/channel-test.go @@ -186,7 +186,7 @@ func buildTestRequest(model string) *dto.GeneralOpenAIRequest { return testRequest } // 并非Embedding 模型 - if strings.HasPrefix(model, "o1") || strings.HasPrefix(model, "o3") { + if strings.HasPrefix(model, "o") { testRequest.MaxCompletionTokens = 10 } else if strings.Contains(model, "thinking") { if !strings.Contains(model, "claude") { diff --git a/relay/channel/openai/adaptor.go b/relay/channel/openai/adaptor.go index a4a06104..ef11b4fe 100644 --- a/relay/channel/openai/adaptor.go +++ b/relay/channel/openai/adaptor.go @@ -147,14 +147,12 @@ func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycommon.RelayIn if info.ChannelType != common.ChannelTypeOpenAI && info.ChannelType != common.ChannelTypeAzure { request.StreamOptions = nil } - if strings.HasPrefix(request.Model, "o1") || strings.HasPrefix(request.Model, "o3") { + if strings.HasPrefix(request.Model, "o") { if request.MaxCompletionTokens == 0 && request.MaxTokens != 0 { request.MaxCompletionTokens = request.MaxTokens request.MaxTokens = 0 } - if strings.HasPrefix(request.Model, "o3") || strings.HasPrefix(request.Model, "o1") { - request.Temperature = nil - } + request.Temperature = nil if strings.HasSuffix(request.Model, "-high") { request.ReasoningEffort = "high" request.Model = strings.TrimSuffix(request.Model, "-high") @@ -167,11 +165,13 @@ func (a *Adaptor) ConvertOpenAIRequest(c *gin.Context, info *relaycommon.RelayIn } info.ReasoningEffort = request.ReasoningEffort info.UpstreamModelName = request.Model - } - if request.Model == "o1" || request.Model == "o1-2024-12-17" || strings.HasPrefix(request.Model, "o3") { - //修改第一个Message的内容,将system改为developer - if len(request.Messages) > 0 && request.Messages[0].Role == "system" { - request.Messages[0].Role = "developer" + + // o系列模型developer适配(o1-mini除外) + if !strings.HasPrefix(request.Model, "o1-mini") { + //修改第一个Message的内容,将system改为developer + if len(request.Messages) > 0 && request.Messages[0].Role == "system" { + request.Messages[0].Role = "developer" + } } } diff --git a/service/token_counter.go b/service/token_counter.go index 9805c771..f3c3b6b0 100644 --- a/service/token_counter.go +++ b/service/token_counter.go @@ -43,7 +43,7 @@ func InitTokenEncoders() { } else { tokenEncoderMap[model] = defaultTokenEncoder } - } else if strings.HasPrefix(model, "o1") { + } else if strings.HasPrefix(model, "o") { tokenEncoderMap[model] = o200kTokenEncoder } else { tokenEncoderMap[model] = defaultTokenEncoder