fix(ai): refresh generated model catalog for release

This commit is contained in:
Mario Zechner
2026-04-27 21:28:21 +02:00
parent 24321b47c9
commit 65fc803671
7 changed files with 333 additions and 236 deletions

View File

@@ -3537,6 +3537,24 @@ export const MODELS = {
contextWindow: 400000,
maxTokens: 128000,
} satisfies Model<"openai-responses">,
"gpt-5.5": {
id: "gpt-5.5",
name: "GPT-5.5",
api: "openai-responses",
provider: "github-copilot",
baseUrl: "https://api.individual.githubcopilot.com",
headers: {"User-Agent":"GitHubCopilotChat/0.35.0","Editor-Version":"vscode/1.107.0","Editor-Plugin-Version":"copilot-chat/0.35.0","Copilot-Integration-Id":"vscode-chat"},
reasoning: true,
input: ["text", "image"],
cost: {
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 400000,
maxTokens: 128000,
} satisfies Model<"openai-responses">,
"grok-code-fast-1": {
id: "grok-code-fast-1",
name: "Grok Code Fast 1",
@@ -5042,6 +5060,24 @@ export const MODELS = {
contextWindow: 163840,
maxTokens: 65536,
} satisfies Model<"openai-completions">,
"deepseek-ai/DeepSeek-V4-Pro": {
id: "deepseek-ai/DeepSeek-V4-Pro",
name: "DeepSeek V4 Pro",
api: "openai-completions",
provider: "huggingface",
baseUrl: "https://router.huggingface.co/v1",
compat: {"supportsDeveloperRole":false},
reasoning: true,
input: ["text"],
cost: {
input: 1.74,
output: 3.48,
cacheRead: 0.145,
cacheWrite: 0,
},
contextWindow: 1048576,
maxTokens: 393216,
} satisfies Model<"openai-completions">,
"moonshotai/Kimi-K2-Instruct": {
id: "moonshotai/Kimi-K2-Instruct",
name: "Kimi-K2-Instruct",
@@ -6666,23 +6702,6 @@ export const MODELS = {
contextWindow: 200000,
maxTokens: 128000,
} satisfies Model<"anthropic-messages">,
"claude-3-5-haiku": {
id: "claude-3-5-haiku",
name: "Claude Haiku 3.5",
api: "anthropic-messages",
provider: "opencode",
baseUrl: "https://opencode.ai/zen",
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-haiku-4-5": {
id: "claude-haiku-4-5",
name: "Claude Haiku 4.5",
@@ -7125,6 +7144,40 @@ export const MODELS = {
contextWindow: 1050000,
maxTokens: 128000,
} satisfies Model<"openai-responses">,
"gpt-5.5": {
id: "gpt-5.5",
name: "GPT-5.5",
api: "openai-responses",
provider: "opencode",
baseUrl: "https://opencode.ai/zen/v1",
reasoning: true,
input: ["text", "image"],
cost: {
input: 5,
output: 30,
cacheRead: 0.5,
cacheWrite: 0,
},
contextWindow: 1050000,
maxTokens: 128000,
} satisfies Model<"openai-responses">,
"gpt-5.5-pro": {
id: "gpt-5.5-pro",
name: "GPT-5.5 Pro",
api: "openai-responses",
provider: "opencode",
baseUrl: "https://opencode.ai/zen/v1",
reasoning: true,
input: ["text", "image"],
cost: {
input: 30,
output: 180,
cacheRead: 30,
cacheWrite: 0,
},
contextWindow: 1050000,
maxTokens: 128000,
} satisfies Model<"openai-responses">,
"hy3-preview-free": {
id: "hy3-preview-free",
name: "Hy3 preview Free",
@@ -7297,6 +7350,42 @@ export const MODELS = {
} satisfies Model<"anthropic-messages">,
},
"opencode-go": {
"deepseek-v4-flash": {
id: "deepseek-v4-flash",
name: "DeepSeek V4 Flash",
api: "openai-completions",
provider: "opencode-go",
baseUrl: "https://opencode.ai/zen/go/v1",
compat: {"requiresReasoningContentOnAssistantMessages":true},
reasoning: true,
input: ["text"],
cost: {
input: 0.14,
output: 0.28,
cacheRead: 0.0028,
cacheWrite: 0,
},
contextWindow: 1000000,
maxTokens: 384000,
} satisfies Model<"openai-completions">,
"deepseek-v4-pro": {
id: "deepseek-v4-pro",
name: "DeepSeek V4 Pro",
api: "openai-completions",
provider: "opencode-go",
baseUrl: "https://opencode.ai/zen/go/v1",
compat: {"requiresReasoningContentOnAssistantMessages":true},
reasoning: true,
input: ["text"],
cost: {
input: 1.74,
output: 3.48,
cacheRead: 0.0145,
cacheWrite: 0,
},
contextWindow: 1000000,
maxTokens: 384000,
} satisfies Model<"openai-completions">,
"glm-5": {
id: "glm-5",
name: "GLM-5",
@@ -7413,7 +7502,7 @@ export const MODELS = {
cacheRead: 0.08,
cacheWrite: 0,
},
contextWindow: 262144,
contextWindow: 1000000,
maxTokens: 128000,
} satisfies Model<"openai-completions">,
"mimo-v2.5-pro": {
@@ -7552,7 +7641,7 @@ export const MODELS = {
cacheWrite: 0,
},
contextWindow: 65536,
maxTokens: 4096,
maxTokens: 16384,
} satisfies Model<"openai-completions">,
"amazon/nova-2-lite-v1": {
id: "amazon/nova-2-lite-v1",
@@ -8113,7 +8202,7 @@ export const MODELS = {
cacheWrite: 0,
},
contextWindow: 163840,
maxTokens: 163840,
maxTokens: 16384,
} satisfies Model<"openai-completions">,
"deepseek/deepseek-chat-v3-0324": {
id: "deepseek/deepseek-chat-v3-0324",
@@ -8130,7 +8219,7 @@ export const MODELS = {
cacheWrite: 0,
},
contextWindow: 163840,
maxTokens: 4096,
maxTokens: 16384,
} satisfies Model<"openai-completions">,
"deepseek/deepseek-chat-v3.1": {
id: "deepseek/deepseek-chat-v3.1",
@@ -8181,7 +8270,7 @@ export const MODELS = {
cacheWrite: 0,
},
contextWindow: 163840,
maxTokens: 4096,
maxTokens: 32768,
} satisfies Model<"openai-completions">,
"deepseek/deepseek-v3.1-terminus": {
id: "deepseek/deepseek-v3.1-terminus",
@@ -8194,11 +8283,11 @@ export const MODELS = {
cost: {
input: 0.21,
output: 0.7899999999999999,
cacheRead: 0.1300000002,
cacheRead: 0.13,
cacheWrite: 0,
},
contextWindow: 163840,
maxTokens: 4096,
maxTokens: 32768,
} satisfies Model<"openai-completions">,
"deepseek/deepseek-v3.2": {
id: "deepseek/deepseek-v3.2",
@@ -8246,7 +8335,7 @@ export const MODELS = {
cost: {
input: 0.14,
output: 0.28,
cacheRead: 0.028,
cacheRead: 0.0028,
cacheWrite: 0,
},
contextWindow: 1048576,
@@ -8262,9 +8351,9 @@ export const MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 1.74,
output: 3.48,
cacheRead: 0.145,
input: 0.435,
output: 0.87,
cacheRead: 0.003625,
cacheWrite: 0,
},
contextWindow: 1048576,
@@ -8491,6 +8580,40 @@ export const MODELS = {
contextWindow: 1048576,
maxTokens: 65536,
} satisfies Model<"openai-completions">,
"google/gemma-3-12b-it": {
id: "google/gemma-3-12b-it",
name: "Google: Gemma 3 12B",
api: "openai-completions",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
reasoning: false,
input: ["text", "image"],
cost: {
input: 0.04,
output: 0.13,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 131072,
maxTokens: 16384,
} satisfies Model<"openai-completions">,
"google/gemma-3-27b-it": {
id: "google/gemma-3-27b-it",
name: "Google: Gemma 3 27B",
api: "openai-completions",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
reasoning: false,
input: ["text", "image"],
cost: {
input: 0.08,
output: 0.16,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 131072,
maxTokens: 16384,
} satisfies Model<"openai-completions">,
"google/gemma-4-26b-a4b-it": {
id: "google/gemma-4-26b-a4b-it",
name: "Google: Gemma 4 26B A4B ",
@@ -8540,7 +8663,7 @@ export const MODELS = {
cacheWrite: 0,
},
contextWindow: 262144,
maxTokens: 4096,
maxTokens: 16384,
} satisfies Model<"openai-completions">,
"google/gemma-4-31b-it:free": {
id: "google/gemma-4-31b-it:free",
@@ -8659,7 +8782,7 @@ export const MODELS = {
cacheWrite: 0,
},
contextWindow: 131072,
maxTokens: 4096,
maxTokens: 16384,
} satisfies Model<"openai-completions">,
"meta-llama/llama-3.1-8b-instruct": {
id: "meta-llama/llama-3.1-8b-instruct",
@@ -8795,7 +8918,7 @@ export const MODELS = {
cacheWrite: 0,
},
contextWindow: 196608,
maxTokens: 4096,
maxTokens: 131072,
} satisfies Model<"openai-completions">,
"minimax/minimax-m2.5:free": {
id: "minimax/minimax-m2.5:free",
@@ -9061,13 +9184,13 @@ export const MODELS = {
reasoning: false,
input: ["text"],
cost: {
input: 0.01,
output: 0.03,
input: 0.02,
output: 0.04,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 131072,
maxTokens: 4096,
maxTokens: 16384,
} satisfies Model<"openai-completions">,
"mistralai/mistral-saba": {
id: "mistralai/mistral-saba",
@@ -9118,7 +9241,7 @@ export const MODELS = {
cacheWrite: 0,
},
contextWindow: 128000,
maxTokens: 4096,
maxTokens: 16384,
} satisfies Model<"openai-completions">,
"mistralai/mistral-small-creative": {
id: "mistralai/mistral-small-creative",
@@ -9339,7 +9462,7 @@ export const MODELS = {
cacheWrite: 0,
},
contextWindow: 131072,
maxTokens: 4096,
maxTokens: 16384,
} satisfies Model<"openai-completions">,
"nvidia/nemotron-3-nano-30b-a3b": {
id: "nvidia/nemotron-3-nano-30b-a3b",
@@ -9356,7 +9479,7 @@ export const MODELS = {
cacheWrite: 0,
},
contextWindow: 262144,
maxTokens: 4096,
maxTokens: 228000,
} satisfies Model<"openai-completions">,
"nvidia/nemotron-3-nano-30b-a3b:free": {
id: "nvidia/nemotron-3-nano-30b-a3b:free",
@@ -9441,7 +9564,7 @@ export const MODELS = {
cacheWrite: 0,
},
contextWindow: 131072,
maxTokens: 4096,
maxTokens: 16384,
} satisfies Model<"openai-completions">,
"nvidia/nemotron-nano-9b-v2:free": {
id: "nvidia/nemotron-nano-9b-v2:free",
@@ -10106,6 +10229,40 @@ export const MODELS = {
contextWindow: 1050000,
maxTokens: 128000,
} satisfies Model<"openai-completions">,
"openai/gpt-5.5": {
id: "openai/gpt-5.5",
name: "OpenAI: GPT-5.5",
api: "openai-completions",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
reasoning: true,
input: ["text", "image"],
cost: {
input: 5,
output: 30,
cacheRead: 0.5,
cacheWrite: 0,
},
contextWindow: 1050000,
maxTokens: 128000,
} satisfies Model<"openai-completions">,
"openai/gpt-5.5-pro": {
id: "openai/gpt-5.5-pro",
name: "OpenAI: GPT-5.5 Pro",
api: "openai-completions",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
reasoning: true,
input: ["text", "image"],
cost: {
input: 30,
output: 180,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 1050000,
maxTokens: 128000,
} satisfies Model<"openai-completions">,
"openai/gpt-audio": {
id: "openai/gpt-audio",
name: "OpenAI: GPT Audio",
@@ -10155,7 +10312,7 @@ export const MODELS = {
cacheWrite: 0,
},
contextWindow: 131072,
maxTokens: 4096,
maxTokens: 131072,
} satisfies Model<"openai-completions">,
"openai/gpt-oss-120b:free": {
id: "openai/gpt-oss-120b:free",
@@ -10189,7 +10346,7 @@ export const MODELS = {
cacheWrite: 0,
},
contextWindow: 131072,
maxTokens: 4096,
maxTokens: 131072,
} satisfies Model<"openai-completions">,
"openai/gpt-oss-20b:free": {
id: "openai/gpt-oss-20b:free",
@@ -10438,8 +10595,8 @@ export const MODELS = {
reasoning: false,
input: ["text"],
cost: {
input: 0.12,
output: 0.39,
input: 0.36,
output: 0.39999999999999997,
cacheRead: 0,
cacheWrite: 0,
},
@@ -10614,7 +10771,7 @@ export const MODELS = {
cacheWrite: 0,
},
contextWindow: 262144,
maxTokens: 4096,
maxTokens: 16384,
} satisfies Model<"openai-completions">,
"qwen/qwen3-235b-a22b-thinking-2507": {
id: "qwen/qwen3-235b-a22b-thinking-2507",
@@ -10648,7 +10805,7 @@ export const MODELS = {
cacheWrite: 0,
},
contextWindow: 40960,
maxTokens: 40960,
maxTokens: 16384,
} satisfies Model<"openai-completions">,
"qwen/qwen3-30b-a3b-instruct-2507": {
id: "qwen/qwen3-30b-a3b-instruct-2507",
@@ -10728,12 +10885,12 @@ export const MODELS = {
input: ["text"],
cost: {
input: 0.22,
output: 1,
cacheRead: 0.022,
output: 1.7999999999999998,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 262144,
maxTokens: 4096,
maxTokens: 65536,
} satisfies Model<"openai-completions">,
"qwen/qwen3-coder-30b-a3b-instruct": {
id: "qwen/qwen3-coder-30b-a3b-instruct",
@@ -10778,9 +10935,9 @@ export const MODELS = {
reasoning: false,
input: ["text"],
cost: {
input: 0.15,
input: 0.14,
output: 0.7999999999999999,
cacheRead: 0.11,
cacheRead: 0.09,
cacheWrite: 0,
},
contextWindow: 262144,
@@ -10869,7 +11026,7 @@ export const MODELS = {
cacheWrite: 0,
},
contextWindow: 262144,
maxTokens: 4096,
maxTokens: 16384,
} satisfies Model<"openai-completions">,
"qwen/qwen3-next-80b-a3b-instruct:free": {
id: "qwen/qwen3-next-80b-a3b-instruct:free",
@@ -10920,7 +11077,7 @@ export const MODELS = {
cacheWrite: 0,
},
contextWindow: 262144,
maxTokens: 4096,
maxTokens: 16384,
} satisfies Model<"openai-completions">,
"qwen/qwen3-vl-235b-a22b-thinking": {
id: "qwen/qwen3-vl-235b-a22b-thinking",
@@ -11143,6 +11300,74 @@ export const MODELS = {
contextWindow: 1000000,
maxTokens: 65536,
} satisfies Model<"openai-completions">,
"qwen/qwen3.5-plus-20260420": {
id: "qwen/qwen3.5-plus-20260420",
name: "Qwen: Qwen3.5 Plus 2026-04-20",
api: "openai-completions",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
reasoning: true,
input: ["text", "image"],
cost: {
input: 0.39999999999999997,
output: 2.4,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 1000000,
maxTokens: 65536,
} satisfies Model<"openai-completions">,
"qwen/qwen3.6-27b": {
id: "qwen/qwen3.6-27b",
name: "Qwen: Qwen3.6 27B",
api: "openai-completions",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
reasoning: true,
input: ["text", "image"],
cost: {
input: 0.5,
output: 2,
cacheRead: 0.25,
cacheWrite: 0,
},
contextWindow: 262144,
maxTokens: 65536,
} satisfies Model<"openai-completions">,
"qwen/qwen3.6-flash": {
id: "qwen/qwen3.6-flash",
name: "Qwen: Qwen3.6 Flash",
api: "openai-completions",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
reasoning: true,
input: ["text", "image"],
cost: {
input: 0.25,
output: 1.5,
cacheRead: 0,
cacheWrite: 0.3125,
},
contextWindow: 1000000,
maxTokens: 65536,
} satisfies Model<"openai-completions">,
"qwen/qwen3.6-max-preview": {
id: "qwen/qwen3.6-max-preview",
name: "Qwen: Qwen3.6 Max Preview",
api: "openai-completions",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
reasoning: true,
input: ["text"],
cost: {
input: 1.3,
output: 7.8,
cacheRead: 0,
cacheWrite: 1.625,
},
contextWindow: 262144,
maxTokens: 65536,
} satisfies Model<"openai-completions">,
"qwen/qwen3.6-plus": {
id: "qwen/qwen3.6-plus",
name: "Qwen: Qwen3.6 Plus",
@@ -11698,11 +11923,11 @@ export const MODELS = {
cost: {
input: 0.3,
output: 0.8999999999999999,
cacheRead: 0,
cacheRead: 0.049999999999999996,
cacheWrite: 0,
},
contextWindow: 131072,
maxTokens: 131072,
maxTokens: 24000,
} satisfies Model<"openai-completions">,
"z-ai/glm-4.7": {
id: "z-ai/glm-4.7",
@@ -11732,11 +11957,11 @@ export const MODELS = {
cost: {
input: 0.06,
output: 0.39999999999999997,
cacheRead: 0.0100000002,
cacheRead: 0.01,
cacheWrite: 0,
},
contextWindow: 202752,
maxTokens: 4096,
maxTokens: 16384,
} satisfies Model<"openai-completions">,
"z-ai/glm-5": {
id: "z-ai/glm-5",
@@ -11753,7 +11978,7 @@ export const MODELS = {
cacheWrite: 0,
},
contextWindow: 202752,
maxTokens: 4096,
maxTokens: 16384,
} satisfies Model<"openai-completions">,
"z-ai/glm-5-turbo": {
id: "z-ai/glm-5-turbo",
@@ -12499,7 +12724,7 @@ export const MODELS = {
cost: {
input: 0.14,
output: 0.28,
cacheRead: 0.014,
cacheRead: 0.028,
cacheWrite: 0,
},
contextWindow: 1000000,
@@ -12514,9 +12739,9 @@ export const MODELS = {
reasoning: true,
input: ["text"],
cost: {
input: 1.74,
output: 3.48,
cacheRead: 0.145,
input: 0.435,
output: 0.87,
cacheRead: 0.0036,
cacheWrite: 0,
},
contextWindow: 1000000,
@@ -13797,6 +14022,40 @@ export const MODELS = {
contextWindow: 1050000,
maxTokens: 128000,
} satisfies Model<"anthropic-messages">,
"openai/gpt-5.5": {
id: "openai/gpt-5.5",
name: "GPT 5.5",
api: "anthropic-messages",
provider: "vercel-ai-gateway",
baseUrl: "https://ai-gateway.vercel.sh",
reasoning: true,
input: ["text", "image"],
cost: {
input: 5,
output: 30,
cacheRead: 0.5,
cacheWrite: 0,
},
contextWindow: 1000000,
maxTokens: 128000,
} satisfies Model<"anthropic-messages">,
"openai/gpt-5.5-pro": {
id: "openai/gpt-5.5-pro",
name: "GPT 5.5 Pro",
api: "anthropic-messages",
provider: "vercel-ai-gateway",
baseUrl: "https://ai-gateway.vercel.sh",
reasoning: true,
input: ["text", "image"],
cost: {
input: 30,
output: 180,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 1000000,
maxTokens: 128000,
} satisfies Model<"anthropic-messages">,
"openai/gpt-oss-20b": {
id: "openai/gpt-oss-20b",
name: "GPT OSS 120B",
@@ -14923,24 +15182,6 @@ export const MODELS = {
} satisfies Model<"openai-completions">,
},
"zai": {
"glm-4.5": {
id: "glm-4.5",
name: "GLM-4.5",
api: "openai-completions",
provider: "zai",
baseUrl: "https://api.z.ai/api/coding/paas/v4",
compat: {"supportsDeveloperRole":false,"thinkingFormat":"zai"},
reasoning: true,
input: ["text"],
cost: {
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 131072,
maxTokens: 98304,
} satisfies Model<"openai-completions">,
"glm-4.5-air": {
id: "glm-4.5-air",
name: "GLM-4.5-Air",
@@ -14959,78 +15200,6 @@ export const MODELS = {
contextWindow: 131072,
maxTokens: 98304,
} satisfies Model<"openai-completions">,
"glm-4.5-flash": {
id: "glm-4.5-flash",
name: "GLM-4.5-Flash",
api: "openai-completions",
provider: "zai",
baseUrl: "https://api.z.ai/api/coding/paas/v4",
compat: {"supportsDeveloperRole":false,"thinkingFormat":"zai"},
reasoning: true,
input: ["text"],
cost: {
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 131072,
maxTokens: 98304,
} satisfies Model<"openai-completions">,
"glm-4.5v": {
id: "glm-4.5v",
name: "GLM-4.5V",
api: "openai-completions",
provider: "zai",
baseUrl: "https://api.z.ai/api/coding/paas/v4",
compat: {"supportsDeveloperRole":false,"thinkingFormat":"zai"},
reasoning: true,
input: ["text", "image"],
cost: {
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 64000,
maxTokens: 16384,
} satisfies Model<"openai-completions">,
"glm-4.6": {
id: "glm-4.6",
name: "GLM-4.6",
api: "openai-completions",
provider: "zai",
baseUrl: "https://api.z.ai/api/coding/paas/v4",
compat: {"supportsDeveloperRole":false,"thinkingFormat":"zai","zaiToolStream":true},
reasoning: true,
input: ["text"],
cost: {
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 204800,
maxTokens: 131072,
} satisfies Model<"openai-completions">,
"glm-4.6v": {
id: "glm-4.6v",
name: "GLM-4.6V",
api: "openai-completions",
provider: "zai",
baseUrl: "https://api.z.ai/api/coding/paas/v4",
compat: {"supportsDeveloperRole":false,"thinkingFormat":"zai","zaiToolStream":true},
reasoning: true,
input: ["text", "image"],
cost: {
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 128000,
maxTokens: 32768,
} satisfies Model<"openai-completions">,
"glm-4.7": {
id: "glm-4.7",
name: "GLM-4.7",
@@ -15049,60 +15218,6 @@ export const MODELS = {
contextWindow: 204800,
maxTokens: 131072,
} satisfies Model<"openai-completions">,
"glm-4.7-flash": {
id: "glm-4.7-flash",
name: "GLM-4.7-Flash",
api: "openai-completions",
provider: "zai",
baseUrl: "https://api.z.ai/api/coding/paas/v4",
compat: {"supportsDeveloperRole":false,"thinkingFormat":"zai","zaiToolStream":true},
reasoning: true,
input: ["text"],
cost: {
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 200000,
maxTokens: 131072,
} satisfies Model<"openai-completions">,
"glm-4.7-flashx": {
id: "glm-4.7-flashx",
name: "GLM-4.7-FlashX",
api: "openai-completions",
provider: "zai",
baseUrl: "https://api.z.ai/api/coding/paas/v4",
compat: {"supportsDeveloperRole":false,"thinkingFormat":"zai","zaiToolStream":true},
reasoning: true,
input: ["text"],
cost: {
input: 0.07,
output: 0.4,
cacheRead: 0.01,
cacheWrite: 0,
},
contextWindow: 200000,
maxTokens: 131072,
} satisfies Model<"openai-completions">,
"glm-5": {
id: "glm-5",
name: "GLM-5",
api: "openai-completions",
provider: "zai",
baseUrl: "https://api.z.ai/api/coding/paas/v4",
compat: {"supportsDeveloperRole":false,"thinkingFormat":"zai","zaiToolStream":true},
reasoning: true,
input: ["text"],
cost: {
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 204800,
maxTokens: 131072,
} satisfies Model<"openai-completions">,
"glm-5-turbo": {
id: "glm-5-turbo",
name: "GLM-5-Turbo",
@@ -15139,23 +15254,5 @@ export const MODELS = {
contextWindow: 200000,
maxTokens: 131072,
} satisfies Model<"openai-completions">,
"glm-5v-turbo": {
id: "glm-5v-turbo",
name: "glm-5v-turbo",
api: "openai-completions",
provider: "zai",
baseUrl: "https://api.z.ai/api/coding/paas/v4",
compat: {"supportsDeveloperRole":false,"thinkingFormat":"zai","zaiToolStream":true},
reasoning: true,
input: ["text", "image"],
cost: {
input: 0,
output: 0,
cacheRead: 0,
cacheWrite: 0,
},
contextWindow: 200000,
maxTokens: 131072,
} satisfies Model<"openai-completions">,
},
} as const;

View File

@@ -389,8 +389,8 @@ describe("Context overflow error handling", () => {
// =============================================================================
describe.skipIf(!process.env.ZAI_API_KEY)("z.ai", () => {
it("glm-4.5-flash - should detect overflow via isContextOverflow when z.ai reports it", async () => {
const model = getModel("zai", "glm-4.5-flash");
it("glm-4.5-air - should detect overflow via isContextOverflow when z.ai reports it", async () => {
const model = getModel("zai", "glm-4.5-air");
const result = await testContextOverflow(model, process.env.ZAI_API_KEY!);
logResult(result);

View File

@@ -212,7 +212,7 @@ describe("openai-completions tool_choice", () => {
});
it("enables tool_stream for supported z.ai models with tools", async () => {
const model = getModel("zai", "glm-5")!;
const model = getModel("zai", "glm-5.1")!;
const tools: Tool[] = [
{
name: "ping",
@@ -249,10 +249,10 @@ describe("openai-completions tool_choice", () => {
});
it("stores z.ai tool_stream support in model compat metadata", () => {
expect(getModel("zai", "glm-5")?.compat?.zaiToolStream).toBe(true);
expect(getModel("zai", "glm-5.1")?.compat?.zaiToolStream).toBe(true);
expect(getModel("zai", "glm-4.7")?.compat?.zaiToolStream).toBe(true);
expect(getModel("zai", "glm-4.7-flash")?.compat?.zaiToolStream).toBe(true);
expect(getModel("zai", "glm-4.6v")?.compat?.zaiToolStream).toBe(true);
expect(getModel("zai", "glm-4.7")?.compat?.zaiToolStream).toBe(true);
expect(getModel("zai", "glm-5-turbo")?.compat?.zaiToolStream).toBe(true);
expect(getModel("zai", "glm-4.5-air")?.compat?.zaiToolStream).toBeUndefined();
});
@@ -338,7 +338,7 @@ describe("openai-completions tool_choice", () => {
});
it("omits tool_stream when no tools are provided", async () => {
const model = getModel("zai", "glm-5")!;
const model = getModel("zai", "glm-5.1")!;
let payload: unknown;
await streamSimple(
@@ -380,7 +380,7 @@ describe("openai-completions tool_choice", () => {
},
];
const model = getModel("zai", "glm-5")!;
const model = getModel("zai", "glm-5.1")!;
const response = await streamSimple(
model,
{

View File

@@ -749,8 +749,8 @@ describe("Generate E2E Tests", () => {
},
);
describe.skipIf(!process.env.ZAI_API_KEY)("zAI Provider (glm-5 via OpenAI Completions)", () => {
const llm = getModel("zai", "glm-5");
describe.skipIf(!process.env.ZAI_API_KEY)("zAI Provider (glm-5.1 via OpenAI Completions)", () => {
const llm = getModel("zai", "glm-5.1");
it("should complete basic text generation", { retry: 3 }, async () => {
await basicTextGeneration(llm);

View File

@@ -168,7 +168,7 @@ describe("Token Statistics on Abort", () => {
});
describe.skipIf(!process.env.ZAI_API_KEY)("zAI Provider", () => {
const llm = getModel("zai", "glm-4.5-flash");
const llm = getModel("zai", "glm-4.5-air");
it("should include token stats when aborted mid-stream", { retry: 3, timeout: 30000 }, async () => {
await testTokensOnAbort(llm);

View File

@@ -177,7 +177,7 @@ describe("Tool Call Without Result Tests", () => {
});
describe.skipIf(!process.env.ZAI_API_KEY)("zAI Provider", () => {
const model = getModel("zai", "glm-4.5-flash");
const model = getModel("zai", "glm-4.5-air");
it("should filter out tool calls without corresponding tool results", { retry: 3, timeout: 30000 }, async () => {
await testToolCallWithoutResult(model);

View File

@@ -331,10 +331,10 @@ describe("totalTokens field", () => {
describe.skipIf(!process.env.ZAI_API_KEY)("z.ai", () => {
it(
"glm-4.5-flash - should return totalTokens equal to sum of components",
"glm-4.5-air - should return totalTokens equal to sum of components",
{ retry: 3, timeout: 60000 },
async () => {
const llm = getModel("zai", "glm-4.5-flash");
const llm = getModel("zai", "glm-4.5-air");
console.log(`\nz.ai / ${llm.id}:`);
const { first, second } = await testTotalTokensWithCache(llm, { apiKey: process.env.ZAI_API_KEY });