fix(ai): regenerate model catalog

Includes updated Xiaomi MiMo pricing from models.dev. Closes #6138
This commit is contained in:
Vegard Stikbakke
2026-06-30 08:33:18 +02:00
parent 927e98068c
commit 3d6acb37b9
17 changed files with 218 additions and 179 deletions
+1
View File
@@ -12,6 +12,7 @@
### Fixed
- Fixed generated Xiaomi MiMo model pricing to match current pay-as-you-go pricing from models.dev ([#6138](https://github.com/earendil-works/pi/issues/6138)).
- Fixed `streamSimple()` to send a context-aware max-token cap so providers that count input and output against one context window do not reject long requests ([#5595](https://github.com/earendil-works/pi/issues/5595)).
- Fixed OpenAI Responses streams to preserve reasoning replay state when output items finish out of order ([#6009](https://github.com/earendil-works/pi/issues/6009)).
- Fixed retry classification for provider errors that explicitly tell callers to retry the request ([#6019](https://github.com/earendil-works/pi/issues/6019)).
@@ -376,10 +376,10 @@ export const AMAZON_BEDROCK_MODELS = {
reasoning: true,
input: ["text", "image"],
cost: {
input: 1,
output: 5,
cacheRead: 0.1,
cacheWrite: 1.25,
input: 1.1,
output: 5.5,
cacheRead: 0.11,
cacheWrite: 1.375,
},
contextWindow: 200000,
maxTokens: 64000,
@@ -393,10 +393,10 @@ export const AMAZON_BEDROCK_MODELS = {
reasoning: true,
input: ["text", "image"],
cost: {
input: 5,
output: 25,
cacheRead: 0.5,
cacheWrite: 6.25,
input: 5.5,
output: 27.5,
cacheRead: 0.55,
cacheWrite: 6.875,
},
contextWindow: 200000,
maxTokens: 64000,
@@ -1623,6 +1623,23 @@ export const AMAZON_BEDROCK_MODELS = {
contextWindow: 1040000,
maxTokens: 8192,
} satisfies Model<"bedrock-converse-stream">,
"xai.grok-4.3": {
id: "xai.grok-4.3",
name: "Grok 4.3",
api: "bedrock-converse-stream",
provider: "amazon-bedrock",
baseUrl: "https://bedrock-runtime.us-east-1.amazonaws.com",
reasoning: true,
input: ["text", "image"],
cost: {
input: 1.25,
output: 2.5,
cacheRead: 0.2,
cacheWrite: 0,
},
contextWindow: 1000000,
maxTokens: 131072,
} satisfies Model<"bedrock-converse-stream">,
"zai.glm-4.7": {
id: "zai.glm-4.7",
name: "GLM-4.7",
@@ -4,40 +4,6 @@
import type { Model } from "../types.ts";
export const ANTHROPIC_MODELS = {
"claude-3-5-haiku-20241022": {
id: "claude-3-5-haiku-20241022",
name: "Claude Haiku 3.5",
api: "anthropic-messages",
provider: "anthropic",
baseUrl: "https://api.anthropic.com",
reasoning: false,
input: ["text", "image"],
cost: {
input: 0.8,
output: 4,
cacheRead: 0.08,
cacheWrite: 1,
},
contextWindow: 200000,
maxTokens: 8192,
} satisfies Model<"anthropic-messages">,
"claude-3-5-haiku-latest": {
id: "claude-3-5-haiku-latest",
name: "Claude Haiku 3.5 (latest)",
api: "anthropic-messages",
provider: "anthropic",
baseUrl: "https://api.anthropic.com",
reasoning: false,
input: ["text", "image"],
cost: {
input: 0.8,
output: 4,
cacheRead: 0.08,
cacheWrite: 1,
},
contextWindow: 200000,
maxTokens: 8192,
} satisfies Model<"anthropic-messages">,
"claude-3-5-sonnet-20240620": {
id: "claude-3-5-sonnet-20240620",
name: "Claude Sonnet 3.5",
+19 -1
View File
@@ -74,7 +74,7 @@ export const FIREWORKS_MODELS = {
cacheRead: 0.26,
cacheWrite: 0,
},
contextWindow: 1048576,
contextWindow: 1048575,
maxTokens: 131072,
} satisfies Model<"openai-completions">,
"accounts/fireworks/models/gpt-oss-120b": {
@@ -221,6 +221,24 @@ export const FIREWORKS_MODELS = {
contextWindow: 202800,
maxTokens: 131072,
} satisfies Model<"anthropic-messages">,
"accounts/fireworks/routers/glm-5p2-fast": {
id: "accounts/fireworks/routers/glm-5p2-fast",
name: "GLM 5.2 Fast",
api: "anthropic-messages",
provider: "fireworks",
baseUrl: "https://api.fireworks.ai/inference",
compat: {"sendSessionAffinityHeaders":true,"supportsEagerToolInputStreaming":false,"supportsCacheControlOnTools":false,"supportsLongCacheRetention":false},
reasoning: true,
input: ["text"],
cost: {
input: 2.1,
output: 6.6,
cacheRead: 0.21,
cacheWrite: 0,
},
contextWindow: 1048575,
maxTokens: 131072,
} satisfies Model<"anthropic-messages">,
"accounts/fireworks/routers/kimi-k2p6-fast": {
id: "accounts/fireworks/routers/kimi-k2p6-fast",
name: "Kimi K2.6 Fast",
+1 -1
View File
@@ -100,7 +100,7 @@ export const GROQ_MODELS = {
cost: {
input: 0.075,
output: 0.3,
cacheRead: 0.037,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 131072,
@@ -652,6 +652,24 @@ export const HUGGINGFACE_MODELS = {
contextWindow: 262144,
maxTokens: 262144,
} satisfies Model<"openai-completions">,
"openai/gpt-oss-120b": {
id: "openai/gpt-oss-120b",
name: "GPT OSS 120B",
api: "openai-completions",
provider: "huggingface",
baseUrl: "https://router.huggingface.co/v1",
compat: {"supportsDeveloperRole":false},
reasoning: true,
input: ["text"],
cost: {
input: 0.25,
output: 0.69,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 131072,
maxTokens: 32768,
} satisfies Model<"openai-completions">,
"stepfun-ai/Step-3.5-Flash": {
id: "stepfun-ai/Step-3.5-Flash",
name: "Step 3.5 Flash",
@@ -47,12 +47,12 @@ export const MINIMAX_CN_MODELS = {
reasoning: true,
input: ["text", "image"],
cost: {
input: 0.6,
output: 2.4,
cacheRead: 0.12,
input: 0.3,
output: 1.2,
cacheRead: 0.06,
cacheWrite: 0,
},
contextWindow: 512000,
contextWindow: 1000000,
maxTokens: 128000,
} satisfies Model<"anthropic-messages">,
} as const;
+4 -4
View File
@@ -47,12 +47,12 @@ export const MINIMAX_MODELS = {
reasoning: true,
input: ["text", "image"],
cost: {
input: 0.6,
output: 2.4,
cacheRead: 0.12,
input: 0.3,
output: 1.2,
cacheRead: 0.06,
cacheWrite: 0,
},
contextWindow: 512000,
contextWindow: 1000000,
maxTokens: 128000,
} satisfies Model<"anthropic-messages">,
} as const;
@@ -99,6 +99,25 @@ export const NVIDIA_MODELS = {
contextWindow: 128000,
maxTokens: 4096,
} satisfies Model<"openai-completions">,
"minimaxai/minimax-m3": {
id: "minimaxai/minimax-m3",
name: "MiniMax-M3",
api: "openai-completions",
provider: "nvidia",
baseUrl: "https://integrate.api.nvidia.com/v1",
headers: {"NVCF-POLL-SECONDS":"3600"},
compat: {"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","supportsStrictMode":false,"supportsLongCacheRetention":false},
reasoning: true,
input: ["text", "image"],
cost: {
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 1000000,
maxTokens: 16384,
} satisfies Model<"openai-completions">,
"mistralai/mistral-large-3-675b-instruct-2512": {
id: "mistralai/mistral-large-3-675b-instruct-2512",
name: "Mistral Large 3 675B Instruct 2512",
@@ -184,7 +184,7 @@ export const OPENCODE_GO_MODELS = {
cacheRead: 0.02,
cacheWrite: 0,
},
contextWindow: 512000,
contextWindow: 1000000,
maxTokens: 131072,
} satisfies Model<"anthropic-messages">,
"qwen3.6-plus": {
+30 -49
View File
@@ -239,25 +239,6 @@ export const OPENROUTER_MODELS = {
contextWindow: 1000000,
maxTokens: 128000,
} satisfies Model<"openai-completions">,
"anthropic/claude-opus-4.6-fast": {
id: "anthropic/claude-opus-4.6-fast",
name: "Anthropic: Claude Opus 4.6 (Fast)",
api: "openai-completions",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
compat: {"thinkingFormat":"openrouter","cacheControlFormat":"anthropic"},
reasoning: true,
thinkingLevelMap: {"xhigh":"max"},
input: ["text", "image"],
cost: {
input: 30,
output: 150,
cacheRead: 3,
cacheWrite: 37.5,
},
contextWindow: 1000000,
maxTokens: 128000,
} satisfies Model<"openai-completions">,
"anthropic/claude-opus-4.7": {
id: "anthropic/claude-opus-4.7",
name: "Anthropic: Claude Opus 4.7",
@@ -706,7 +687,7 @@ export const OPENROUTER_MODELS = {
cost: {
input: 0.2288,
output: 0.3432,
cacheRead: 0,
cacheRead: 0.02288,
cacheWrite: 0,
},
contextWindow: 131072,
@@ -1409,9 +1390,9 @@ export const OPENROUTER_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 0.15,
output: 0.9,
cacheRead: 0.05,
input: 0.12,
output: 0.48,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 204800,
@@ -1427,8 +1408,8 @@ export const OPENROUTER_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 0.24,
output: 0.96,
input: 0.18,
output: 0.72,
cacheRead: 0,
cacheWrite: 0,
},
@@ -1775,7 +1756,7 @@ export const OPENROUTER_MODELS = {
cacheWrite: 0,
},
contextWindow: 131072,
maxTokens: 32768,
maxTokens: 100352,
} satisfies Model<"openai-completions">,
"moonshotai/kimi-k2-0905": {
id: "moonshotai/kimi-k2-0905",
@@ -1793,7 +1774,7 @@ export const OPENROUTER_MODELS = {
cacheWrite: 0,
},
contextWindow: 262144,
maxTokens: 262144,
maxTokens: 100352,
} satisfies Model<"openai-completions">,
"moonshotai/kimi-k2-thinking": {
id: "moonshotai/kimi-k2-thinking",
@@ -1841,9 +1822,9 @@ export const OPENROUTER_MODELS = {
reasoning: true,
input: ["text", "image"],
cost: {
input: 0.66,
output: 3.41,
cacheRead: 0.144,
input: 0.55,
output: 3.2,
cacheRead: 0.11,
cacheWrite: 0,
},
contextWindow: 262144,
@@ -1949,13 +1930,13 @@ export const OPENROUTER_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 0.09,
output: 0.45,
input: 0.085,
output: 0.4,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 1000000,
maxTokens: 4096,
maxTokens: 16384,
} satisfies Model<"openai-completions">,
"nvidia/nemotron-3-super-120b-a12b:free": {
id: "nvidia/nemotron-3-super-120b-a12b:free",
@@ -2789,13 +2770,13 @@ export const OPENROUTER_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 0.039,
output: 0.18,
input: 0.03,
output: 0.15,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 131072,
maxTokens: 4096,
maxTokens: 131072,
} satisfies Model<"openai-completions">,
"openai/gpt-oss-120b:free": {
id: "openai/gpt-oss-120b:free",
@@ -3905,8 +3886,8 @@ export const OPENROUTER_MODELS = {
reasoning: true,
input: ["text", "image"],
cost: {
input: 0.2885,
output: 3.17,
input: 0.2596,
output: 2.385,
cacheRead: 0,
cacheWrite: 0,
},
@@ -4103,13 +4084,13 @@ export const OPENROUTER_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 0.09,
input: 0.1,
output: 0.3,
cacheRead: 0.02,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 262144,
maxTokens: 16384,
maxTokens: 65536,
} satisfies Model<"openai-completions">,
"stepfun/step-3.7-flash": {
id: "stepfun/step-3.7-flash",
@@ -4445,9 +4426,9 @@ export const OPENROUTER_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 0.98,
output: 3.08,
cacheRead: 0.182,
input: 0.975,
output: 4.3,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 202752,
@@ -4464,13 +4445,13 @@ export const OPENROUTER_MODELS = {
thinkingLevelMap: {"xhigh":"xhigh"},
input: ["text"],
cost: {
input: 0.95,
input: 0.94,
output: 3,
cacheRead: 0.18,
cacheWrite: 0,
},
contextWindow: 1048576,
maxTokens: 32768,
maxTokens: 4096,
} satisfies Model<"openai-completions">,
"z-ai/glm-5v-turbo": {
id: "z-ai/glm-5v-turbo",
@@ -4608,9 +4589,9 @@ export const OPENROUTER_MODELS = {
reasoning: true,
input: ["text", "image"],
cost: {
input: 0.66,
output: 3.41,
cacheRead: 0.144,
input: 0.55,
output: 3.2,
cacheRead: 0.11,
cacheWrite: 0,
},
contextWindow: 262144,
@@ -360,4 +360,23 @@ export const TOGETHER_MODELS = {
contextWindow: 202752,
maxTokens: 131072,
} satisfies Model<"openai-completions">,
"zai-org/GLM-5.2": {
id: "zai-org/GLM-5.2",
name: "GLM-5.2",
api: "openai-completions",
provider: "together",
baseUrl: "https://api.together.ai/v1",
compat: {"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","thinkingFormat":"together","supportsStrictMode":false,"supportsLongCacheRetention":false},
reasoning: true,
thinkingLevelMap: {"minimal":null,"low":null,"medium":null},
input: ["text"],
cost: {
input: 1.4,
output: 4.4,
cacheRead: 0.26,
cacheWrite: 0,
},
contextWindow: 262144,
maxTokens: 164000,
} satisfies Model<"openai-completions">,
} as const;
@@ -836,13 +836,13 @@ export const VERCEL_AI_GATEWAY_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 0.56,
output: 1.68,
cacheRead: 0.28,
input: 0.6,
output: 1.7,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 163840,
maxTokens: 8192,
contextWindow: 128000,
maxTokens: 128000,
} satisfies Model<"anthropic-messages">,
"deepseek/deepseek-v3.1-terminus": {
id: "deepseek/deepseek-v3.1-terminus",
@@ -1788,13 +1788,13 @@ export const VERCEL_AI_GATEWAY_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 0.6,
output: 2.5,
cacheRead: 0.15,
input: 0.47,
output: 2,
cacheRead: 0.141,
cacheWrite: 0,
},
contextWindow: 262114,
maxTokens: 262114,
contextWindow: 216144,
maxTokens: 216144,
} satisfies Model<"anthropic-messages">,
"moonshotai/kimi-k2.5": {
id: "moonshotai/kimi-k2.5",
@@ -2480,13 +2480,13 @@ export const VERCEL_AI_GATEWAY_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 0.35,
output: 0.75,
cacheRead: 0.25,
input: 0.1,
output: 0.5,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 131072,
maxTokens: 131000,
maxTokens: 131072,
} satisfies Model<"anthropic-messages">,
"openai/gpt-oss-20b": {
id: "openai/gpt-oss-20b",
@@ -2915,7 +2915,7 @@ export const VERCEL_AI_GATEWAY_MODELS = {
} satisfies Model<"anthropic-messages">,
"zai/glm-4.5": {
id: "zai/glm-4.5",
name: "GLM-4.5",
name: "GLM 4.5",
api: "anthropic-messages",
provider: "vercel-ai-gateway",
baseUrl: "https://ai-gateway.vercel.sh",
@@ -3024,13 +3024,13 @@ export const VERCEL_AI_GATEWAY_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 2.25,
output: 2.75,
cacheRead: 2.25,
input: 0.6,
output: 2.2,
cacheRead: 0.12,
cacheWrite: 0,
},
contextWindow: 131000,
maxTokens: 40000,
contextWindow: 200000,
maxTokens: 120000,
} satisfies Model<"anthropic-messages">,
"zai/glm-4.7-flash": {
id: "zai/glm-4.7-flash",
@@ -3075,8 +3075,8 @@ export const VERCEL_AI_GATEWAY_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 1,
output: 3.2,
input: 0.95,
output: 3.15,
cacheRead: 0.2,
cacheWrite: 0,
},
@@ -3109,13 +3109,13 @@ export const VERCEL_AI_GATEWAY_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 1.4,
output: 4.4,
input: 1.3,
output: 4.3,
cacheRead: 0.26,
cacheWrite: 0,
},
contextWindow: 202800,
maxTokens: 64000,
contextWindow: 202000,
maxTokens: 202000,
} satisfies Model<"anthropic-messages">,
"zai/glm-5.2": {
id: "zai/glm-5.2",
@@ -14,9 +14,9 @@ export const XIAOMI_TOKEN_PLAN_AMS_MODELS = {
reasoning: true,
input: ["text", "image"],
cost: {
input: 0.4,
output: 2,
cacheRead: 0.08,
input: 0.14,
output: 0.28,
cacheRead: 0.0028,
cacheWrite: 0,
},
contextWindow: 262144,
@@ -32,9 +32,9 @@ export const XIAOMI_TOKEN_PLAN_AMS_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 1,
output: 3,
cacheRead: 0.2,
input: 0.435,
output: 0.87,
cacheRead: 0.0036,
cacheWrite: 0,
},
contextWindow: 1048576,
@@ -50,9 +50,9 @@ export const XIAOMI_TOKEN_PLAN_AMS_MODELS = {
reasoning: true,
input: ["text", "image"],
cost: {
input: 0.4,
output: 2,
cacheRead: 0.08,
input: 0.14,
output: 0.28,
cacheRead: 0.0028,
cacheWrite: 0,
},
contextWindow: 1048576,
@@ -68,9 +68,9 @@ export const XIAOMI_TOKEN_PLAN_AMS_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 1,
output: 3,
cacheRead: 0.2,
input: 0.435,
output: 0.87,
cacheRead: 0.0036,
cacheWrite: 0,
},
contextWindow: 1048576,
@@ -14,9 +14,9 @@ export const XIAOMI_TOKEN_PLAN_CN_MODELS = {
reasoning: true,
input: ["text", "image"],
cost: {
input: 0.4,
output: 2,
cacheRead: 0.08,
input: 0.14,
output: 0.28,
cacheRead: 0.0028,
cacheWrite: 0,
},
contextWindow: 262144,
@@ -32,9 +32,9 @@ export const XIAOMI_TOKEN_PLAN_CN_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 1,
output: 3,
cacheRead: 0.2,
input: 0.435,
output: 0.87,
cacheRead: 0.0036,
cacheWrite: 0,
},
contextWindow: 1048576,
@@ -50,9 +50,9 @@ export const XIAOMI_TOKEN_PLAN_CN_MODELS = {
reasoning: true,
input: ["text", "image"],
cost: {
input: 0.4,
output: 2,
cacheRead: 0.08,
input: 0.14,
output: 0.28,
cacheRead: 0.0028,
cacheWrite: 0,
},
contextWindow: 1048576,
@@ -68,9 +68,9 @@ export const XIAOMI_TOKEN_PLAN_CN_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 1,
output: 3,
cacheRead: 0.2,
input: 0.435,
output: 0.87,
cacheRead: 0.0036,
cacheWrite: 0,
},
contextWindow: 1048576,
@@ -14,9 +14,9 @@ export const XIAOMI_TOKEN_PLAN_SGP_MODELS = {
reasoning: true,
input: ["text", "image"],
cost: {
input: 0.4,
output: 2,
cacheRead: 0.08,
input: 0.14,
output: 0.28,
cacheRead: 0.0028,
cacheWrite: 0,
},
contextWindow: 262144,
@@ -32,9 +32,9 @@ export const XIAOMI_TOKEN_PLAN_SGP_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 1,
output: 3,
cacheRead: 0.2,
input: 0.435,
output: 0.87,
cacheRead: 0.0036,
cacheWrite: 0,
},
contextWindow: 1048576,
@@ -50,9 +50,9 @@ export const XIAOMI_TOKEN_PLAN_SGP_MODELS = {
reasoning: true,
input: ["text", "image"],
cost: {
input: 0.4,
output: 2,
cacheRead: 0.08,
input: 0.14,
output: 0.28,
cacheRead: 0.0028,
cacheWrite: 0,
},
contextWindow: 1048576,
@@ -68,9 +68,9 @@ export const XIAOMI_TOKEN_PLAN_SGP_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 1,
output: 3,
cacheRead: 0.2,
input: 0.435,
output: 0.87,
cacheRead: 0.0036,
cacheWrite: 0,
},
contextWindow: 1048576,
+15 -15
View File
@@ -14,9 +14,9 @@ export const XIAOMI_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 0.1,
output: 0.3,
cacheRead: 0.01,
input: 0.14,
output: 0.28,
cacheRead: 0.0028,
cacheWrite: 0,
},
contextWindow: 262144,
@@ -32,9 +32,9 @@ export const XIAOMI_MODELS = {
reasoning: true,
input: ["text", "image"],
cost: {
input: 0.4,
output: 2,
cacheRead: 0.08,
input: 0.14,
output: 0.28,
cacheRead: 0.0028,
cacheWrite: 0,
},
contextWindow: 262144,
@@ -50,9 +50,9 @@ export const XIAOMI_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 1,
output: 3,
cacheRead: 0.2,
input: 0.435,
output: 0.87,
cacheRead: 0.0036,
cacheWrite: 0,
},
contextWindow: 1048576,
@@ -68,9 +68,9 @@ export const XIAOMI_MODELS = {
reasoning: true,
input: ["text", "image"],
cost: {
input: 0.4,
output: 2,
cacheRead: 0.08,
input: 0.14,
output: 0.28,
cacheRead: 0.0028,
cacheWrite: 0,
},
contextWindow: 1048576,
@@ -86,9 +86,9 @@ export const XIAOMI_MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 1,
output: 3,
cacheRead: 0.2,
input: 0.435,
output: 0.87,
cacheRead: 0.0036,
cacheWrite: 0,
},
contextWindow: 1048576,