add deferred tool loading for kimi-k3

This commit is contained in:
David Brailovsky
2026-07-16 15:39:22 +00:00
parent 3524cd4c85
commit 70c5763297
5 changed files with 51 additions and 13 deletions
+6 -3
View File
@@ -1675,6 +1675,11 @@ async function loadModelsDevData(): Promise<Model<any>[]> {
if (m.tool_call !== true) continue;
const isKimiK3 = modelId === "kimi-k3";
const compat = isKimiK3 ? { ...moonshotCompat } : moonshotCompat;
if (isKimiK3) {
compat.requiresReasoningContentOnAssistantMessages = true;
compat.deferredToolsMode = "kimi";
}
models.push({
id: modelId,
name: m.name || modelId,
@@ -1692,9 +1697,7 @@ async function loadModelsDevData(): Promise<Model<any>[]> {
},
contextWindow: m.limit?.context || 4096,
maxTokens: m.limit?.output || 4096,
compat: isKimiK3
? { ...moonshotCompat, requiresReasoningContentOnAssistantMessages: true }
: moonshotCompat,
compat,
});
}
}
@@ -174,7 +174,7 @@ export const MOONSHOTAI_CN_MODELS = {
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},
compat: {"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","supportsStrictMode":false,"thinkingFormat":"deepseek","requiresReasoningContentOnAssistantMessages":true,"deferredToolsMode":"kimi"},
reasoning: true,
thinkingLevelMap: {"off":null,"minimal":null,"low":null,"medium":null,"high":null,"xhigh":null,"max":"max"},
input: ["text", "image"],
@@ -174,7 +174,7 @@ export const MOONSHOTAI_MODELS = {
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},
compat: {"supportsStore":false,"supportsDeveloperRole":false,"supportsReasoningEffort":false,"maxTokensField":"max_tokens","supportsStrictMode":false,"thinkingFormat":"deepseek","requiresReasoningContentOnAssistantMessages":true,"deferredToolsMode":"kimi"},
reasoning: true,
thinkingLevelMap: {"off":null,"minimal":null,"low":null,"medium":null,"high":null,"xhigh":null,"max":"max"},
input: ["text", "image"],
+26 -8
View File
@@ -1923,6 +1923,24 @@ export const OPENROUTER_MODELS = {
contextWindow: 262144,
maxTokens: 262144,
} satisfies Model<"openai-completions">,
"moonshotai/kimi-k3": {
id: "moonshotai/kimi-k3",
name: "MoonshotAI: Kimi K3",
api: "openai-completions",
provider: "openrouter",
baseUrl: "https://openrouter.ai/api/v1",
compat: {"supportsDeveloperRole":false,"thinkingFormat":"openrouter"},
reasoning: true,
input: ["text", "image"],
cost: {
input: 3,
output: 15,
cacheRead: 0.3,
cacheWrite: 0,
},
contextWindow: 1048576,
maxTokens: 4096,
} satisfies Model<"openai-completions">,
"nex-agi/nex-n2-mini": {
id: "nex-agi/nex-n2-mini",
name: "Nex AGI: Nex-N2-Mini",
@@ -4688,9 +4706,9 @@ export const OPENROUTER_MODELS = {
thinkingLevelMap: {"xhigh":"xhigh"},
input: ["text"],
cost: {
input: 0.9366,
output: 2.9436,
cacheRead: 0.17394,
input: 0.9338,
output: 2.9348,
cacheRead: 0.17342,
cacheWrite: 0,
},
contextWindow: 1048576,
@@ -4832,13 +4850,13 @@ export const OPENROUTER_MODELS = {
reasoning: true,
input: ["text", "image"],
cost: {
input: 0.66,
output: 3.41,
cacheRead: 0.15,
input: 3,
output: 15,
cacheRead: 0.3,
cacheWrite: 0,
},
contextWindow: 262144,
maxTokens: 262144,
contextWindow: 1048576,
maxTokens: 4096,
} satisfies Model<"openai-completions">,
"~openai/gpt-latest": {
id: "~openai/gpt-latest",
@@ -1890,6 +1890,23 @@ export const VERCEL_AI_GATEWAY_MODELS = {
contextWindow: 262144,
maxTokens: 32768,
} satisfies Model<"anthropic-messages">,
"moonshotai/kimi-k3": {
id: "moonshotai/kimi-k3",
name: "Kimi K3",
api: "anthropic-messages",
provider: "vercel-ai-gateway",
baseUrl: "https://ai-gateway.vercel.sh",
reasoning: true,
input: ["text", "image"],
cost: {
input: 3,
output: 15,
cacheRead: 0.3,
cacheWrite: 0,
},
contextWindow: 1000000,
maxTokens: 256000,
} satisfies Model<"anthropic-messages">,
"nvidia/nemotron-3-nano-30b-a3b": {
id: "nvidia/nemotron-3-nano-30b-a3b",
name: "Nemotron 3 Nano 30B A3B",