From f81225788d809acafdac3d67a1f6b14b137d582b Mon Sep 17 00:00:00 2001 From: RedwindA Date: Fri, 6 Jun 2025 01:58:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D2.5-pro=E7=9A=84=E9=A2=84?= =?UTF-8?q?=E7=AE=97=E8=8C=83=E5=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- relay/channel/gemini/relay-gemini.go | 33 ++++++++++++++++++++++++---- 1 file changed, 29 insertions(+), 4 deletions(-) diff --git a/relay/channel/gemini/relay-gemini.go b/relay/channel/gemini/relay-gemini.go index 161ff61e..303eca6b 100644 --- a/relay/channel/gemini/relay-gemini.go +++ b/relay/channel/gemini/relay-gemini.go @@ -78,17 +78,42 @@ func CovertGemini2OpenAI(textRequest dto.GeneralOpenAIRequest, info *relaycommon } } else { budgetTokens := model_setting.GetGeminiSettings().ThinkingAdapterBudgetTokensPercentage * float64(geminiRequest.GenerationConfig.MaxOutputTokens) - if budgetTokens == 0 || budgetTokens > 24576 { - budgetTokens = 24576 + + // 检查是否为新的2.5pro模型(支持ThinkingBudget但有特殊范围) + isNew25Pro := strings.HasPrefix(info.OriginModelName, "gemini-2.5-pro") && + !strings.HasPrefix(info.OriginModelName, "gemini-2.5-pro-preview-05-06") && + !strings.HasPrefix(info.OriginModelName, "gemini-2.5-pro-preview-03-25") + + if isNew25Pro { + // 新的2.5pro模型:ThinkingBudget范围为128-32768 + if budgetTokens == 0 || budgetTokens < 128 { + budgetTokens = 128 + } else if budgetTokens > 32768 { + budgetTokens = 32768 + } + } else { + // 其他模型:ThinkingBudget范围为0-24576 + if budgetTokens == 0 || budgetTokens > 24576 { + budgetTokens = 24576 + } } + geminiRequest.GenerationConfig.ThinkingConfig = &GeminiThinkingConfig{ ThinkingBudget: common.GetPointer(int(budgetTokens)), IncludeThoughts: true, } } } else if strings.HasSuffix(info.OriginModelName, "-nothinking") { - geminiRequest.GenerationConfig.ThinkingConfig = &GeminiThinkingConfig{ - ThinkingBudget: common.GetPointer(0), + // 检查是否为新的2.5pro模型(不支持-nothinking,因为最低值只能为128) + isNew25Pro := strings.HasPrefix(info.OriginModelName, "gemini-2.5-pro") && + !strings.HasPrefix(info.OriginModelName, "gemini-2.5-pro-preview-05-06") && + !strings.HasPrefix(info.OriginModelName, "gemini-2.5-pro-preview-03-25") + + if !isNew25Pro { + // 只有非新2.5pro模型才支持-nothinking + geminiRequest.GenerationConfig.ThinkingConfig = &GeminiThinkingConfig{ + ThinkingBudget: common.GetPointer(0), + } } } }