chore: add more known model prices to ChatModelAdminPanel (#27839)

Depends on https://github.com/coder/coder/pull/27837

Expand `curation.json` to include more known models.
Also marked `knownModelsGenerated.json` as generated.
This commit is contained in:
Cian Johnston
2026-08-04 16:13:06 +01:00
committed by GitHub
parent d23d0d5313
commit b169066773
4 changed files with 789 additions and 46 deletions
+1
View File
@@ -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
+200 -37
View File
@@ -1,41 +1,4 @@
{
"openai": [
{
"modelIdentifier": "gpt-5.6-sol",
"aliases": ["gpt-5.6"],
"reasoningEffort": "medium"
},
{
"modelIdentifier": "gpt-5.6-terra",
"reasoningEffort": "medium"
},
{
"modelIdentifier": "gpt-5.6-luna",
"reasoningEffort": "medium"
},
{
"modelIdentifier": "gpt-5.5",
"reasoningEffort": "medium"
},
{
"modelIdentifier": "gpt-5.5-pro",
"reasoningEffort": "high"
},
{
"modelIdentifier": "gpt-5.4"
},
{
"modelIdentifier": "gpt-5.4-mini",
"reasoningEffort": "medium"
},
{
"modelIdentifier": "gpt-5.4-nano"
},
{
"modelIdentifier": "gpt-5.3-codex",
"reasoningEffort": "medium"
}
],
"anthropic": [
{
"modelIdentifier": "claude-fable-5",
@@ -77,5 +40,205 @@
"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",
"aliases": ["gpt-5.6"],
"reasoningEffort": "medium"
},
{
"modelIdentifier": "gpt-5.6-terra",
"reasoningEffort": "medium"
},
{
"modelIdentifier": "gpt-5.6-luna",
"reasoningEffort": "medium"
},
{
"modelIdentifier": "gpt-5.5",
"reasoningEffort": "medium"
},
{
"modelIdentifier": "gpt-5.5-pro",
"reasoningEffort": "high"
},
{
"modelIdentifier": "gpt-5.4"
},
{
"modelIdentifier": "gpt-5.4-mini",
"reasoningEffort": "medium"
},
{
"modelIdentifier": "gpt-5.4-nano"
},
{
"modelIdentifier": "gpt-5.3-codex",
"reasoningEffort": "medium"
}
],
"openrouter": [
{
"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": "z-ai/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"
},
{
"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"
}
]
}
@@ -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", () => {
@@ -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
}
]
}