基准测试要求结果可复现。Kimi 各模型在不同评测场景(代码/数学/多模态/Agent)下有不同的推荐参数配置,temperature 大多为 1.0,流式输出强制要求,思考模式有额外约束。本文是用于跑 benchmark 前的参数对照手册。

Kimi API Benchmark 最佳实践

为什么基准测试需要固定参数

Benchmark 结果的可信度依赖于严格的参数复现。相同问题,temperature 不同、max_tokens 不同,结果可能差异显著。官方推荐以下配置作为基准测试的起点。


推荐参数配置

模型 场景 temperature max_tokens top_p 备注
kimi-k2.6 代码 1.0 256k 0.95 推荐开 thinking
kimi-k2.6 数学推理 1.0 65536 0.95
kimi-k2.6 多模态 1.0 32768 0.95 图片/视频输入
kimi-k2.6 Agent 1.0 65536 0.95 多轮含完整历史
kimi-k2.5 代码 0.6 65536 0.95
kimi-k2-thinking 数学/推理 1.0 无上限 0.95 thinking 不可关闭

流式输出(必须开启)

from openai import OpenAI

client = OpenAI(
    api_key="$MOONSHOT_API_KEY",
    base_url="https://api.moonshot.cn/v1",
)

completion = client.chat.completions.create(
    model="kimi-k2.6",
    messages=[{"role": "user", "content": "请解一道竞赛数学题:..."}],
    stream=True,          # 基准测试必须开启流式
    temperature=1.0,
    top_p=0.95,
    max_tokens=65536,
)

result = ""
for chunk in completion:
    delta = chunk.choices[0].delta
    if delta.content:
        result += delta.content

print(result)

非流式模式风险:非流式模式(stream=False)在长时间请求时容易出现随机连接中断,难以排查,基准测试中不推荐使用。


重试逻辑(必须实现)

网络或服务器异常时需要重试,否则评测结果会因偶发失败而不完整:

import time

def benchmark_query(messages, max_retries=3):
    for attempt in range(max_retries):
        try:
            return client.chat.completions.create(
                model="kimi-k2.6",
                messages=messages,
                stream=True,
                temperature=1.0,
                top_p=0.95,
                max_tokens=65536,
            )
        except Exception as e:
            if attempt == max_retries - 1:
                raise
            time.sleep(2 ** attempt)  # 指数退避

思考模式(Thinking)下的约束

启用 thinking 时有额外限制:

  • tool_choice 只能是 "auto""none",不可指定特定工具
  • 多轮工具调用中,每轮的 reasoning_content 必须原样传入下一轮
  • $web_search 内置工具与 thinking 模式不兼容
# 开启 thinking 的标准配置
extra_body={"thinking": {"type": "enabled"}}
# 如需关闭(简单任务)
extra_body={"thinking": {"type": "disabled"}}

并发控制

高并发评测时注意以下限速约束:

  • 过高并发会触发 RPM/TPM 限速,影响测试准确性(限速错误不应计入失败案例)
  • 建议每个评测 worker 之间加适当间隔(如 500ms~1s)
  • 检查响应头中的 x-ratelimit-remaining-requests 字段实时监控剩余配额

常见问题

Q: 基准测试时 temperature 设为 0 可以吗?

A: kimi-k2.6 在思考模式下必须用 temperature=1.0,非思考模式必须用 temperature=0.6。设置 temperature=0 会报参数错误。如需更确定性的输出,用较低的 temperature=0.6 + 非思考模式。

Q: 多次运行结果不一致怎么办?

A: 即使固定参数,LLM 输出也存在随机性。建议每道题运行 3~5 次取多数投票(majority voting),这也是学术基准测试的标准做法。

Q: 如何报告基准测试问题或争议结果?

A: 可联系 Moonshot 官方邮箱(官网底部),附上复现步骤、参数配置和对比结果截图。