diff --git a/apps/web/src/app/api/openrouter/embeddings/route.ts b/apps/web/src/app/api/openrouter/embeddings/route.ts index e78ef734da..e57eb6ba9e 100644 --- a/apps/web/src/app/api/openrouter/embeddings/route.ts +++ b/apps/web/src/app/api/openrouter/embeddings/route.ts @@ -229,7 +229,7 @@ export async function POST(request: NextRequest): Promise 0 && provider.id === 'vercel') { - requestBodyParsed.model = mapModelIdToVercel(requestBodyParsed.model); + requestBodyParsed.model = mapModelIdToVercel(requestBodyParsed.model, false); } const upstreamBody = buildUpstreamBody(requestBodyParsed); diff --git a/apps/web/src/lib/ai-gateway/byok/index.ts b/apps/web/src/lib/ai-gateway/byok/index.ts index ff58d233cc..b30226cd5e 100644 --- a/apps/web/src/lib/ai-gateway/byok/index.ts +++ b/apps/web/src/lib/ai-gateway/byok/index.ts @@ -37,7 +37,7 @@ export async function getModelUserByokProviders(modelId: string): Promise VercelUserByokInferenceProviderIdSchema.safeParse(ep.tag).data) .filter(providerId => providerId !== undefined) ?? []; if (providers.length === 0) { diff --git a/apps/web/src/lib/ai-gateway/providers/vercel/index.ts b/apps/web/src/lib/ai-gateway/providers/vercel/index.ts index cabafeb57b..f8b44ae9e9 100644 --- a/apps/web/src/lib/ai-gateway/providers/vercel/index.ts +++ b/apps/web/src/lib/ai-gateway/providers/vercel/index.ts @@ -12,6 +12,7 @@ import type { VercelInferenceProviderConfig, VercelProviderConfig, } from '@/lib/ai-gateway/providers/openrouter/types'; +import { isReasoningExplicitlyDisabled } from '@/lib/ai-gateway/providers/openrouter/request-helpers'; import { mapModelIdToVercel } from '@/lib/ai-gateway/providers/vercel/mapModelIdToVercel'; import { StoredModelSchema } from '@kilocode/db'; import * as z from 'zod'; @@ -73,7 +74,7 @@ export async function shouldRouteToVercel( } const vercelModels = await getVercelModels(); - const vercelModelId = mapModelIdToVercel(requestedModel); + const vercelModelId = mapModelIdToVercel(requestedModel, isReasoningExplicitlyDisabled(request)); if (!vercelModels.includes(vercelModelId)) { console.debug(`[shouldRouteToVercel] model not found in Vercel model list`); return false; @@ -135,7 +136,10 @@ export function applyVercelSettings( requestToMutate: GatewayRequest, userByok: BYOKResult[] | null ) { - requestToMutate.body.model = mapModelIdToVercel(requestedModel); + requestToMutate.body.model = mapModelIdToVercel( + requestedModel, + isReasoningExplicitlyDisabled(requestToMutate) + ); if (userByok) { if (userByok.length === 0) { diff --git a/apps/web/src/lib/ai-gateway/providers/vercel/mapModelIdToVercel.ts b/apps/web/src/lib/ai-gateway/providers/vercel/mapModelIdToVercel.ts index 480d38c729..93fe68a2b2 100644 --- a/apps/web/src/lib/ai-gateway/providers/vercel/mapModelIdToVercel.ts +++ b/apps/web/src/lib/ai-gateway/providers/vercel/mapModelIdToVercel.ts @@ -26,9 +26,12 @@ const vercelModelIdMapping: Record = { 'qwen/qwen3-32b': 'alibaba/qwen-3-32b', }; -export function mapModelIdToVercel(modelId: string) { +export function mapModelIdToVercel(modelId: string, reasoningExplicitlyDisabled: boolean) { const hardcodedVercelId = vercelModelIdMapping[modelId]; if (hardcodedVercelId) { + if (reasoningExplicitlyDisabled && hardcodedVercelId.endsWith('-reasoning')) { + return hardcodedVercelId.replace(/-reasoning$/, '-non-reasoning'); + } return hardcodedVercelId; } diff --git a/apps/web/src/routers/byok-router.ts b/apps/web/src/routers/byok-router.ts index 52cda53d75..87491e0657 100644 --- a/apps/web/src/routers/byok-router.ts +++ b/apps/web/src/routers/byok-router.ts @@ -80,7 +80,7 @@ async function fetchSupportedModels() { result['codestral'] = ['Codestral (mistralai/codestral-2508)']; for (const openRouterModel of Object.values(openRouterModelMetadata.data)) { - const vercelModel = vercelModelMetadata.data[mapModelIdToVercel(openRouterModel.id)]; + const vercelModel = vercelModelMetadata.data[mapModelIdToVercel(openRouterModel.id, false)]; if (!vercelModel) continue; if (vercelModel.id.includes('codestral')) continue; if (vercelModel.type !== 'language') continue;