(params: T, maxTokensCap: number)
| 3362 | * @returns Adjusted parameters with thinking budget capped if needed |
| 3363 | */ |
| 3364 | export function adjustParamsForNonStreaming< |
| 3365 | T extends { |
| 3366 | max_tokens: number |
| 3367 | thinking?: BetaMessageStreamParams['thinking'] |
| 3368 | }, |
| 3369 | >(params: T, maxTokensCap: number): T { |
| 3370 | const cappedMaxTokens = Math.min(params.max_tokens, maxTokensCap) |
| 3371 | |
| 3372 | // Adjust thinking budget if it would exceed capped max_tokens |
| 3373 | // to maintain the constraint: max_tokens > thinking.budget_tokens |
| 3374 | const adjustedParams = { ...params } |
| 3375 | if ( |
| 3376 | adjustedParams.thinking?.type === 'enabled' && |
| 3377 | adjustedParams.thinking.budget_tokens |
| 3378 | ) { |
| 3379 | adjustedParams.thinking = { |
| 3380 | ...adjustedParams.thinking, |
| 3381 | budget_tokens: Math.min( |
| 3382 | adjustedParams.thinking.budget_tokens, |
| 3383 | cappedMaxTokens - 1, // Must be at least 1 less than max_tokens |
| 3384 | ), |
| 3385 | } |
| 3386 | } |
| 3387 | |
| 3388 | return { |
| 3389 | ...adjustedParams, |
| 3390 | max_tokens: cappedMaxTokens, |
| 3391 | } |
| 3392 | } |
| 3393 | |
| 3394 | function isMaxTokensCapEnabled(): boolean { |
| 3395 | // 3P default: false (not validated on Bedrock/Vertex) |
no outgoing calls
no test coverage detected