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 {