Claude: "Auto" effort = no thinking
| @@ -200,11 +200,12 @@ async function sendClaudeRequest(request, response) { | ||
| 200 | 200 | betaHeaders.push('prompt-caching-2024-07-31'); |
| 201 | 201 | } |
| 202 | 202 | |
| 203 | - if (useThinking) { | |
| 203 | + const reasoningEffort = request.body.reasoning_effort; | |
| 204 | + const budgetTokens = calculateClaudeBudgetTokens(requestBody.max_tokens, reasoningEffort, requestBody.stream); | |
| 205 | + | |
| 206 | + if (useThinking && Number.isInteger(budgetTokens)) { | |
| 204 | 207 | // No prefill when thinking |
| 205 | 208 | voidPrefill = true; |
| 206 | - const reasoningEffort = request.body.reasoning_effort; | |
| 207 | - const budgetTokens = calculateClaudeBudgetTokens(requestBody.max_tokens, reasoningEffort, requestBody.stream); | |
| 208 | 209 | const minThinkTokens = 1024; |
| 209 | 210 | if (requestBody.max_tokens <= minThinkTokens) { |
| 210 | 211 | const newValue = requestBody.max_tokens + minThinkTokens; |
| @@ -917,19 +917,20 @@ export function cachingAtDepthForOpenRouterClaude(messages, cachingAtDepth) { | ||
| 917 | 917 | * @param {number} maxTokens Maximum tokens |
| 918 | 918 | * @param {string} reasoningEffort Reasoning effort |
| 919 | 919 | * @param {boolean} stream If streaming is enabled |
| 920 | 920 | * @returns {number?} Budget tokens |
| 921 | 921 | */ |
| 922 | 922 | export function calculateClaudeBudgetTokens(maxTokens, reasoningEffort, stream) { |
| 923 | 923 | let budgetTokens = 0; |
| 924 | 924 | |
| 925 | 925 | switch (reasoningEffort) { |
| 926 | + case REASONING_EFFORT.auto: | |
| 927 | + return null; | |
| 926 | 928 | case REASONING_EFFORT.min: |
| 927 | 929 | budgetTokens = 1024; |
| 928 | 930 | break; |
| 929 | 931 | case REASONING_EFFORT.low: |
| 930 | 932 | budgetTokens = Math.floor(maxTokens * 0.1); |
| 931 | 933 | break; |
| 932 | - case REASONING_EFFORT.auto: | |
| 933 | 934 | case REASONING_EFFORT.medium: |
| 934 | 935 | budgetTokens = Math.floor(maxTokens * 0.25); |
| 935 | 936 | break; |