diff --git a/.gitattributes b/.gitattributes index b058eeeabac14..58a1bceb877b8 100644 --- a/.gitattributes +++ b/.gitattributes @@ -39,3 +39,4 @@ site/src/api/typesGenerated.ts linguist-generated=true # AI Gateway prices coderd/aibridge/prices/data/prices.json linguist-generated=true +site/src/pages/AgentsPage/components/ChatModelAdminPanel/knownModels/knownModelsGenerated.json linguist-generated=true diff --git a/scripts/aibridgepricesgen/curation.json b/scripts/aibridgepricesgen/curation.json index b528c8d0d3326..be22f21e86a3a 100644 --- a/scripts/aibridgepricesgen/curation.json +++ b/scripts/aibridgepricesgen/curation.json @@ -1,4 +1,115 @@ { + "anthropic": [ + { + "modelIdentifier": "claude-fable-5", + "reasoningEffort": "high" + }, + { + "modelIdentifier": "claude-mythos-5", + "reasoningEffort": "high" + }, + { + "modelIdentifier": "claude-opus-4-8", + "reasoningEffort": "high" + }, + { + "modelIdentifier": "claude-opus-4-7", + "reasoningEffort": "high" + }, + { + "modelIdentifier": "claude-opus-4-6", + "reasoningEffort": "high" + }, + { + "modelIdentifier": "claude-sonnet-5", + "reasoningEffort": "high" + }, + { + "modelIdentifier": "claude-sonnet-4-6", + "reasoningEffort": "medium" + }, + { + "modelIdentifier": "claude-haiku-4-5", + "aliases": ["claude-haiku-4-5-20251001"], + "displayName": "Claude Haiku 4.5", + "thinkingBudgetTokens": 8192 + }, + { + "modelIdentifier": "claude-sonnet-4-5", + "aliases": ["claude-sonnet-4-5-20250929"], + "displayName": "Claude Sonnet 4.5", + "thinkingBudgetTokens": 8192 + } + ], + "azure": [ + { + "modelIdentifier": "claude-fable-5" + }, + { + "modelIdentifier": "claude-opus-5" + }, + { + "modelIdentifier": "claude-sonnet-5" + }, + { + "modelIdentifier": "claude-opus-4-8" + }, + { + "modelIdentifier": "claude-sonnet-4-6" + }, + { + "modelIdentifier": "claude-haiku-4-5" + }, + { + "modelIdentifier": "gpt-5.6-sol" + }, + { + "modelIdentifier": "gpt-5.6-terra" + }, + { + "modelIdentifier": "gpt-5.6-luna" + }, + { + "modelIdentifier": "gpt-5.5" + }, + { + "modelIdentifier": "deepseek-v4-flash" + } + ], + "bedrock": [ + { + "modelIdentifier": "anthropic.claude-haiku-4-5-20251001-v1:0", + "aliases": ["global.anthropic.claude-haiku-4-5-20251001-v1:0"] + }, + { + "modelIdentifier": "anthropic.claude-sonnet-5", + "aliases": ["global.anthropic.claude-sonnet-5"] + }, + { + "modelIdentifier": "anthropic.claude-opus-5", + "aliases": ["global.anthropic.claude-opus-5"] + }, + { + "modelIdentifier": "anthropic.claude-fable-5", + "aliases": ["global.anthropic.claude-fable-5"] + }, + { + "modelIdentifier": "anthropic.claude-sonnet-4-6", + "aliases": ["global.anthropic.claude-sonnet-4-6"] + }, + { + "modelIdentifier": "anthropic.claude-opus-4-8", + "aliases": ["global.anthropic.claude-opus-4-8"] + } + ], + "google": [ + { + "modelIdentifier": "gemini-flash-latest" + }, + { + "modelIdentifier": "gemini-3.6-flash" + } + ], "openai": [ { "modelIdentifier": "gpt-5.6-sol", @@ -36,46 +147,98 @@ "reasoningEffort": "medium" } ], - "anthropic": [ + "openrouter": [ { - "modelIdentifier": "claude-fable-5", - "reasoningEffort": "high" + "modelIdentifier": "openai/gpt-5.6-sol" }, { - "modelIdentifier": "claude-mythos-5", - "reasoningEffort": "high" + "modelIdentifier": "openai/gpt-5.6-terra" }, { - "modelIdentifier": "claude-opus-4-8", - "reasoningEffort": "high" + "modelIdentifier": "openai/gpt-5.6-luna" }, { - "modelIdentifier": "claude-opus-4-7", - "reasoningEffort": "high" + "modelIdentifier": "openai/gpt-oss-120b" }, { - "modelIdentifier": "claude-opus-4-6", - "reasoningEffort": "high" + "modelIdentifier": "moonshotai/kimi-k3" }, { - "modelIdentifier": "claude-sonnet-5", - "reasoningEffort": "high" + "modelIdentifier": "z-ai/glm-5.2" }, { - "modelIdentifier": "claude-sonnet-4-6", - "reasoningEffort": "medium" + "modelIdentifier": "anthropic/claude-fable-5" }, { - "modelIdentifier": "claude-haiku-4-5", - "aliases": ["claude-haiku-4-5-20251001"], - "displayName": "Claude Haiku 4.5", - "thinkingBudgetTokens": 8192 + "modelIdentifier": "anthropic/claude-opus-5" }, { - "modelIdentifier": "claude-sonnet-4-5", - "aliases": ["claude-sonnet-4-5-20250929"], - "displayName": "Claude Sonnet 4.5", - "thinkingBudgetTokens": 8192 + "modelIdentifier": "anthropic/claude-sonnet-5" + }, + { + "modelIdentifier": "anthropic/claude-opus-4.8" + }, + { + "modelIdentifier": "anthropic/claude-sonnet-4.6" + }, + { + "modelIdentifier": "anthropic/claude-haiku-4.5" + }, + { + "modelIdentifier": "deepseek/deepseek-v4-flash" + }, + { + "modelIdentifier": "deepseek/deepseek-v4-pro" + }, + { + "modelIdentifier": "qwen/qwen3.8-max" + }, + { + "modelIdentifier": "qwen/qwen3-coder-next" + } + ], + "vercel": [ + { + "modelIdentifier": "openai/gpt-5.6-sol" + }, + { + "modelIdentifier": "openai/gpt-5.6-terra" + }, + { + "modelIdentifier": "openai/gpt-5.6-luna" + }, + { + "modelIdentifier": "openai/gpt-oss-120b" + }, + { + "modelIdentifier": "moonshotai/kimi-k3" + }, + { + "modelIdentifier": "zai/glm-5.2" + }, + { + "modelIdentifier": "anthropic/claude-fable-5" + }, + { + "modelIdentifier": "anthropic/claude-opus-5" + }, + { + "modelIdentifier": "anthropic/claude-sonnet-5" + }, + { + "modelIdentifier": "anthropic/claude-opus-4.8" + }, + { + "modelIdentifier": "anthropic/claude-sonnet-4.6" + }, + { + "modelIdentifier": "anthropic/claude-haiku-4.5" + }, + { + "modelIdentifier": "deepseek/deepseek-v4-flash" + }, + { + "modelIdentifier": "deepseek/deepseek-v4-pro" } ] } diff --git a/site/src/pages/AgentsPage/components/ChatModelAdminPanel/knownModels/index.test.ts b/site/src/pages/AgentsPage/components/ChatModelAdminPanel/knownModels/index.test.ts index 53c9fa3a3b9ef..80a7ecc47a81a 100644 --- a/site/src/pages/AgentsPage/components/ChatModelAdminPanel/knownModels/index.test.ts +++ b/site/src/pages/AgentsPage/components/ChatModelAdminPanel/knownModels/index.test.ts @@ -50,7 +50,7 @@ describe("formatContextBadge", () => { describe("getKnownModelsForProvider", () => { it("returns unsupported provider as an empty list", () => { - expect(getKnownModelsForProvider("azure")).toEqual([]); + expect(getKnownModelsForProvider("openai-compat")).toEqual([]); }); it("returns empty provider as an empty list", () => { diff --git a/site/src/pages/AgentsPage/components/ChatModelAdminPanel/knownModels/knownModelsGenerated.json b/site/src/pages/AgentsPage/components/ChatModelAdminPanel/knownModels/knownModelsGenerated.json index bfcb8c0a23aff..5ae75467a2813 100644 --- a/site/src/pages/AgentsPage/components/ChatModelAdminPanel/knownModels/knownModelsGenerated.json +++ b/site/src/pages/AgentsPage/components/ChatModelAdminPanel/knownModels/knownModelsGenerated.json @@ -118,6 +118,234 @@ "cacheWriteCost": 3.75 } ], + "azure": [ + { + "provider": "azure", + "modelIdentifier": "claude-fable-5", + "displayName": "Claude Fable 5", + "aliases": [], + "contextLimit": 1000000, + "maxOutputTokens": 128000, + "inputCost": 10, + "outputCost": 50, + "cacheReadCost": 1, + "cacheWriteCost": 12.5 + }, + { + "provider": "azure", + "modelIdentifier": "claude-opus-5", + "displayName": "Claude Opus 5", + "aliases": [], + "contextLimit": 1000000, + "maxOutputTokens": 128000, + "inputCost": 5, + "outputCost": 25, + "cacheReadCost": 0.5, + "cacheWriteCost": 6.25 + }, + { + "provider": "azure", + "modelIdentifier": "claude-sonnet-5", + "displayName": "Claude Sonnet 5", + "aliases": [], + "contextLimit": 1000000, + "maxOutputTokens": 128000, + "inputCost": 2, + "outputCost": 10, + "cacheReadCost": 0.2, + "cacheWriteCost": 2.5 + }, + { + "provider": "azure", + "modelIdentifier": "claude-opus-4-8", + "displayName": "Claude Opus 4.8", + "aliases": [], + "contextLimit": 1000000, + "maxOutputTokens": 128000, + "inputCost": 5, + "outputCost": 25, + "cacheReadCost": 0.5, + "cacheWriteCost": 6.25 + }, + { + "provider": "azure", + "modelIdentifier": "claude-sonnet-4-6", + "displayName": "Claude Sonnet 4.6", + "aliases": [], + "contextLimit": 1000000, + "maxOutputTokens": 64000, + "inputCost": 3, + "outputCost": 15, + "cacheReadCost": 0.3, + "cacheWriteCost": 3.75 + }, + { + "provider": "azure", + "modelIdentifier": "claude-haiku-4-5", + "displayName": "Claude Haiku 4.5", + "aliases": [], + "contextLimit": 200000, + "maxOutputTokens": 64000, + "inputCost": 1, + "outputCost": 5, + "cacheReadCost": 0.1, + "cacheWriteCost": 1.25 + }, + { + "provider": "azure", + "modelIdentifier": "gpt-5.6-sol", + "displayName": "GPT-5.6 Sol", + "aliases": [], + "contextLimit": 1050000, + "maxOutputTokens": 128000, + "inputCost": 5, + "outputCost": 30, + "cacheReadCost": 0.5 + }, + { + "provider": "azure", + "modelIdentifier": "gpt-5.6-terra", + "displayName": "GPT-5.6 Terra", + "aliases": [], + "contextLimit": 1050000, + "maxOutputTokens": 128000, + "inputCost": 2.5, + "outputCost": 15, + "cacheReadCost": 0.25, + "cacheWriteCost": 3.125 + }, + { + "provider": "azure", + "modelIdentifier": "gpt-5.6-luna", + "displayName": "GPT-5.6 Luna", + "aliases": [], + "contextLimit": 1050000, + "maxOutputTokens": 128000, + "inputCost": 1, + "outputCost": 6, + "cacheReadCost": 0.1, + "cacheWriteCost": 1.25 + }, + { + "provider": "azure", + "modelIdentifier": "gpt-5.5", + "displayName": "GPT-5.5", + "aliases": [], + "contextLimit": 1050000, + "maxOutputTokens": 128000, + "inputCost": 5, + "outputCost": 30, + "cacheReadCost": 0.5 + }, + { + "provider": "azure", + "modelIdentifier": "deepseek-v4-flash", + "displayName": "DeepSeek-V4-Flash", + "aliases": [], + "contextLimit": 1000000, + "maxOutputTokens": 384000, + "inputCost": 0.19, + "outputCost": 0.51 + } + ], + "bedrock": [ + { + "provider": "bedrock", + "modelIdentifier": "anthropic.claude-haiku-4-5-20251001-v1:0", + "displayName": "Claude Haiku 4.5", + "aliases": ["global.anthropic.claude-haiku-4-5-20251001-v1:0"], + "contextLimit": 200000, + "maxOutputTokens": 64000, + "inputCost": 1, + "outputCost": 5, + "cacheReadCost": 0.1, + "cacheWriteCost": 1.25 + }, + { + "provider": "bedrock", + "modelIdentifier": "anthropic.claude-sonnet-5", + "displayName": "Claude Sonnet 5", + "aliases": ["global.anthropic.claude-sonnet-5"], + "contextLimit": 1000000, + "maxOutputTokens": 128000, + "inputCost": 2, + "outputCost": 10, + "cacheReadCost": 0.2, + "cacheWriteCost": 2.5 + }, + { + "provider": "bedrock", + "modelIdentifier": "anthropic.claude-opus-5", + "displayName": "Claude Opus 5", + "aliases": ["global.anthropic.claude-opus-5"], + "contextLimit": 1000000, + "maxOutputTokens": 128000, + "inputCost": 5, + "outputCost": 25, + "cacheReadCost": 0.5, + "cacheWriteCost": 6.25 + }, + { + "provider": "bedrock", + "modelIdentifier": "anthropic.claude-fable-5", + "displayName": "Claude Fable 5", + "aliases": ["global.anthropic.claude-fable-5"], + "contextLimit": 1000000, + "maxOutputTokens": 128000, + "inputCost": 10, + "outputCost": 50, + "cacheReadCost": 1, + "cacheWriteCost": 12.5 + }, + { + "provider": "bedrock", + "modelIdentifier": "anthropic.claude-sonnet-4-6", + "displayName": "Claude Sonnet 4.6", + "aliases": ["global.anthropic.claude-sonnet-4-6"], + "contextLimit": 1000000, + "maxOutputTokens": 64000, + "inputCost": 3, + "outputCost": 15, + "cacheReadCost": 0.3, + "cacheWriteCost": 3.75 + }, + { + "provider": "bedrock", + "modelIdentifier": "anthropic.claude-opus-4-8", + "displayName": "Claude Opus 4.8", + "aliases": ["global.anthropic.claude-opus-4-8"], + "contextLimit": 1000000, + "maxOutputTokens": 128000, + "inputCost": 5, + "outputCost": 25, + "cacheReadCost": 0.5, + "cacheWriteCost": 6.25 + } + ], + "google": [ + { + "provider": "google", + "modelIdentifier": "gemini-flash-latest", + "displayName": "Gemini Flash Latest", + "aliases": [], + "contextLimit": 1048576, + "maxOutputTokens": 65536, + "inputCost": 1.5, + "outputCost": 9, + "cacheReadCost": 0.15 + }, + { + "provider": "google", + "modelIdentifier": "gemini-3.6-flash", + "displayName": "Gemini 3.6 Flash", + "aliases": [], + "contextLimit": 1048576, + "maxOutputTokens": 65536, + "inputCost": 1.5, + "outputCost": 7.5, + "cacheReadCost": 0.15 + } + ], "openai": [ { "provider": "openai", @@ -140,10 +368,10 @@ "contextLimit": 1050000, "maxOutputTokens": 128000, "reasoningEffort": "medium", - "inputCost": 2.5, - "outputCost": 15, - "cacheReadCost": 0.25, - "cacheWriteCost": 3.125 + "inputCost": 2, + "outputCost": 12, + "cacheReadCost": 0.2, + "cacheWriteCost": 2.5 }, { "provider": "openai", @@ -153,10 +381,10 @@ "contextLimit": 1050000, "maxOutputTokens": 128000, "reasoningEffort": "medium", - "inputCost": 1, - "outputCost": 6, - "cacheReadCost": 0.1, - "cacheWriteCost": 1.25 + "inputCost": 0.2, + "outputCost": 1.2, + "cacheReadCost": 0.02, + "cacheWriteCost": 0.25 }, { "provider": "openai", @@ -227,5 +455,356 @@ "outputCost": 14, "cacheReadCost": 0.175 } + ], + "openrouter": [ + { + "provider": "openrouter", + "modelIdentifier": "openai/gpt-5.6-sol", + "displayName": "GPT-5.6 Sol", + "aliases": [], + "contextLimit": 1050000, + "maxOutputTokens": 128000, + "inputCost": 5, + "outputCost": 30, + "cacheReadCost": 0.5, + "cacheWriteCost": 6.25 + }, + { + "provider": "openrouter", + "modelIdentifier": "openai/gpt-5.6-terra", + "displayName": "GPT-5.6 Terra", + "aliases": [], + "contextLimit": 1050000, + "maxOutputTokens": 128000, + "inputCost": 1, + "outputCost": 6, + "cacheReadCost": 0.1, + "cacheWriteCost": 1.25 + }, + { + "provider": "openrouter", + "modelIdentifier": "openai/gpt-5.6-luna", + "displayName": "GPT-5.6 Luna", + "aliases": [], + "contextLimit": 1050000, + "maxOutputTokens": 128000, + "inputCost": 0.1, + "outputCost": 0.6, + "cacheReadCost": 0.01, + "cacheWriteCost": 0.125 + }, + { + "provider": "openrouter", + "modelIdentifier": "openai/gpt-oss-120b", + "displayName": "GPT OSS 120B", + "aliases": [], + "contextLimit": 131072, + "maxOutputTokens": 131072, + "inputCost": 0.037, + "outputCost": 0.17 + }, + { + "provider": "openrouter", + "modelIdentifier": "moonshotai/kimi-k3", + "displayName": "Kimi K3", + "aliases": [], + "contextLimit": 1048576, + "maxOutputTokens": 1048576, + "inputCost": 3, + "outputCost": 15, + "cacheReadCost": 0.3 + }, + { + "provider": "openrouter", + "modelIdentifier": "z-ai/glm-5.2", + "displayName": "GLM-5.2", + "aliases": [], + "contextLimit": 1048576, + "maxOutputTokens": 262144, + "inputCost": 0.76, + "outputCost": 2.42, + "cacheReadCost": 0.14 + }, + { + "provider": "openrouter", + "modelIdentifier": "anthropic/claude-fable-5", + "displayName": "Claude Fable 5", + "aliases": [], + "contextLimit": 1000000, + "maxOutputTokens": 128000, + "inputCost": 10, + "outputCost": 50, + "cacheReadCost": 1, + "cacheWriteCost": 12.5 + }, + { + "provider": "openrouter", + "modelIdentifier": "anthropic/claude-opus-5", + "displayName": "Claude Opus 5", + "aliases": [], + "contextLimit": 1000000, + "maxOutputTokens": 128000, + "inputCost": 5, + "outputCost": 25, + "cacheReadCost": 0.5, + "cacheWriteCost": 6.25 + }, + { + "provider": "openrouter", + "modelIdentifier": "anthropic/claude-sonnet-5", + "displayName": "Claude Sonnet 5", + "aliases": [], + "contextLimit": 1000000, + "maxOutputTokens": 128000, + "inputCost": 2, + "outputCost": 10, + "cacheReadCost": 0.2, + "cacheWriteCost": 2.5 + }, + { + "provider": "openrouter", + "modelIdentifier": "anthropic/claude-opus-4.8", + "displayName": "Claude Opus 4.8", + "aliases": [], + "contextLimit": 1000000, + "maxOutputTokens": 128000, + "inputCost": 5, + "outputCost": 25, + "cacheReadCost": 0.5, + "cacheWriteCost": 6.25 + }, + { + "provider": "openrouter", + "modelIdentifier": "anthropic/claude-sonnet-4.6", + "displayName": "Claude Sonnet 4.6", + "aliases": [], + "contextLimit": 1000000, + "maxOutputTokens": 128000, + "inputCost": 3, + "outputCost": 15, + "cacheReadCost": 0.3, + "cacheWriteCost": 3.75 + }, + { + "provider": "openrouter", + "modelIdentifier": "anthropic/claude-haiku-4.5", + "displayName": "Claude Haiku 4.5 (latest)", + "aliases": [], + "contextLimit": 200000, + "maxOutputTokens": 64000, + "inputCost": 1, + "outputCost": 5, + "cacheReadCost": 0.1, + "cacheWriteCost": 1.25 + }, + { + "provider": "openrouter", + "modelIdentifier": "deepseek/deepseek-v4-flash", + "displayName": "DeepSeek V4 Flash", + "aliases": [], + "contextLimit": 1048576, + "maxOutputTokens": 393216, + "inputCost": 0.14, + "outputCost": 0.28, + "cacheReadCost": 0.028 + }, + { + "provider": "openrouter", + "modelIdentifier": "deepseek/deepseek-v4-pro", + "displayName": "DeepSeek V4 Pro", + "aliases": [], + "contextLimit": 1048576, + "maxOutputTokens": 384000, + "inputCost": 0.435, + "outputCost": 0.87, + "cacheReadCost": 0.003625 + }, + { + "provider": "openrouter", + "modelIdentifier": "qwen/qwen3.8-max", + "displayName": "Qwen3.8 Max", + "aliases": [], + "contextLimit": 1000000, + "maxOutputTokens": 131072, + "inputCost": 2, + "outputCost": 6, + "cacheReadCost": 0.25, + "cacheWriteCost": 2.5 + }, + { + "provider": "openrouter", + "modelIdentifier": "qwen/qwen3-coder-next", + "displayName": "Qwen3 Coder Next", + "aliases": [], + "contextLimit": 262144, + "maxOutputTokens": 262144, + "inputCost": 0.12, + "outputCost": 0.8, + "cacheReadCost": 0.07 + } + ], + "vercel": [ + { + "provider": "vercel", + "modelIdentifier": "openai/gpt-5.6-sol", + "displayName": "GPT 5.6 Sol", + "aliases": [], + "contextLimit": 1050000, + "maxOutputTokens": 128000, + "inputCost": 5, + "outputCost": 30, + "cacheReadCost": 0.5, + "cacheWriteCost": 6.25 + }, + { + "provider": "vercel", + "modelIdentifier": "openai/gpt-5.6-terra", + "displayName": "GPT 5.6 Terra", + "aliases": [], + "contextLimit": 1050000, + "maxOutputTokens": 128000, + "inputCost": 2, + "outputCost": 12, + "cacheReadCost": 0.2, + "cacheWriteCost": 2.5 + }, + { + "provider": "vercel", + "modelIdentifier": "openai/gpt-5.6-luna", + "displayName": "GPT 5.6 Luna", + "aliases": [], + "contextLimit": 1050000, + "maxOutputTokens": 128000, + "inputCost": 0.2, + "outputCost": 1.2, + "cacheReadCost": 0.02, + "cacheWriteCost": 0.25 + }, + { + "provider": "vercel", + "modelIdentifier": "openai/gpt-oss-120b", + "displayName": "GPT OSS 120B", + "aliases": [], + "contextLimit": 131072, + "maxOutputTokens": 131072, + "inputCost": 0.1, + "outputCost": 0.5 + }, + { + "provider": "vercel", + "modelIdentifier": "moonshotai/kimi-k3", + "displayName": "Kimi K3", + "aliases": [], + "contextLimit": 1000000, + "maxOutputTokens": 131072, + "inputCost": 3, + "outputCost": 15, + "cacheReadCost": 0.3 + }, + { + "provider": "vercel", + "modelIdentifier": "zai/glm-5.2", + "displayName": "GLM 5.2", + "aliases": [], + "contextLimit": 1000000, + "maxOutputTokens": 128000, + "inputCost": 1.1, + "outputCost": 3.851, + "cacheReadCost": 0.275 + }, + { + "provider": "vercel", + "modelIdentifier": "anthropic/claude-fable-5", + "displayName": "Claude Fable 5", + "aliases": [], + "contextLimit": 1000000, + "maxOutputTokens": 128000, + "inputCost": 10, + "outputCost": 50, + "cacheReadCost": 1, + "cacheWriteCost": 12.5 + }, + { + "provider": "vercel", + "modelIdentifier": "anthropic/claude-opus-5", + "displayName": "Claude Opus 5", + "aliases": [], + "contextLimit": 1000000, + "maxOutputTokens": 128000, + "inputCost": 5, + "outputCost": 25, + "cacheReadCost": 0.5, + "cacheWriteCost": 6.25 + }, + { + "provider": "vercel", + "modelIdentifier": "anthropic/claude-sonnet-5", + "displayName": "Claude Sonnet 5", + "aliases": [], + "contextLimit": 1000000, + "maxOutputTokens": 128000, + "inputCost": 2, + "outputCost": 10, + "cacheReadCost": 0.2, + "cacheWriteCost": 2.5 + }, + { + "provider": "vercel", + "modelIdentifier": "anthropic/claude-opus-4.8", + "displayName": "Claude Opus 4.8", + "aliases": [], + "contextLimit": 1000000, + "maxOutputTokens": 128000, + "inputCost": 5, + "outputCost": 25, + "cacheReadCost": 0.5, + "cacheWriteCost": 6.25 + }, + { + "provider": "vercel", + "modelIdentifier": "anthropic/claude-sonnet-4.6", + "displayName": "Claude Sonnet 4.6", + "aliases": [], + "contextLimit": 1000000, + "maxOutputTokens": 128000, + "inputCost": 3, + "outputCost": 15, + "cacheReadCost": 0.3, + "cacheWriteCost": 3.75 + }, + { + "provider": "vercel", + "modelIdentifier": "anthropic/claude-haiku-4.5", + "displayName": "Claude Haiku 4.5", + "aliases": [], + "contextLimit": 200000, + "maxOutputTokens": 64000, + "inputCost": 1, + "outputCost": 5, + "cacheReadCost": 0.1, + "cacheWriteCost": 1.25 + }, + { + "provider": "vercel", + "modelIdentifier": "deepseek/deepseek-v4-flash", + "displayName": "DeepSeek V4 Flash", + "aliases": [], + "contextLimit": 1000000, + "maxOutputTokens": 384000, + "inputCost": 0.2, + "outputCost": 0.4, + "cacheReadCost": 0.04 + }, + { + "provider": "vercel", + "modelIdentifier": "deepseek/deepseek-v4-pro", + "displayName": "DeepSeek V4 Pro", + "aliases": [], + "contextLimit": 1000000, + "maxOutputTokens": 384000, + "inputCost": 0.435, + "outputCost": 0.87, + "cacheReadCost": 0.0036 + } ] }