Przeglądaj źródła

feat(core): cold-start providers/{google,deepseek,qwen,minimax} from lobe@main

fanghanjun 6 miesięcy temu
rodzic
commit
05eec514e5

+ 17 - 0
packages/core/src/llm/providers/deepseek.ts

@@ -0,0 +1,17 @@
+import type { InkosProvider } from "./types.js";
+
+export const DEEPSEEK: InkosProvider = {
+  id: "deepseek",
+  label: "DeepSeek",
+  api: "openai-completions",
+  baseUrl: "https://api.deepseek.com",
+  checkModel: "deepseek-chat",
+  temperatureRange: [0, 2],
+  defaultTemperature: 1,
+  writingTemperature: 1.5,
+  temperatureHint: "创意写作推荐 1.5",
+  models: [
+    { id: "deepseek-chat", displayName: "DeepSeek V3.2", maxOutput: 8192, contextWindowTokens: 131072, abilities: { functionCall: true, structuredOutput: true }, enabled: true, releasedAt: "2025-12-01" },
+    { id: "deepseek-reasoner", displayName: "DeepSeek V3.2 Thinking", maxOutput: 65536, contextWindowTokens: 131072, abilities: { reasoning: true, functionCall: true }, enabled: true, releasedAt: "2025-12-01" },
+  ],
+};

+ 40 - 0
packages/core/src/llm/providers/google.ts

@@ -0,0 +1,40 @@
+import type { InkosProvider } from "./types.js";
+
+export const GOOGLE: InkosProvider = {
+  id: "google",
+  label: "Google Gemini",
+  api: "openai-completions",
+  baseUrl: "https://generativelanguage.googleapis.com/v1beta/openai",
+  checkModel: "gemini-2.5-flash",
+  temperatureRange: [0, 2],
+  defaultTemperature: 1,
+  writingTemperature: 1,
+  models: [
+    { id: "gemini-pro-latest", displayName: "Gemini Pro Latest", maxOutput: 65536, contextWindowTokens: 1114112, abilities: { reasoning: true, vision: true, functionCall: true, search: true, structuredOutput: true } },
+    { id: "gemini-flash-latest", displayName: "Gemini Flash Latest", maxOutput: 65536, contextWindowTokens: 1114112, abilities: { reasoning: true, vision: true, functionCall: true, search: true } },
+    { id: "gemini-flash-lite-latest", displayName: "Gemini Flash-Lite Latest", maxOutput: 65536, contextWindowTokens: 1114112, abilities: { reasoning: true, vision: true, functionCall: true, search: true } },
+    { id: "gemini-3.1-flash-image-preview", displayName: "Nano Banana 2", maxOutput: 32768, contextWindowTokens: 163840, abilities: { reasoning: true, vision: true, search: true }, enabled: true, releasedAt: "2026-02-26" },
+    { id: "gemini-3.1-pro-preview", displayName: "Gemini 3.1 Pro Preview", maxOutput: 65536, contextWindowTokens: 1114112, abilities: { reasoning: true, vision: true, functionCall: true, search: true, structuredOutput: true }, enabled: true, releasedAt: "2026-02-19" },
+    { id: "gemini-3.1-flash-lite-preview", displayName: "Gemini 3.1 Flash-Lite Preview", maxOutput: 65536, contextWindowTokens: 1114112, abilities: { reasoning: true, vision: true, functionCall: true, search: true, structuredOutput: true }, enabled: true, releasedAt: "2026-03-04" },
+    { id: "gemini-3-flash-preview", displayName: "Gemini 3 Flash Preview", maxOutput: 65536, contextWindowTokens: 1114112, abilities: { reasoning: true, vision: true, functionCall: true, search: true }, enabled: true, releasedAt: "2025-12-17" },
+    { id: "gemini-3-pro-image-preview", displayName: "Nano Banana Pro", maxOutput: 32768, contextWindowTokens: 163840, abilities: { reasoning: true, vision: true, search: true }, enabled: true, releasedAt: "2025-11-20" },
+    { id: "gemini-2.5-pro", displayName: "Gemini 2.5 Pro", maxOutput: 65536, contextWindowTokens: 1114112, abilities: { reasoning: true, vision: true, functionCall: true, search: true }, releasedAt: "2025-06-17" },
+    { id: "gemini-2.5-flash", displayName: "Gemini 2.5 Flash", maxOutput: 65536, contextWindowTokens: 1114112, abilities: { reasoning: true, vision: true, functionCall: true, search: true }, releasedAt: "2025-06-17" },
+    { id: "gemini-2.5-flash-image", displayName: "Nano Banana", maxOutput: 32768, contextWindowTokens: 98304, abilities: { vision: true }, releasedAt: "2025-08-26" },
+    { id: "gemini-2.5-flash-lite", displayName: "Gemini 2.5 Flash-Lite", maxOutput: 65536, contextWindowTokens: 1114112, abilities: { reasoning: true, vision: true, functionCall: true, search: true }, releasedAt: "2025-07-22" },
+    { id: "gemini-2.5-flash-lite-preview-09-2025", displayName: "Gemini 2.5 Flash-Lite Preview Sep 2025", maxOutput: 65536, contextWindowTokens: 1114112, abilities: { reasoning: true, vision: true, functionCall: true, search: true }, releasedAt: "2025-09-25" },
+    { id: "gemini-2.0-flash", displayName: "Gemini 2.0 Flash", maxOutput: 8192, contextWindowTokens: 1056768, abilities: { vision: true, functionCall: true, search: true }, releasedAt: "2025-02-05" },
+    { id: "gemini-2.0-flash-001", displayName: "Gemini 2.0 Flash 001", maxOutput: 8192, contextWindowTokens: 1056768, abilities: { vision: true, functionCall: true, search: true }, releasedAt: "2025-02-05" },
+    { id: "gemini-2.0-flash-lite", displayName: "Gemini 2.0 Flash-Lite", maxOutput: 8192, contextWindowTokens: 1056768, abilities: { vision: true }, releasedAt: "2025-02-05" },
+    { id: "gemini-2.0-flash-lite-001", displayName: "Gemini 2.0 Flash-Lite 001", maxOutput: 8192, contextWindowTokens: 1056768, abilities: { vision: true }, releasedAt: "2025-02-05" },
+    { id: "gemini-1.5-flash-002", displayName: "Gemini 1.5 Flash 002", maxOutput: 8192, contextWindowTokens: 1008192, abilities: { vision: true, functionCall: true }, releasedAt: "2024-09-25" },
+    { id: "gemini-1.5-pro-002", displayName: "Gemini 1.5 Pro 002", maxOutput: 8192, contextWindowTokens: 2008192, abilities: { vision: true, functionCall: true }, releasedAt: "2024-09-24" },
+    { id: "gemini-1.5-flash-8b-latest", displayName: "Gemini 1.5 Flash 8B", maxOutput: 8192, contextWindowTokens: 1008192, abilities: { vision: true, functionCall: true }, releasedAt: "2024-10-03" },
+    { id: "gemma-3-1b-it", displayName: "Gemma 3 1B", maxOutput: 8192, contextWindowTokens: 40960 },
+    { id: "gemma-3-4b-it", displayName: "Gemma 3 4B", maxOutput: 8192, contextWindowTokens: 40960 },
+    { id: "gemma-3-12b-it", displayName: "Gemma 3 12B", maxOutput: 8192, contextWindowTokens: 40960 },
+    { id: "gemma-3-27b-it", displayName: "Gemma 3 27B", maxOutput: 8192, contextWindowTokens: 139264 },
+    { id: "gemma-3n-e2b-it", displayName: "Gemma 3n E2B", maxOutput: 2048, contextWindowTokens: 10240 },
+    { id: "gemma-3n-e4b-it", displayName: "Gemma 3n E4B", maxOutput: 2048, contextWindowTokens: 10240 },
+  ],
+};

+ 26 - 0
packages/core/src/llm/providers/minimax.ts

@@ -0,0 +1,26 @@
+import type { InkosProvider } from "./types.js";
+
+export const MINIMAX: InkosProvider = {
+  id: "minimax",
+  label: "MiniMax",
+  api: "anthropic-messages",
+  baseUrl: "https://api.minimaxi.com/anthropic",
+  piProvider: "anthropic",
+  checkModel: "MiniMax-M2.7",
+  temperatureRange: [0, 2],
+  defaultTemperature: 0.9,
+  writingTemperature: 0.9,
+  models: [
+    { id: "MiniMax-M2.7", displayName: "MiniMax M2.7", maxOutput: 131072, contextWindowTokens: 204800, abilities: { reasoning: true, functionCall: true }, enabled: true, releasedAt: "2026-03-18" },
+    { id: "MiniMax-M2.7-highspeed", displayName: "MiniMax M2.7 Highspeed", maxOutput: 131072, contextWindowTokens: 204800, abilities: { reasoning: true, functionCall: true }, releasedAt: "2026-03-18" },
+    { id: "MiniMax-M2.5", displayName: "MiniMax M2.5", maxOutput: 131072, contextWindowTokens: 204800, abilities: { reasoning: true, functionCall: true }, releasedAt: "2026-02-12" },
+    { id: "MiniMax-M2.5-highspeed", displayName: "MiniMax M2.5 highspeed", maxOutput: 131072, contextWindowTokens: 204800, abilities: { reasoning: true, functionCall: true }, releasedAt: "2026-02-12" },
+    { id: "M2-her", displayName: "MiniMax M2-her", maxOutput: 2048, contextWindowTokens: 65536, releasedAt: "2026-01-23" },
+    { id: "MiniMax-M2.1", displayName: "MiniMax M2.1", maxOutput: 131072, contextWindowTokens: 204800, abilities: { reasoning: true, functionCall: true }, releasedAt: "2025-12-23" },
+    { id: "MiniMax-M2.1-highspeed", displayName: "MiniMax M2.1 highspeed", maxOutput: 131072, contextWindowTokens: 204800, abilities: { reasoning: true, functionCall: true }, releasedAt: "2025-12-23" },
+    { id: "MiniMax-M2", displayName: "MiniMax M2", maxOutput: 131072, contextWindowTokens: 204800, abilities: { reasoning: true, functionCall: true }, releasedAt: "2025-10-27" },
+    { id: "MiniMax-M2-Stable", displayName: "MiniMax M2 Stable", maxOutput: 131072, contextWindowTokens: 204800, abilities: { reasoning: true, functionCall: true }, releasedAt: "2025-10-27" },
+    { id: "MiniMax-M1", displayName: "MiniMax M1", maxOutput: 40000, contextWindowTokens: 1000192, abilities: { reasoning: true, functionCall: true }, releasedAt: "2025-06-16" },
+    { id: "MiniMax-Text-01", displayName: "MiniMax Text 01", maxOutput: 40000, contextWindowTokens: 1000192, abilities: { vision: true, functionCall: true }, releasedAt: "2025-01-15" },
+  ],
+};

+ 108 - 0
packages/core/src/llm/providers/qwen.ts

@@ -0,0 +1,108 @@
+import type { InkosProvider } from "./types.js";
+
+export const QWEN: InkosProvider = {
+  id: "qwen",
+  label: "通义千问",
+  api: "openai-completions",
+  baseUrl: "https://dashscope.aliyuncs.com/compatible-mode/v1",
+  checkModel: "qwen-turbo",
+  temperatureRange: [0, 2],
+  defaultTemperature: 0.7,
+  writingTemperature: 1,
+  models: [
+    { id: "kimi-k2.5", displayName: "Kimi K2.5", maxOutput: 32768, contextWindowTokens: 262144, abilities: { reasoning: true, vision: true, functionCall: true } },
+    { id: "MiniMax-M2.5", displayName: "MiniMax-M2.5", maxOutput: 32768, contextWindowTokens: 196608, abilities: { reasoning: true, functionCall: true, search: true } },
+    { id: "MiniMax-M2.1", displayName: "MiniMax-M2.1", maxOutput: 32768, contextWindowTokens: 204800, abilities: { reasoning: true, functionCall: true, search: true } },
+    { id: "qwen3-vl-plus", displayName: "Qwen3 VL Plus", maxOutput: 32768, contextWindowTokens: 262144, abilities: { reasoning: true, vision: true }, releasedAt: "2025-09-23" },
+    { id: "qwen3-vl-flash", displayName: "Qwen3 VL Flash", maxOutput: 32768, contextWindowTokens: 262144, abilities: { reasoning: true, vision: true } },
+    { id: "deepseek-v3.2", displayName: "DeepSeek V3.2", maxOutput: 65536, contextWindowTokens: 131072, abilities: { reasoning: true, functionCall: true, search: true } },
+    { id: "deepseek-v3.2-exp", displayName: "DeepSeek V3.2 Exp", maxOutput: 65536, contextWindowTokens: 131072, abilities: { reasoning: true, functionCall: true, search: true } },
+    { id: "deepseek-v3.1", displayName: "DeepSeek V3.1", maxOutput: 65536, contextWindowTokens: 131072, abilities: { reasoning: true, functionCall: true, search: true } },
+    { id: "kimi-k2-thinking", displayName: "Kimi K2 Thinking", maxOutput: 16384, contextWindowTokens: 262144, abilities: { reasoning: true, functionCall: true }, releasedAt: "2025-11-10" },
+    { id: "Moonshot-Kimi-K2-Instruct", displayName: "Kimi K2 Instruct", maxOutput: 8192, contextWindowTokens: 131072, abilities: { functionCall: true, search: true }, releasedAt: "2025-07-17" },
+    { id: "glm-5", displayName: "GLM-5", maxOutput: 16384, contextWindowTokens: 202752, abilities: { reasoning: true, functionCall: true } },
+    { id: "glm-4.7", displayName: "GLM-4.7", maxOutput: 16384, contextWindowTokens: 202752, abilities: { reasoning: true, functionCall: true } },
+    { id: "glm-4.6", displayName: "GLM-4.6", maxOutput: 16384, contextWindowTokens: 202752, abilities: { reasoning: true, functionCall: true } },
+    { id: "glm-4.5", displayName: "GLM-4.5", maxOutput: 16384, contextWindowTokens: 131072, abilities: { reasoning: true, functionCall: true } },
+    { id: "glm-4.5-air", displayName: "GLM-4.5-Air", maxOutput: 16384, contextWindowTokens: 131072, abilities: { reasoning: true, functionCall: true } },
+    { id: "qwen3-coder-next", displayName: "Qwen3 Coder Next", maxOutput: 65536, contextWindowTokens: 262144, abilities: { functionCall: true } },
+    { id: "qwen3-coder-plus", displayName: "Qwen3 Coder Plus", maxOutput: 65536, contextWindowTokens: 1000000, abilities: { functionCall: true } },
+    { id: "qwen3-coder-flash", displayName: "Qwen3 Coder Flash", maxOutput: 65536, contextWindowTokens: 1000000, abilities: { functionCall: true } },
+    { id: "qwen3-coder-480b-a35b-instruct", displayName: "Qwen3 Coder 480B A35B", maxOutput: 65536, contextWindowTokens: 262144, abilities: { functionCall: true } },
+    { id: "qwen3-coder-30b-a3b-instruct", displayName: "Qwen3 Coder 30B A3B", maxOutput: 65536, contextWindowTokens: 262144, abilities: { functionCall: true } },
+    { id: "qwen3.5-397b-a17b", displayName: "Qwen3.5-397B-A17B", maxOutput: 65536, contextWindowTokens: 262144, abilities: { reasoning: true, vision: true, functionCall: true }, releasedAt: "2026-02-16" },
+    { id: "qwen3.5-122b-a10b", displayName: "Qwen3.5-122B-A10B", maxOutput: 65536, contextWindowTokens: 262144, abilities: { reasoning: true, vision: true, functionCall: true }, releasedAt: "2026-02-24" },
+    { id: "qwen3.5-27b", displayName: "Qwen3.5-27B", maxOutput: 65536, contextWindowTokens: 262144, abilities: { reasoning: true, vision: true, functionCall: true }, releasedAt: "2026-02-24" },
+    { id: "qwen3.5-35b-a3b", displayName: "Qwen3.5-35B-A3B", maxOutput: 65536, contextWindowTokens: 262144, abilities: { reasoning: true, vision: true, functionCall: true }, releasedAt: "2026-02-24" },
+    { id: "qwen3-235b-a22b-thinking-2507", displayName: "Qwen3 235B A22B Thinking 2507", maxOutput: 32768, contextWindowTokens: 131072, abilities: { reasoning: true, functionCall: true }, releasedAt: "2025-07-25" },
+    { id: "qwen3-235b-a22b-instruct-2507", displayName: "Qwen3 235B A22B Instruct 2507", maxOutput: 32768, contextWindowTokens: 131072, abilities: { functionCall: true }, releasedAt: "2025-07-22" },
+    { id: "qwen3-30b-a3b-thinking-2507", displayName: "Qwen3 30B A3B Thinking 2507", maxOutput: 32768, contextWindowTokens: 131072, abilities: { reasoning: true, functionCall: true }, releasedAt: "2025-07-30" },
+    { id: "qwen3-30b-a3b-instruct-2507", displayName: "Qwen3 30B A3B Instruct 2507", maxOutput: 32768, contextWindowTokens: 131072, abilities: { functionCall: true }, releasedAt: "2025-07-29" },
+    { id: "qwen3-next-80b-a3b-thinking", displayName: "Qwen3 Next 80B A3B Thinking", maxOutput: 32768, contextWindowTokens: 131072, abilities: { reasoning: true, functionCall: true }, releasedAt: "2025-09-12" },
+    { id: "qwen3-next-80b-a3b-instruct", displayName: "Qwen3 Next 80B A3B Instruct", maxOutput: 32768, contextWindowTokens: 131072, abilities: { functionCall: true }, releasedAt: "2025-09-12" },
+    { id: "qwen3-235b-a22b", displayName: "Qwen3 235B A22B", maxOutput: 8192, contextWindowTokens: 131072, abilities: { reasoning: true, functionCall: true }, releasedAt: "2025-04-28" },
+    { id: "qwen3-32b", displayName: "Qwen3 32B", maxOutput: 8192, contextWindowTokens: 131072, abilities: { reasoning: true, functionCall: true }, releasedAt: "2025-04-28" },
+    { id: "qwen3-30b-a3b", displayName: "Qwen3 30B A3B", maxOutput: 8192, contextWindowTokens: 131072, abilities: { reasoning: true, functionCall: true }, releasedAt: "2025-04-28" },
+    { id: "qwen3-14b", displayName: "Qwen3 14B", maxOutput: 8192, contextWindowTokens: 131072, abilities: { reasoning: true, functionCall: true }, releasedAt: "2025-04-28" },
+    { id: "qwen3-8b", displayName: "Qwen3 8B", maxOutput: 8192, contextWindowTokens: 131072, abilities: { reasoning: true, functionCall: true }, releasedAt: "2025-04-28" },
+    { id: "qwen3-4b", displayName: "Qwen3 4B", maxOutput: 8192, contextWindowTokens: 131072, abilities: { reasoning: true, functionCall: true }, releasedAt: "2025-04-28" },
+    { id: "qwen3-1.7b", displayName: "Qwen3 1.7B", maxOutput: 8192, contextWindowTokens: 32768, abilities: { reasoning: true, functionCall: true }, releasedAt: "2025-04-28" },
+    { id: "qwen3-0.6b", displayName: "Qwen3 0.6B", maxOutput: 8192, contextWindowTokens: 32768, abilities: { reasoning: true, functionCall: true }, releasedAt: "2025-04-28" },
+    { id: "qwq-plus", displayName: "QwQ Plus", maxOutput: 8192, contextWindowTokens: 131072, abilities: { reasoning: true, functionCall: true, search: true }, releasedAt: "2025-03-05" },
+    { id: "qwen3.5-flash", displayName: "Qwen3.5 Flash", maxOutput: 65536, contextWindowTokens: 1000000, abilities: { reasoning: true, vision: true, functionCall: true, search: true }, enabled: true, releasedAt: "2026-02-24" },
+    { id: "qwen-flash", displayName: "Qwen Flash", maxOutput: 32768, contextWindowTokens: 1000000, abilities: { reasoning: true, functionCall: true, search: true }, releasedAt: "2025-07-28" },
+    { id: "qwen-turbo", displayName: "Qwen Turbo", maxOutput: 16384, contextWindowTokens: 1000000, abilities: { reasoning: true, functionCall: true, search: true }, releasedAt: "2025-07-15" },
+    { id: "qwen3.5-plus", displayName: "Qwen3.5 Plus", maxOutput: 65536, contextWindowTokens: 1000000, abilities: { reasoning: true, vision: true, functionCall: true, search: true }, enabled: true, releasedAt: "2026-02-15" },
+    { id: "qwen-plus", displayName: "Qwen Plus", maxOutput: 32768, contextWindowTokens: 1000000, abilities: { reasoning: true, functionCall: true, search: true } },
+    { id: "qwen3-max", displayName: "Qwen3 Max", maxOutput: 65536, contextWindowTokens: 262144, abilities: { reasoning: true, functionCall: true, search: true }, enabled: true, releasedAt: "2026-01-23" },
+    { id: "qwen3-max-preview", displayName: "Qwen3 Max Preview", maxOutput: 65536, contextWindowTokens: 262144, abilities: { reasoning: true, functionCall: true, search: true }, releasedAt: "2025-10-30" },
+    { id: "qwen-max", displayName: "Qwen Max", maxOutput: 8192, contextWindowTokens: 131072, abilities: { functionCall: true, search: true } },
+    { id: "qwen-long", displayName: "Qwen Long", maxOutput: 32768, contextWindowTokens: 10000000, abilities: { functionCall: true } },
+    { id: "qwen3.5-omni-plus", displayName: "Qwen3.5 Omni Plus", maxOutput: 65536, contextWindowTokens: 262144, abilities: { vision: true, search: true }, releasedAt: "2026-03-30" },
+    { id: "qwen3.5-omni-flash", displayName: "Qwen3.5 Omni Flash", maxOutput: 65536, contextWindowTokens: 262144, abilities: { vision: true, search: true }, releasedAt: "2026-03-30" },
+    { id: "qwen3-omni-flash", displayName: "Qwen3 Omni Flash", maxOutput: 16384, contextWindowTokens: 65536, abilities: { reasoning: true, vision: true, functionCall: true }, releasedAt: "2025-12-04" },
+    { id: "qwen-omni-turbo", displayName: "Qwen Omni Turbo", maxOutput: 2048, contextWindowTokens: 32768, abilities: { vision: true } },
+    { id: "qwen2.5-omni-7b", displayName: "Qwen2.5 Omni 7B", maxOutput: 2048, contextWindowTokens: 32768, abilities: { vision: true } },
+    { id: "qwen-vl-plus", displayName: "Qwen VL Plus", maxOutput: 8192, contextWindowTokens: 131072, abilities: { vision: true } },
+    { id: "qwen-vl-max", displayName: "Qwen VL Max", maxOutput: 8192, contextWindowTokens: 131072, abilities: { vision: true } },
+    { id: "qwen-vl-ocr", displayName: "Qwen VL OCR", maxOutput: 4096, contextWindowTokens: 34096, abilities: { vision: true } },
+    { id: "qwen3-vl-30b-a3b-thinking", displayName: "Qwen3 VL 30B A3B Thinking", maxOutput: 32768, contextWindowTokens: 131072, abilities: { reasoning: true, vision: true } },
+    { id: "qwen3-vl-30b-a3b-instruct", displayName: "Qwen3 VL 30B A3B Instruct", maxOutput: 32768, contextWindowTokens: 131072, abilities: { vision: true } },
+    { id: "qwen3-vl-8b-thinking", displayName: "Qwen3 VL 8B Thinking", maxOutput: 32768, contextWindowTokens: 131072, abilities: { reasoning: true, vision: true } },
+    { id: "qwen3-vl-8b-instruct", displayName: "Qwen3 VL 8B Instruct", maxOutput: 32768, contextWindowTokens: 131072, abilities: { vision: true } },
+    { id: "qwen3-vl-235b-a22b-thinking", displayName: "Qwen3 VL 235B A22B Thinking", maxOutput: 32768, contextWindowTokens: 131072, abilities: { reasoning: true, vision: true } },
+    { id: "qwen3-vl-235b-a22b-instruct", displayName: "Qwen3 VL 235B A22B Instruct", maxOutput: 32768, contextWindowTokens: 131072, abilities: { vision: true } },
+    { id: "qwen3-vl-32b-thinking", displayName: "Qwen3 VL 32B Thinking", maxOutput: 32768, contextWindowTokens: 131072, abilities: { reasoning: true, vision: true } },
+    { id: "qwen3-vl-32b-instruct", displayName: "Qwen3 VL 32B Instruct", maxOutput: 32768, contextWindowTokens: 131072, abilities: { vision: true } },
+    { id: "qwen-math-turbo", displayName: "Qwen Math Turbo", maxOutput: 3072, contextWindowTokens: 4096 },
+    { id: "qwen-math-plus", displayName: "Qwen Math Plus", maxOutput: 3072, contextWindowTokens: 4096 },
+    { id: "qwen-coder-turbo", displayName: "Qwen Coder Turbo", maxOutput: 8192, contextWindowTokens: 131072 },
+    { id: "qwen-coder-plus", displayName: "Qwen Coder Plus", maxOutput: 8192, contextWindowTokens: 131072 },
+    { id: "qwq-32b", displayName: "QwQ 32B", maxOutput: 8192, contextWindowTokens: 131072, abilities: { reasoning: true, search: true }, releasedAt: "2025-03-06" },
+    { id: "qwq-32b-preview", displayName: "QwQ 32B Preview", maxOutput: 16384, contextWindowTokens: 32768, abilities: { reasoning: true }, releasedAt: "2024-11-28" },
+    { id: "qvq-max", displayName: "QVQ Max", maxOutput: 8192, contextWindowTokens: 131072, abilities: { reasoning: true, vision: true }, releasedAt: "2025-05-15" },
+    { id: "qvq-plus", displayName: "QVQ Plus", maxOutput: 8192, contextWindowTokens: 131072, abilities: { reasoning: true, vision: true }, releasedAt: "2025-05-15" },
+    { id: "qvq-72b-preview", displayName: "QVQ 72B Preview", maxOutput: 16384, contextWindowTokens: 32768, abilities: { reasoning: true, vision: true }, releasedAt: "2024-12-25" },
+    { id: "qwen2.5-7b-instruct", displayName: "Qwen2.5 7B", maxOutput: 8192, contextWindowTokens: 131072, abilities: { functionCall: true } },
+    { id: "qwen2.5-14b-instruct", displayName: "Qwen2.5 14B", maxOutput: 8192, contextWindowTokens: 131072, abilities: { functionCall: true } },
+    { id: "qwen2.5-32b-instruct", displayName: "Qwen2.5 32B", maxOutput: 8192, contextWindowTokens: 131072, abilities: { functionCall: true } },
+    { id: "qwen2.5-72b-instruct", displayName: "Qwen2.5 72B", maxOutput: 8192, contextWindowTokens: 131072, abilities: { functionCall: true } },
+    { id: "qwen2.5-14b-instruct-1m", displayName: "Qwen2.5 14B 1M", maxOutput: 8192, contextWindowTokens: 1000000, abilities: { functionCall: true }, releasedAt: "2025-01-27" },
+    { id: "qwen2.5-math-7b-instruct", displayName: "Qwen2.5 Math 7B", maxOutput: 3072, contextWindowTokens: 4096 },
+    { id: "qwen2.5-math-72b-instruct", displayName: "Qwen2.5 Math 72B", maxOutput: 3072, contextWindowTokens: 4096, releasedAt: "2025-07-23" },
+    { id: "qwen2.5-coder-7b-instruct", displayName: "Qwen2.5 Coder 7B", maxOutput: 8192, contextWindowTokens: 131072 },
+    { id: "qwen2.5-coder-14b-instruct", displayName: "Qwen2.5 Coder 14B", maxOutput: 8192, contextWindowTokens: 131072 },
+    { id: "qwen2.5-coder-32b-instruct", displayName: "Qwen2.5 Coder 32B", maxOutput: 8192, contextWindowTokens: 131072 },
+    { id: "qwen2.5-vl-72b-instruct", displayName: "Qwen2.5 VL 72B", maxOutput: 8192, contextWindowTokens: 131072, abilities: { vision: true }, releasedAt: "2025-01-27" },
+    { id: "qwen2.5-vl-32b-instruct", displayName: "Qwen2.5 VL 32B", maxOutput: 8192, contextWindowTokens: 131072, abilities: { vision: true }, releasedAt: "2025-03-24" },
+    { id: "qwen2.5-vl-7b-instruct", displayName: "Qwen2.5 VL 7B", maxOutput: 8192, contextWindowTokens: 131072, abilities: { vision: true }, releasedAt: "2025-01-27" },
+    { id: "deepseek-r1-0528", displayName: "DeepSeek R1 0528", maxOutput: 16384, contextWindowTokens: 131072, abilities: { reasoning: true, functionCall: true, search: true }, releasedAt: "2025-05-28" },
+    { id: "deepseek-v3", displayName: "DeepSeek V3", maxOutput: 8192, contextWindowTokens: 65536, abilities: { functionCall: true, search: true }, releasedAt: "2025-01-27" },
+    { id: "deepseek-r1-distill-qwen-1.5b", displayName: "DeepSeek R1 Distill Qwen 1.5B", maxOutput: 16384, contextWindowTokens: 32768, abilities: { reasoning: true } },
+    { id: "deepseek-r1-distill-qwen-7b", displayName: "DeepSeek R1 Distill Qwen 7B", maxOutput: 16384, contextWindowTokens: 32768, abilities: { reasoning: true } },
+    { id: "deepseek-r1-distill-qwen-14b", displayName: "DeepSeek R1 Distill Qwen 14B", maxOutput: 16384, contextWindowTokens: 32768, abilities: { reasoning: true } },
+    { id: "deepseek-r1-distill-qwen-32b", displayName: "DeepSeek R1 Distill Qwen 32B", maxOutput: 16384, contextWindowTokens: 32768, abilities: { reasoning: true } },
+    { id: "deepseek-r1-distill-llama-8b", displayName: "DeepSeek R1 Distill Llama 8B", maxOutput: 16384, contextWindowTokens: 32768, abilities: { reasoning: true } },
+    { id: "deepseek-r1-distill-llama-70b", displayName: "DeepSeek R1 Distill Llama 70B", maxOutput: 16384, contextWindowTokens: 32768, abilities: { reasoning: true } },
+  ],
+};