From 6a884b4a7560f97169a50449ab0de5ef5782e59c Mon Sep 17 00:00:00 2001 From: David Brailovsky Date: Thu, 16 Jul 2026 15:29:32 +0000 Subject: [PATCH] add kimi-k3 --- packages/ai/scripts/generate-models.ts | 18 ++++++++++++-- .../ai/src/providers/kimi-coding.models.ts | 18 ++++++++++++++ .../ai/src/providers/moonshotai-cn.models.ts | 19 +++++++++++++++ .../ai/src/providers/moonshotai.models.ts | 19 +++++++++++++++ .../ai/src/providers/openrouter.models.ts | 24 ++++++++++++++++--- 5 files changed, 93 insertions(+), 5 deletions(-) diff --git a/packages/ai/scripts/generate-models.ts b/packages/ai/scripts/generate-models.ts index d740182b..7452cc26 100644 --- a/packages/ai/scripts/generate-models.ts +++ b/packages/ai/scripts/generate-models.ts @@ -225,6 +225,16 @@ const DEEPSEEK_V4_THINKING_LEVEL_MAP = { max: "max", } as const; +const KIMI_K3_THINKING_LEVEL_MAP = { + off: null, + minimal: null, + low: null, + medium: null, + high: null, + xhigh: null, + max: "max", +} as const; + const ANT_LING_RING_THINKING_LEVEL_MAP = { off: null, minimal: null, @@ -1663,13 +1673,15 @@ async function loadModelsDevData(): Promise[]> { for (const [modelId, m] of Object.entries(moonshotModels[key])) { if (m.tool_call !== true) continue; + const isKimiK3 = modelId === "kimi-k3"; models.push({ id: modelId, name: m.name || modelId, api: "openai-completions", provider, baseUrl, - reasoning: m.reasoning === true, + reasoning: isKimiK3 || m.reasoning === true, + ...(isKimiK3 ? { thinkingLevelMap: KIMI_K3_THINKING_LEVEL_MAP } : {}), input: m.modalities?.input?.includes("image") ? ["text", "image"] : ["text"], cost: { input: m.cost?.input || 0, @@ -1679,7 +1691,9 @@ async function loadModelsDevData(): Promise[]> { }, contextWindow: m.limit?.context || 4096, maxTokens: m.limit?.output || 4096, - compat: moonshotCompat, + compat: isKimiK3 + ? { ...moonshotCompat, requiresReasoningContentOnAssistantMessages: true } + : moonshotCompat, }); } } diff --git a/packages/ai/src/providers/kimi-coding.models.ts b/packages/ai/src/providers/kimi-coding.models.ts index 32b5e643..6e324784 100644 --- a/packages/ai/src/providers/kimi-coding.models.ts +++ b/packages/ai/src/providers/kimi-coding.models.ts @@ -22,6 +22,24 @@ export const KIMI_CODING_MODELS = { contextWindow: 262144, maxTokens: 32768, } satisfies Model<"anthropic-messages">, + "k3": { + id: "k3", + name: "Kimi K3", + api: "anthropic-messages", + provider: "kimi-coding", + baseUrl: "https://api.kimi.com/coding", + headers: {"User-Agent":"KimiCLI/1.5"}, + reasoning: true, + input: ["text", "image"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 1048576, + maxTokens: 131072, + } satisfies Model<"anthropic-messages">, "kimi-for-coding": { id: "kimi-for-coding", name: "Kimi For Coding", diff --git a/packages/ai/src/providers/moonshotai-cn.models.ts b/packages/ai/src/providers/moonshotai-cn.models.ts index 899f9b11..b5e20355 100644 --- a/packages/ai/src/providers/moonshotai-cn.models.ts +++ b/packages/ai/src/providers/moonshotai-cn.models.ts @@ -168,4 +168,23 @@ export const MOONSHOTAI_CN_MODELS = { contextWindow: 262144, maxTokens: 262144, } satisfies Model<"openai-completions">, + "kimi-k3": { + id: "kimi-k3", + name: "Kimi K3", + api: "openai-completions", + provider: "moonshotai-cn", + baseUrl: "https://api.moonshot.cn/v1", + compat: {"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","supportsStrictMode":false,"thinkingFormat":"deepseek","requiresReasoningContentOnAssistantMessages":true}, + reasoning: true, + thinkingLevelMap: {"off":null,"minimal":null,"low":null,"medium":null,"high":null,"xhigh":null,"max":"max"}, + input: ["text", "image"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 1048576, + maxTokens: 131072, + } satisfies Model<"openai-completions">, } as const; diff --git a/packages/ai/src/providers/moonshotai.models.ts b/packages/ai/src/providers/moonshotai.models.ts index 2ec685e6..9931870d 100644 --- a/packages/ai/src/providers/moonshotai.models.ts +++ b/packages/ai/src/providers/moonshotai.models.ts @@ -168,4 +168,23 @@ export const MOONSHOTAI_MODELS = { contextWindow: 262144, maxTokens: 262144, } satisfies Model<"openai-completions">, + "kimi-k3": { + id: "kimi-k3", + name: "Kimi K3", + api: "openai-completions", + provider: "moonshotai", + baseUrl: "https://api.moonshot.ai/v1", + compat: {"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","supportsStrictMode":false,"thinkingFormat":"deepseek","requiresReasoningContentOnAssistantMessages":true}, + reasoning: true, + thinkingLevelMap: {"off":null,"minimal":null,"low":null,"medium":null,"high":null,"xhigh":null,"max":"max"}, + input: ["text", "image"], + cost: { + input: 0, + output: 0, + cacheRead: 0, + cacheWrite: 0, + }, + contextWindow: 1048576, + maxTokens: 131072, + } satisfies Model<"openai-completions">, } as const; diff --git a/packages/ai/src/providers/openrouter.models.ts b/packages/ai/src/providers/openrouter.models.ts index 8d46e8ce..b000c871 100644 --- a/packages/ai/src/providers/openrouter.models.ts +++ b/packages/ai/src/providers/openrouter.models.ts @@ -1383,6 +1383,24 @@ export const OPENROUTER_MODELS = { contextWindow: 327680, maxTokens: 16384, } satisfies Model<"openai-completions">, + "meta/muse-spark-1.1": { + id: "meta/muse-spark-1.1", + name: "Meta: Muse Spark 1.1", + api: "openai-completions", + provider: "openrouter", + baseUrl: "https://openrouter.ai/api/v1", + compat: {"supportsDeveloperRole":false,"thinkingFormat":"openrouter"}, + reasoning: true, + input: ["text", "image"], + cost: { + input: 1.25, + output: 4.25, + cacheRead: 0.15, + cacheWrite: 0, + }, + contextWindow: 1048576, + maxTokens: 4096, + } satisfies Model<"openai-completions">, "minimax/minimax-m1": { id: "minimax/minimax-m1", name: "MiniMax: MiniMax M1", @@ -4670,9 +4688,9 @@ export const OPENROUTER_MODELS = { thinkingLevelMap: {"xhigh":"xhigh"}, input: ["text"], cost: { - input: 0.9408, - output: 2.9568, - cacheRead: 0.17472, + input: 0.9366, + output: 2.9436, + cacheRead: 0.17394, cacheWrite: 0, }, contextWindow: 1048576,