fix(provider): route gateway variants by api id (#36614)

This commit is contained in:
Aiden Cline
2026-07-13 00:08:08 -05:00
committed by GitHub
parent 8036440693
commit 8168f0f0f6
2 changed files with 40 additions and 4 deletions
+4 -4
View File
@@ -759,7 +759,7 @@ export function variants(model: Provider.Model): Record<string, Record<string, a
} }
case "@ai-sdk/gateway": case "@ai-sdk/gateway":
if (model.id.includes("anthropic")) { if (model.api.id.includes("anthropic")) {
if (adaptiveEfforts) { if (adaptiveEfforts) {
return Object.fromEntries( return Object.fromEntries(
adaptiveEfforts.map((effort) => [ adaptiveEfforts.map((effort) => [
@@ -792,8 +792,8 @@ export function variants(model: Provider.Model): Record<string, Record<string, a
}, },
} }
} }
if (model.id.includes("google")) { if (model.api.id.includes("google")) {
if (id.includes("2.5")) { if (model.api.id.includes("2.5")) {
return { return {
high: { high: {
thinkingConfig: { thinkingConfig: {
@@ -804,7 +804,7 @@ export function variants(model: Provider.Model): Record<string, Record<string, a
max: { max: {
thinkingConfig: { thinkingConfig: {
includeThoughts: true, includeThoughts: true,
thinkingBudget: googleThinkingBudgetMax(id), thinkingBudget: googleThinkingBudgetMax(model.api.id.toLowerCase()),
}, },
}, },
} }
@@ -3372,6 +3372,42 @@ describe("ProviderTransform.variants", () => {
}) })
describe("@ai-sdk/gateway", () => { describe("@ai-sdk/gateway", () => {
test("configured anthropic aliases route by the API ID", () => {
const model = createMockModel({
id: "my-claude",
providerID: "gateway",
api: {
id: "anthropic/claude-sonnet-4-6",
url: "https://gateway.ai",
npm: "@ai-sdk/gateway",
},
})
const result = ProviderTransform.variants(model)
expect(Object.keys(result)).toEqual(["low", "medium", "high", "max"])
expect(result.high).toEqual({
thinking: {
type: "adaptive",
},
effort: "high",
})
})
test("configured google aliases route by the API ID", () => {
const model = createMockModel({
id: "my-gemini",
providerID: "gateway",
api: {
id: "google/gemini-2.5-pro",
url: "https://gateway.ai",
npm: "@ai-sdk/gateway",
},
})
expect(ProviderTransform.variants(model)).toEqual({
high: { thinkingConfig: { includeThoughts: true, thinkingBudget: 16_000 } },
max: { thinkingConfig: { includeThoughts: true, thinkingBudget: 32_768 } },
})
})
test("anthropic sonnet 4.6 models return adaptive thinking options", () => { test("anthropic sonnet 4.6 models return adaptive thinking options", () => {
const model = createMockModel({ const model = createMockModel({
id: "anthropic/claude-sonnet-4-6", id: "anthropic/claude-sonnet-4-6",