diff --git a/packages/types/src/__tests__/provider-settings.test.ts b/packages/types/src/__tests__/provider-settings.test.ts index 8277320289..93a74f3c42 100644 --- a/packages/types/src/__tests__/provider-settings.test.ts +++ b/packages/types/src/__tests__/provider-settings.test.ts @@ -39,6 +39,26 @@ describe("getApiProtocol", () => { }) }) + describe("Vercel AI Gateway provider", () => { + it("should return 'anthropic' for vercel-ai-gateway provider with anthropic models", () => { + expect(getApiProtocol("vercel-ai-gateway", "anthropic/claude-3-opus")).toBe("anthropic") + expect(getApiProtocol("vercel-ai-gateway", "anthropic/claude-3.5-sonnet")).toBe("anthropic") + expect(getApiProtocol("vercel-ai-gateway", "ANTHROPIC/claude-sonnet-4")).toBe("anthropic") + expect(getApiProtocol("vercel-ai-gateway", "anthropic/claude-opus-4.1")).toBe("anthropic") + }) + + it("should return 'openai' for vercel-ai-gateway provider with non-anthropic models", () => { + expect(getApiProtocol("vercel-ai-gateway", "openai/gpt-4")).toBe("openai") + expect(getApiProtocol("vercel-ai-gateway", "google/gemini-pro")).toBe("openai") + expect(getApiProtocol("vercel-ai-gateway", "meta/llama-3")).toBe("openai") + expect(getApiProtocol("vercel-ai-gateway", "mistral/mixtral")).toBe("openai") + }) + + it("should return 'openai' for vercel-ai-gateway provider without model", () => { + expect(getApiProtocol("vercel-ai-gateway")).toBe("openai") + }) + }) + describe("Other providers", () => { it("should return 'openai' for non-anthropic providers regardless of model", () => { expect(getApiProtocol("openrouter", "claude-3-opus")).toBe("openai") diff --git a/packages/types/src/provider-settings.ts b/packages/types/src/provider-settings.ts index 8941e4cdd8..eb404f7129 100644 --- a/packages/types/src/provider-settings.ts +++ b/packages/types/src/provider-settings.ts @@ -453,6 +453,11 @@ export const getApiProtocol = (provider: ProviderName | undefined, modelId?: str return "anthropic" } + // Vercel AI Gateway uses anthropic protocol for anthropic models + if (provider && provider === "vercel-ai-gateway" && modelId && modelId.toLowerCase().startsWith("anthropic/")) { + return "anthropic" + } + return "openai" }