(params: T, maxTokensCap: number)
| 3389 | * @returns Adjusted parameters with thinking budget capped if needed |
| 3390 | */ |
| 3391 | export function adjustParamsForNonStreaming< |
| 3392 | T extends { |
| 3393 | max_tokens: number |
| 3394 | thinking?: BetaMessageStreamParams['thinking'] |
| 3395 | }, |
| 3396 | >(params: T, maxTokensCap: number): T { |
| 3397 | const cappedMaxTokens = Math.min(params.max_tokens, maxTokensCap) |
| 3398 | |
| 3399 | // Adjust thinking budget if it would exceed capped max_tokens |
| 3400 | // to maintain the constraint: max_tokens > thinking.budget_tokens |
| 3401 | const adjustedParams = { ...params } |
| 3402 | if ( |
| 3403 | adjustedParams.thinking?.type === 'enabled' && |
| 3404 | adjustedParams.thinking.budget_tokens |
| 3405 | ) { |
| 3406 | adjustedParams.thinking = { |
| 3407 | ...adjustedParams.thinking, |
| 3408 | budget_tokens: Math.min( |
| 3409 | adjustedParams.thinking.budget_tokens, |
| 3410 | cappedMaxTokens - 1, // Must be at least 1 less than max_tokens |
| 3411 | ), |
| 3412 | } |
| 3413 | } |
| 3414 | |
| 3415 | return { |
| 3416 | ...adjustedParams, |
| 3417 | max_tokens: cappedMaxTokens, |
| 3418 | } |
| 3419 | } |
| 3420 | |
| 3421 | function isMaxTokensCapEnabled(): boolean { |
| 3422 | // 3P default: false (not validated on Bedrock/Vertex) |
no outgoing calls
no test coverage detected