From 0004a8cafee6ce86c2a34c6f57b06b14636673bb Mon Sep 17 00:00:00 2001 From: fullex <106392080+0xfullex@users.noreply.github.com> Date: Tue, 25 Nov 2025 11:12:50 +0800 Subject: [PATCH] fix: respect enableMaxTokens setting when maxTokens is not configured (#11438) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: respect enableMaxTokens setting when maxTokens is not configured When enableMaxTokens is disabled, getMaxTokens() should return undefined to let the API use its own default value, instead of forcing 4096 tokens. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude * fix(modelParameters): handle max tokens when feature is disabled Check if max tokens feature is enabled before returning undefined to ensure proper API behavior --------- Co-authored-by: Claude Co-authored-by: icarus --- .../src/aiCore/prepareParams/modelParameters.ts | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/renderer/src/aiCore/prepareParams/modelParameters.ts b/src/renderer/src/aiCore/prepareParams/modelParameters.ts index 645697beaa..8a1d53a754 100644 --- a/src/renderer/src/aiCore/prepareParams/modelParameters.ts +++ b/src/renderer/src/aiCore/prepareParams/modelParameters.ts @@ -3,7 +3,6 @@ * 处理温度、TopP、超时等基础参数的获取逻辑 */ -import { DEFAULT_MAX_TOKENS } from '@renderer/config/constant' import { isClaude45ReasoningModel, isClaudeReasoningModel, @@ -73,11 +72,19 @@ export function getTimeout(model: Model): number { export function getMaxTokens(assistant: Assistant, model: Model): number | undefined { // NOTE: ai-sdk会把maxToken和budgetToken加起来 - let { maxTokens = DEFAULT_MAX_TOKENS } = getAssistantSettings(assistant) + const assistantSettings = getAssistantSettings(assistant) + const enabledMaxTokens = assistantSettings.enableMaxTokens ?? false + let maxTokens = assistantSettings.maxTokens + + // If user hasn't enabled enableMaxTokens, return undefined to let the API use its default value. + // Note: Anthropic API requires max_tokens, but that's handled by the Anthropic client with a fallback. + if (!enabledMaxTokens || maxTokens === undefined) { + return undefined + } const provider = getProviderByModel(model) if (isSupportedThinkingTokenClaudeModel(model) && ['anthropic', 'aws-bedrock'].includes(provider.type)) { - const { reasoning_effort: reasoningEffort } = getAssistantSettings(assistant) + const { reasoning_effort: reasoningEffort } = assistantSettings const budget = getAnthropicThinkingBudget(maxTokens, reasoningEffort, model.id) if (budget) { maxTokens -= budget