From ad91d360ceb8a53c1b236f5ea2e9d47c7aac0fde Mon Sep 17 00:00:00 2001 From: Elian Doran Date: Sun, 29 Mar 2026 11:41:28 +0300 Subject: [PATCH] fix(llm): thinking budget mismatch --- apps/client/src/services/llm_chat.ts | 2 ++ apps/server/src/services/llm/providers/anthropic.ts | 5 ++++- apps/server/src/services/llm/types.ts | 2 ++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/apps/client/src/services/llm_chat.ts b/apps/client/src/services/llm_chat.ts index 2ec00017d4..b2e4efc947 100644 --- a/apps/client/src/services/llm_chat.ts +++ b/apps/client/src/services/llm_chat.ts @@ -11,6 +11,8 @@ export interface ChatConfig { systemPrompt?: string; enableWebSearch?: boolean; enableExtendedThinking?: boolean; + /** Token budget for extended thinking (default: 10000) */ + thinkingBudget?: number; } export interface Citation { diff --git a/apps/server/src/services/llm/providers/anthropic.ts b/apps/server/src/services/llm/providers/anthropic.ts index c1ba8285d5..545c7b1c9a 100644 --- a/apps/server/src/services/llm/providers/anthropic.ts +++ b/apps/server/src/services/llm/providers/anthropic.ts @@ -52,9 +52,12 @@ export class AnthropicProvider implements LlmProvider { // Enable extended thinking for deeper reasoning if (config.enableExtendedThinking) { + const thinkingBudget = config.thinkingBudget || 10000; + // max_tokens must be greater than thinking budget + streamParams.max_tokens = Math.max(streamParams.max_tokens, thinkingBudget + 4000); (streamParams as any).thinking = { type: "enabled", - budget_tokens: 10000 // Allow up to 10k tokens for thinking + budget_tokens: thinkingBudget }; } diff --git a/apps/server/src/services/llm/types.ts b/apps/server/src/services/llm/types.ts index 488c53fc1d..d30af7bf90 100644 --- a/apps/server/src/services/llm/types.ts +++ b/apps/server/src/services/llm/types.ts @@ -29,6 +29,8 @@ export interface LlmProviderConfig { enableWebSearch?: boolean; /** Enable extended thinking for deeper reasoning */ enableExtendedThinking?: boolean; + /** Token budget for extended thinking (default: 10000) */ + thinkingBudget?: number; } export interface LlmProvider {