📰 技术博客
Kimi K2 Thinking 是最新、性能最强的开源思维模型。从 Kimi K2 开始,我们将其打造为能够逐步推理并动态调用工具的思维智能体。通过显著提升多步推理深度,并在 200–300 次连续调用中保持稳定的工具使用能力,它在 Humanity's Last Exam (HLE)、BrowseComp 等基准测试中树立了新的技术标杆。同时,K2 Thinking 是原生 INT4 量化模型,具备 256k 上下文窗口,实现了推理延迟和 GPU 内存占用的无损降低。
| 架构 | 混合专家模型(Mixture-of-Experts, MoE) |
| 总参数量 | 1T |
| 激活参数量 | 32B |
| 层数(含密集层) | 61 |
| 密集层数 | 1 |
| 注意力隐藏维度 | 7168 |
| MoE隐藏维度(每专家) | 2048 |
| 注意力头数 | 64 |
| 专家数量 | 384 |
| 每token选择专家数 | 8 |
| 共享专家数量 | 1 |
| 词汇表大小 | 160K |
| 上下文长度 | 256K |
| 注意力机制 | MLA |
| 激活函数 | SwiGLU |
推理任务
| 基准测试 | 设置 | K2 Thinking | GPT-5 (High) | Claude Sonnet 4.5 (Thinking) | K2 0905 | DeepSeek-V3.2 | Grok-4 |
|---|---|---|---|---|---|---|---|
| HLE(纯文本) | 无工具 | 23.9 | 26.3 | 19.8* | 7.9 | 19.8 | 25.4 |
| 有工具 | 44.9 | 41.7* | 32.0* | 21.7 | 20.3* | 41.0 | |
| 增强模式 | 51.0 | 42.0 | - | - | - | 50.7 | |
| AIME25 | 无工具 | 94.5 | 94.6 | 87.0 | 51.0 | 89.3 | 91.7 |
| 有Python | 99.1 | 99.6 | 100.0 | 75.2 | 58.1* | 98.8 | |
| 增强模式 | 100.0 | 100.0 | - | - | - | 100.0 | |
| HMMT25 | 无工具 | 89.4 | 93.3 | 74.6* | 38.8 | 83.6 | 90.0 |
| 有Python | 95.1 | 96.7 | 88.8* | 70.4 | 49.5* | 93.9 | |
| 增强模式 | 97.5 | 100.0 | - | - | - | 96.7 | |
| IMO-AnswerBench | 无工具 | 78.6 | 76.0* | 65.9* | 45.8 | 76.0* | 73.1 |
| GPQA | 无工具 | 84.5 | 85.7 | 83.4 | 74.2 | 79.9 | 87.5 |
通用任务
| 基准测试 | 设置 | K2 Thinking | GPT-5 (High) | Claude Sonnet 4.5 (Thinking) | K2 0905 | DeepSeek-V3.2 |
|---|---|---|---|---|---|---|
| MMLU-Pro | 无工具 | 84.6 | 87.1 | 87.5 | 81.9 | 85.0 |
| MMLU-Redux | 无工具 | 94.4 | 95.3 | 95.6 | 92.7 | 93.7 |
| 长篇写作 | 无工具 | 73.8 | 71.4 | 79.8 | 62.8 | 72.5 |
| HealthBench | 无工具 | 58.0 | 67.2 | 44.2 | 43.8 | 46.9 |
智能体搜索任务
| 基准测试 | 设置 | K2 Thinking | GPT-5 (High) | Claude Sonnet 4.5 (Thinking) | K2 0905 | DeepSeek-V3.2 |
|---|---|---|---|---|---|---|
| BrowseComp | 有工具 | 60.2 | 54.9 | 24.1 | 7.4 | 40.1 |
| BrowseComp-ZH | 有工具 | 62.3 | 63.0* | 42.4* | 22.2 | 47.9 |
| Seal-0 | 有工具 | 56.3 | 51.4* | 53.4* | 25.2 | 38.5* |
| FinSearchComp-T3 | 有工具 | 47.4 | 48.5* | 44.0* | 10.4 | 27.0* |
| Frames | 有工具 | 87.0 | 86.0* | 85.0* | 58.1 | 80.2* |
编码任务
| 基准测试 | 设置 | K2 Thinking | GPT-5 (High) | Claude Sonnet 4.5 (Thinking) | K2 0905 | DeepSeek-V3.2 |
|---|---|---|---|---|---|---|
| SWE-bench Verified | 有工具 | 71.3 | 74.9 | 77.2 | 69.2 | 67.8 |
| SWE-bench Multilingual | 有工具 | 61.1 | 55.3* | 68.0 | 55.9 | 57.9 |
| Multi-SWE-bench | 有工具 | 41.9 | 39.3* | 44.3 | 33.5 | 30.6 |
| SciCode | 无工具 | 44.8 | 42.9 | 44.7 | 30.7 | 37.7 |
| LiveCodeBenchV6 | 无工具 | 83.1 | 87.0* | 64.0* | 56.1* | 74.1 |
| OJ-Bench (cpp) | 无工具 | 48.7 | 56.2* | 30.4* | 25.5* | 38.2* |
| Terminal-Bench | 有模拟工具(JSON) | 47.1 | 43.8 | 51.0 | 44.5 | 37.7 |
为确保快速、轻量的使用体验,我们在kimi.com的聊天模式下选择性采用工具子集并减少工具调用步骤。因此,在kimi.com上聊天可能无法复现我们的基准测试分数。我们的智能体模式即将更新,以体现K2 Thinking的全部能力。
测试详情:
2.1. 所有基准测试均在温度=1.0和256k上下文长度下对K2 Thinking进行评估,SciCode除外,我们遵循其官方温度设置0.0。
2.2. HLE(无工具)、AIME25、HMMT25和GPQA的思维token预算上限为96k,而IMO-Answer Bench、LiveCodeBench和OJ-Bench的上限为128k。长篇写作的完成token预算上限为32k。
2.3. 对于AIME和HMMT(无工具),我们报告32次运行的平均值(avg@32)。对于AIME和HMMT(有Python),报告16次运行的平均值(avg@16)。对于IMO-AnswerBench,报告8次运行的平均值(avg@8)。
基线:
3.1 GPT-5、Claude-4.5-sonnet、Grok-4和DeepSeek-V3.2的结果引自GPT-5帖子、GPT-5开发者帖子、GPT-5系统卡片、claude-sonnet-4-5帖子、grok-4帖子、deepseek-v3.2帖子、公开Terminal-Bench排行榜(Terminus-2)、公开Vals AI排行榜和artificialanalysis。对于无可用公开分数的基准测试,我们在与K2 Thinking相同的条件下重新测试,并标有星号(*)。GPT-5测试中,我们将推理努力设置为高。
3.2 官方帖子中GPT-5和Grok-4在带工具的HLE完整集上的得分分别为35.2和38.6。在我们对HLE纯文本子集的内部评估中,GPT-5得分为41.7,Grok-4得分为38.6(Grok-4发布时引用纯文本子集得分为41.0)。GPT-5在HLE纯文本无工具设置下的得分,我们使用Scale.ai的数据。官方GPT5在HLE完整集无工具设置下的得分为24.8。
3.3 对于IMO-AnswerBench:GPT-5在基准测试论文中得分为65.6。我们通过官方API重新评估GPT-5,获得76分。
关于HLE(有工具)和智能体搜索基准测试:
4.1. K2 Thinking配备了搜索、代码解释器和网页浏览工具。
4.2. BrowseComp-ZH、Seal-0和FinSearchComp-T3独立运行4次,并报告平均值(avg@4)。
4.3. 评估使用o3-mini作为评判器,配置与官方HLE设置完全相同;评判提示直接取自官方仓库。
4.4. 在HLE上,最大步骤限制为120步,每步推理预算为48k token;在智能体搜索任务上,限制为300步,每步推理预算为24k token。
4.5. 当工具执行结果导致累积输入超过模型上下文限制(256k)时,我们采用简单的上下文管理策略,隐藏所有先前的工具输出。
4.6. 访问Hugging Face可能导致某些基准测试(如HLE)的数据泄露。K2 Thinking在不屏蔽Hugging Face的情况下可在HLE上达到51.3分。为确保公平严谨的比较,我们在测试期间屏蔽了对Hugging Face的访问。
关于编码任务:
5.1. Terminal-Bench分数使用默认智能体框架(Terminus-2)和提供的JSON解析器获得。
5.2. 对于其他编码任务,结果使用我们内部的评估工具生成。该工具源自SWE-agent,但我们限制了Bash和Edit工具的上下文窗口,并重写了系统提示以匹配任务语义。
5.3. 所有报告的编码任务分数均为5次独立运行的平均值。
增强模式:K2 Thinking增强模式采用高效并行策略:首先同时生成8条轨迹,然后通过反思聚合所有输出来生成最终结果。GPT-5的增强模式指官方GPT-5 Pro分数。
低比特量化是大型推理服务器降低推理延迟和 GPU 内存占用的有效手段。然而,思维模型的解码长度较长,因此量化往往会导致性能大幅下降。
为应对这一挑战,我们在训练后阶段采用量化感知训练(Quantization-Aware Training, QAT),对 MoE 组件应用 INT4 仅权重量化。这使得 K2 Thinking 能够支持原生 INT4 推理,生成速度提升约 2 倍,同时实现了最先进的性能。所有基准测试结果均在 INT4 精度下报告。
checkpoint 以 compressed-tensors 格式保存,支持大多数主流推理引擎。如果您需要 FP8 或 BF16 等更高精度的 checkpoint,可参考 compressed-tensors 官方仓库 解压 int4 权重并转换为任何更高精度。
[!Note] 您可以在 https://platform.moonshot.ai 访问 K2 Thinking 的 API,我们提供与 OpenAI/Anthropic 兼容的 API。
目前,Kimi-K2-Thinking 推荐在以下推理引擎上运行:
部署示例可在 模型部署指南 中找到。
本地推理服务启动后,您可以通过聊天端点与其进行交互:
def simple_chat(client: openai.OpenAI, model_name: str):
messages = [
{"role": "system", "content": "You are Kimi, an AI assistant created by Moonshot AI."},
{"role": "user", "content": [{"type": "text", "text": "which one is bigger, 9.11 or 9.9? think carefully."}]},
]
response = client.chat.completions.create(
model=model_name,
messages=messages,
stream=False,
temperature=1.0,
max_tokens=4096
)
print(f"k2 answer: {response.choices[0].message.content}")
print("=====below is reasoning content======")
print(f"reasoning content: {response.choices[0].message.reasoning_content}")[!NOTE] Kimi-K2-Thinking 的推荐温度参数为
temperature = 1.0。 若无需特殊指令,上述系统提示词是一个不错的默认选择。
Kimi-K2-Thinking 与 Kimi-K2-Instruct 具有相同的工具调用设置。
要启用工具调用,需在每次请求中传入可用工具列表,之后模型会自主决定何时以及如何调用这些工具。
以下示例展示了端到端调用天气工具的流程:
# Your tool implementation
def get_weather(city: str) -> dict:
return {"weather": "Sunny"}
# Tool schema definition
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "Retrieve current weather information. Call this when the user asks about the weather.",
"parameters": {
"type": "object",
"required": ["city"],
"properties": {
"city": {
"type": "string",
"description": "Name of the city"
}
}
}
}
}]
# Map tool names to their implementations
tool_map = {
"get_weather": get_weather
}
def tool_call_with_client(client: OpenAI, model_name: str):
messages = [
{"role": "system", "content": "You are Kimi, an AI assistant created by Moonshot AI."},
{"role": "user", "content": "What's the weather like in Beijing today? Use the tool to check."}
]
finish_reason = None
while finish_reason is None or finish_reason == "tool_calls":
completion = client.chat.completions.create(
model=model_name,
messages=messages,
temperature=1.0,
tools=tools, # tool list defined above
tool_choice="auto"
)
choice = completion.choices[0]
finish_reason = choice.finish_reason
if finish_reason == "tool_calls":
messages.append(choice.message)
for tool_call in choice.message.tool_calls:
tool_call_name = tool_call.function.name
tool_call_arguments = json.loads(tool_call.function.arguments)
tool_function = tool_map[tool_call_name]
tool_result = tool_function(**tool_call_arguments)
print("tool_result:", tool_result)
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"name": tool_call_name,
"content": json.dumps(tool_result)
})
print("-" * 100)
print(choice.message.content)tool_call_with_client 函数实现了从用户查询到工具执行的完整流程。
该流程要求推理引擎支持 Kimi-K2 的原生工具解析逻辑。
更多信息,请参见 工具调用指南。
代码仓库和模型权重均基于 Modified MIT License 发布。
详见 第三方声明
如有任何问题,请通过 support@moonshot.cn 与我们联系。