From e9e594afa70680cb0c0d3ff09e88cb29382a1339 Mon Sep 17 00:00:00 2001 From: Christiaan Arnoldus Date: Fri, 27 Feb 2026 11:21:13 +0100 Subject: [PATCH] Enable routing to Vercel for Anthropic models --- src/lib/providers/anthropic.ts | 6 +++--- src/lib/providers/vercel/index.ts | 16 ---------------- 2 files changed, 3 insertions(+), 19 deletions(-) diff --git a/src/lib/providers/anthropic.ts b/src/lib/providers/anthropic.ts index aa665b7fc..df9d9f94f 100644 --- a/src/lib/providers/anthropic.ts +++ b/src/lib/providers/anthropic.ts @@ -17,9 +17,9 @@ export function isHaikuModel(requestedModel: string) { } function appendAnthropicBetaHeader(extraHeaders: Record, betaFlag: string) { - extraHeaders['x-anthropic-beta'] = [extraHeaders['x-anthropic-beta'], betaFlag] - .filter(Boolean) - .join(','); + for (const header of ['anthropic-beta', 'x-anthropic-beta']) { + extraHeaders[header] = [extraHeaders[header], betaFlag].filter(Boolean).join(','); + } } function hasCacheControl(message: OpenAI.ChatCompletionMessageParam) { diff --git a/src/lib/providers/vercel/index.ts b/src/lib/providers/vercel/index.ts index 7e15306bc..b97ed04b7 100644 --- a/src/lib/providers/vercel/index.ts +++ b/src/lib/providers/vercel/index.ts @@ -1,6 +1,5 @@ import type { BYOKResult } from '@/lib/byok'; import { kiloFreeModels, preferredModels } from '@/lib/models'; -import { isAnthropicModel } from '@/lib/providers/anthropic'; import { getGatewayErrorRate } from '@/lib/providers/gateway-error-rate'; import { AutocompleteUserByokProviderIdSchema, @@ -71,13 +70,6 @@ export async function shouldRouteToVercel( return true; } - if (isAnthropicModel(requestedModel)) { - console.debug( - `[shouldRouteToVercel] Anthropic models are not routed to Vercel pending fine-grained tool streaming support` - ); - return false; - } - if (!preferredModels.includes(requestedModel)) { console.debug(`[shouldRouteToVercel] only recommended models are tested for Vercel routing`); return false; @@ -118,14 +110,6 @@ export function applyVercelSettings( ) { requestToMutate.model = mapModelIdToVercel(requestedModel); - if (isAnthropicModel(requestedModel)) { - // https://vercel.com/docs/ai-gateway/model-variants#anthropic-claude-sonnet-4:-1m-token-context-beta - extraHeaders['anthropic-beta'] = [extraHeaders['x-anthropic-beta'], 'context-1m-2025-08-07'] - .filter(Boolean) - .join(','); - delete extraHeaders['x-anthropic-beta']; - } - if (userByok) { if (userByok.length === 0) { throw new Error('Invalid state: userByok should be null or not empty');