MoonshotAI/Kimi-K2-Thinking
模型介绍文件和版本Pull Requests讨论分析
下载使用量0
Kimi K2: Open Agentic Intellignece

Chat Homepage
Hugging Face Twitter Follow Discord
License

📰  技术博客

1. 模型介绍

Kimi K2 Thinking 是最新、性能最强的开源思维模型。从 Kimi K2 开始,我们将其打造为能够逐步推理并动态调用工具的思维智能体。通过显著提升多步推理深度,并在 200–300 次连续调用中保持稳定的工具使用能力,它在 Humanity's Last Exam (HLE)、BrowseComp 等基准测试中树立了新的技术标杆。同时,K2 Thinking 是原生 INT4 量化模型,具备 256k 上下文窗口,实现了推理延迟和 GPU 内存占用的无损降低。

核心特性

  • 深度思维与工具编排:端到端训练实现思维链推理与函数调用的无缝交织,支持自主研究、编码和写作等可持续数百步且无偏差的工作流。
  • 原生INT4量化:在训练后阶段采用量化感知训练(QAT),在低延迟模式下实现2倍无损加速。
  • 稳定的长程智能体能力:在连续200-300次工具调用中保持连贯的目标导向行为,超越了之前在30-50步后性能下降的模型。

2. 模型概述

架构混合专家模型(Mixture-of-Experts, MoE)
总参数量1T
激活参数量32B
层数(含密集层)61
密集层数1
注意力隐藏维度7168
MoE隐藏维度(每专家)2048
注意力头数64
专家数量384
每token选择专家数8
共享专家数量1
词汇表大小160K
上下文长度256K
注意力机制MLA
激活函数SwiGLU

3. 评估结果

推理任务

基准测试设置K2 ThinkingGPT-5
(High)
Claude Sonnet 4.5
(Thinking)
K2 0905DeepSeek-V3.2Grok-4
HLE(纯文本)无工具23.926.319.8*7.919.825.4
有工具44.941.7*32.0*21.720.3*41.0
增强模式51.042.0---50.7
AIME25无工具94.594.687.051.089.391.7
有Python99.199.6100.075.258.1*98.8
增强模式100.0100.0---100.0
HMMT25无工具89.493.374.6*38.883.690.0
有Python95.196.788.8*70.449.5*93.9
增强模式97.5100.0---96.7
IMO-AnswerBench无工具78.676.0*65.9*45.876.0*73.1
GPQA无工具84.585.783.474.279.987.5

通用任务

基准测试设置K2 ThinkingGPT-5
(High)
Claude Sonnet 4.5
(Thinking)
K2 0905DeepSeek-V3.2
MMLU-Pro无工具84.687.187.581.985.0
MMLU-Redux无工具94.495.395.692.793.7
长篇写作无工具73.871.479.862.872.5
HealthBench无工具58.067.244.243.846.9

智能体搜索任务

基准测试设置K2 ThinkingGPT-5
(High)
Claude Sonnet 4.5
(Thinking)
K2 0905DeepSeek-V3.2
BrowseComp有工具60.254.924.17.440.1
BrowseComp-ZH有工具62.363.0*42.4*22.247.9
Seal-0有工具56.351.4*53.4*25.238.5*
FinSearchComp-T3有工具47.448.5*44.0*10.427.0*
Frames有工具87.086.0*85.0*58.180.2*

编码任务

基准测试设置K2 ThinkingGPT-5
(High)
Claude Sonnet 4.5
(Thinking)
K2 0905DeepSeek-V3.2
SWE-bench Verified有工具71.374.977.269.267.8
SWE-bench Multilingual有工具61.155.3*68.055.957.9
Multi-SWE-bench有工具41.939.3*44.333.530.6
SciCode无工具44.842.944.730.737.7
LiveCodeBenchV6无工具83.187.0*64.0*56.1*74.1
OJ-Bench (cpp)无工具48.756.2*30.4*25.5*38.2*
Terminal-Bench有模拟工具(JSON)47.143.851.044.537.7
脚注
  1. 为确保快速、轻量的使用体验,我们在kimi.com的聊天模式下选择性采用工具子集并减少工具调用步骤。因此,在kimi.com上聊天可能无法复现我们的基准测试分数。我们的智能体模式即将更新,以体现K2 Thinking的全部能力。

  2. 测试详情:
     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. 基线:
     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分。

  4. 关于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. 关于编码任务:
     5.1. Terminal-Bench分数使用默认智能体框架(Terminus-2)和提供的JSON解析器获得。
     5.2. 对于其他编码任务,结果使用我们内部的评估工具生成。该工具源自SWE-agent,但我们限制了Bash和Edit工具的上下文窗口,并重写了系统提示以匹配任务语义。
     5.3. 所有报告的编码任务分数均为5次独立运行的平均值。

  6. 增强模式:K2 Thinking增强模式采用高效并行策略:首先同时生成8条轨迹,然后通过反思聚合所有输出来生成最终结果。GPT-5的增强模式指官方GPT-5 Pro分数。

4. 原生 INT4 量化

低比特量化是大型推理服务器降低推理延迟和 GPU 内存占用的有效手段。然而,思维模型的解码长度较长,因此量化往往会导致性能大幅下降。

为应对这一挑战,我们在训练后阶段采用量化感知训练(Quantization-Aware Training, QAT),对 MoE 组件应用 INT4 仅权重量化。这使得 K2 Thinking 能够支持原生 INT4 推理,生成速度提升约 2 倍,同时实现了最先进的性能。所有基准测试结果均在 INT4 精度下报告。

checkpoint 以 compressed-tensors 格式保存,支持大多数主流推理引擎。如果您需要 FP8 或 BF16 等更高精度的 checkpoint,可参考 compressed-tensors 官方仓库 解压 int4 权重并转换为任何更高精度。

5. 部署

[!Note] 您可以在 https://platform.moonshot.ai 访问 K2 Thinking 的 API,我们提供与 OpenAI/Anthropic 兼容的 API。

目前,Kimi-K2-Thinking 推荐在以下推理引擎上运行:

  • vLLM
  • SGLang
  • KTransformers

部署示例可在 模型部署指南 中找到。


6. 模型使用

聊天补全

本地推理服务启动后,您可以通过聊天端点与其进行交互:

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 的原生工具解析逻辑。 更多信息,请参见 工具调用指南。


7. 许可协议

代码仓库和模型权重均基于 Modified MIT License 发布。


8. 第三方声明

详见 第三方声明


9. 联系我们

如有任何问题,请通过 support@moonshot.cn 与我们联系。