Kimi K3 对比 Claude Opus 4.8:研究生级数学、物理与编程实测
在同一 Crazyrouter OpenAI-compatible API 上,用研究生级马尔可夫链首达时间、带阻尼耦合振子频响和依赖调度算法对比 kimi-k3 与 claude-opus-4-8,记录输出完整性、正确性、延迟和独立验收结果。

Kimi K3 对比 Claude Opus 4.8:研究生级数学、物理与编程实测#

大模型在简单算术题上都能给出漂亮答案,真正拉开差距的往往是:推导是否能在输出预算内结束、矩阵和边界条件有没有写对、生成的程序是否真的满足题目语义。
这次我把题目整体升级到本科毕业设计或研究生课程的难度,使用同一组提示词测试 kimi-k3 和 claude-opus-4-8:
- 数学:三状态有限马尔可夫链的平稳分布、首达时间、一阶与二阶矩;
- 物理:带接地阻尼和耦合阻尼的二自由度振子,求无阻尼模态与复频响;
- 编程:带依赖闭包、时间窗口、每日容量和三层目标函数的精确调度算法。
先给结论:
claude-opus-4-8三题都在本次预算内完整返回,三题finish_reason均为stop;kimi-k3必须把temperature设为1,在6000completion token 上限下,三题都以finish_reason=length结束,三次可见content长度均为 0;- Opus 4.8 的数学和物理答案通过了独立数值核验;
- Opus 4.8 的调度代码通过了它自带的 13 个断言,但独立增加“前置任务必须先完成”的探针后,发现它只保证依赖任务同时被选中,没有保证前置任务排在后置任务之前;
- 本轮成功请求平均延迟:Opus 4.8 约
70.59 秒,Kimi K3 约225.47 秒。这个差异只能代表本轮路由和提示词条件,不能直接当作长期 SLA。
测试环境与参数限制#
测试时间为北京时间 2026 年 7 月 18 日至 19 日,先通过 /v1/models 确认两个模型 ID 都可见:
kimi-k3
claude-opus-4-8
请求统一走 Crazyrouter 的 OpenAI-compatible 接口:
POST https://cn.crazyrouter.com/v1/chat/completions
公共条件:
相同 system prompt
相同用户题目
不启用工具和联网
模型参数不能完全相同,因为上游对 Kimi K3 有硬约束:
| 模型 | temperature | max_tokens | 结果 |
|---|---|---|---|
kimi-k3 | 1(否则 HTTP 400) | 6000 | 三题均 length |
claude-opus-4-8 | 0.1 | 9000 | 三题均 stop |
第一次误用 temperature=0.1 调 Kimi K3 时,接口明确返回:
Parameter temperature must be 1 for this model.
因此本文把这项参数限制记录为测试事实,不把失败隐藏成“模型不可用”。在把结果用于生产选型时,也应该把模型专属参数能力写进配置层,而不是假设所有模型都接受同一组采样参数。
结果总表#
| 任务 | Kimi K3 | Claude Opus 4.8 | 独立判定 |
|---|---|---|---|
| 马尔可夫链首达时间 | 235.420 s,6000 completion,5997 reasoning,length,content 为空 | 57.870 s,4764 completion,stop | Opus 完整并正确,Kimi 未交付可见答案 |
| 二自由度耦合振子 | 204.568 s,6000 completion,5997 reasoning,length,content 为空 | 64.966 s,5284 completion,stop | Opus 完整并通过数值核验 |
| 依赖调度算法 | 236.434 s,6000 completion,5997 reasoning,length,content 为空 | 88.934 s,6857 completion,stop | Opus 主体可运行,但遗漏依赖先后约束 |
Kimi 三题的共同形态非常一致:接口返回了模型名和 usage,但 message.content 没有可交付的最终答案。对于需要把结果直接展示给用户或交给编译器的应用,这应当判定为“任务未完成”,而不是“模型已经答对,只是日志没记录”。
数学题:有限状态马尔可夫链的首达时间与方差#
题目使用转移矩阵:
目标状态为 3,定义:
这不是把概率代入公式就能完成的题,至少要处理平稳分布、暂态子矩阵、首达时间的一阶矩和二阶矩,并明确目标态边界 t_3=s_3=0。
Opus 4.8 的结果#
它给出的平稳分布为:
并逐分量验证了 πP=π。
以 {1,2} 为暂态状态,得到:
一阶矩方程为:
所以:
二阶矩使用:
得到:
我用 Fraction 做了独立方程求解,结果与 Opus 完全一致;把 t 和 s 代回两条首步方程也都成立。数学题的判定是“完整通过”。
Kimi K3 的结果#
Kimi K3 在 temperature=1 和 max_tokens=6000 下运行了约 235 秒,usage 显示 completion_tokens=6000、reasoning_tokens=5997,finish_reason=length,可见 content 为空。
这意味着本轮不能从 Kimi 的输出判断它是否会做这道马尔可夫链题。能确认的只有:在当前接口、提示词和预算下,它没有把推理收束为最终可见答案。
物理题:带阻尼耦合振子的矩阵与频响#
第二题采用两个质量块的二自由度系统:
m1=1.5 kg,m2=1.0 kg
k1=120 N/m,k2=80 N/m,k3=150 N/m
c1=1.2 N·s/m,c2=0.8 N·s/m,c3=1.5 N·s/m
F(t)=10 cos(8t) N
k2 与 c2 是两质量之间的耦合元件,c1 和 c3 是各自接地阻尼。题目要求先求无阻尼固有模态,再在 ω=8 rad/s 下求复振幅,因此不能把所有阻尼简单塞进对角矩阵。
正确矩阵#
Opus 4.8 写出了:
无阻尼特征方程给出的固有角频率为:
对应模态比 X2/X1 为 0.6173 和 -2.4298,分别表示同相与反相模态。
ω=8 时的复频响#
复动态刚度矩阵:
独立复数计算得到:
| 量 | 参考值 |
|---|---|
| ` | X1 |
∠X1 | -12.1524° |
| ` | X2 |
∠X2 | -13.9035° |
| ` | X2/X1 |
| 相位差 | -1.7511° 左右 |
Opus 的能量检查也通过:平均耗散功率约为 1.2574 W,与外力输入功率在舍入误差内一致。它还正确解释了:如果把 c2 错当成接地阻尼,非对角阻尼项 C12=C21=-0.8 会被错误清零,能量传递与相位结果都会改变。
Kimi K3 的结果#
Kimi K3 在约 204.6 秒后耗尽 6000 token,仍然是 finish_reason=length 且 content 为空。由于没有最终方程和数值,无法评价其物理建模是否正确,只能把本轮记录为“预算内未交付”。
编程题:依赖闭包、时间窗口和精确调度#
编程题要求实现:
schedule_jobs(jobs, dependencies, capacity_by_day)
每个任务有 duration、release_day、deadline_day 和 value;任务必须完整安排在单日,每天有容量上限,依赖表示前置任务必须在后置任务开始前完成。目标按以下顺序比较:
- 总价值最大;
- 总时长更小;
- 排序后的任务 ID 列表按字典序更小。
这道题比普通“背包 + 排序”更难,因为需要同时处理:
- 直接和间接依赖闭包;
- 未知依赖与环检测;
- 每日容量和任务时间窗口;
- 可行子集的精确装箱;
- 多层 tie-break。
Opus 4.8 的实现表现#
Opus 给出了完整的 bitmask + 记忆化 DFS 实现,并附带 13 个断言。我们把两个 Python 代码块提取到 Python 3.11 执行,模型自带的断言全部通过:
all assertions passed
它正确覆盖了空输入、容量不足、直接/间接依赖、未知依赖、循环依赖和三层目标比较。
但是,自带断言没有检查“前置任务必须先于后置任务完成”。我补充了一个独立探针:
jobs = [
{"id": "A", "duration": 4, "release_day": 1,
"deadline_day": 1, "value": 1},
{"id": "B", "duration": 4, "release_day": 0,
"deadline_day": 0, "value": 10},
]
result = schedule_jobs(jobs, [("A", "B")], {0: 4, 1: 4})
正确语义下,A 是 B 的前置任务,但它只能安排在第 1 天,B 只能安排在第 0 天,因此二者不应同时被选中。模型代码却返回:
selected_ids: ['A', 'B']
assignment: {'A': 1, 'B': 0}
这说明实现只检查了“选择 B 时必须连带选择 A”,没有检查:
assignment[A] < assignment[B]
因此编程题不能判为完全通过。更准确的评价是:算法框架和输入校验较完整,资源装箱逻辑可运行,但核心业务语义漏掉了依赖的时间先后约束。对生产调度系统而言,这是必须修复的正确性问题,不是格式问题。
Kimi K3 的结果#
Kimi K3 运行约 236.4 秒后以 length 结束,6000 token 全部消耗在 reasoning,content 为空,未能交付可执行代码。
延迟、输出预算与可见答案#
三题平均延迟:
Kimi K3: (235.420 + 204.568 + 236.434) / 3 = 225.474 秒
Claude Opus: (57.870 + 64.966 + 88.934) / 3 = 70.590 秒
Kimi 的三次 usage 都非常接近:
completion_tokens = 6000
reasoning_tokens = 5997
content.length = 0
finish_reason = length
这组数据说明,调用方不能只观察 HTTP 状态码和 model 字段。至少应同时记录:
choice.finish_reason
response.usage
response.choices[0].message.content
如果 finish_reason 是 length,即使 HTTP 返回 200,也应该进入重试、降级或人工复核流程。
如何复现实验#
下面是最小的 OpenAI Python SDK 调用方式。实际测试时,应该使用文章中的完整题目和与模型匹配的参数:
from openai import OpenAI
client = OpenAI(
api_key="YOUR_CRAZYROUTER_API_KEY",
base_url="https://cn.crazyrouter.com/v1",
)
response = client.chat.completions.create(
model="claude-opus-4-8",
temperature=0.1,
max_tokens=9000,
messages=[
{"role": "system", "content": "严格基准测试,只给可验证结论。"},
{"role": "user", "content": "替换为完整研究生级测试题"},
],
)
print(response.model)
print(response.choices[0].finish_reason)
print(response.usage)
print(response.choices[0].message.content)
调用 Kimi K3 时,需要把 temperature 改成 1,并为更长 reasoning 预留足够时间;本轮即使给到 6000 token 仍然没有拿到可见答案。
生产选型建议#
适合优先测试 Claude Opus 4.8 的情况#
- 需要在单次请求中拿到完整推导或完整代码;
- 任务包含矩阵、边界条件和数值核验;
- 业务对首屏延迟和可交付性更敏感;
- 能为生成代码增加独立测试和语义检查。
适合继续评估 Kimi K3 的情况#
- 可以接受几分钟级延迟;
- 调用层能够处理模型专属采样参数;
- 允许拆分任务、增加预算或采用异步工作流;
- 重点关注 reasoning 过程,而不是一次请求立即交付最终文本。
但在本轮数据下,Kimi K3 不能被描述为“已经完成了三道题但输出被日志隐藏”。实际观测是三次均没有可见最终答案。
FAQ#
1. 这次题目为什么算大学毕业或研究生级?#
数学题要求平稳分布、基本矩阵和首达时间二阶矩;物理题要求矩阵建模、模态分析、复频响和能量平衡;编程题要求依赖闭包、精确装箱、环检测和多层目标优化。这些内容分别对应概率论/随机过程、经典力学与振动、算法与系统设计课程的综合作业难度。
2. Kimi K3 是不是不支持 temperature=0.1?#
本次接口明确要求 Kimi K3 的 temperature 必须为 1。这属于当前路由的模型参数约束,调用方应读取错误信息并按模型配置重试。
3. Kimi K3 的 length 能否说明它一定不会做这些题?#
不能。它只能说明在本次提示词、输出上限和路由条件下,没有形成可见最终答案。没有可见答案就不能给正确性评分,但也不能据此证明模型在所有设置下都不会解题。
4. Opus 4.8 的编程答案能直接用于生产吗?#
不能直接使用。它自带断言全部通过,但独立探针发现依赖的时间先后约束遗漏。生成代码必须加入业务语义测试,而不仅是运行模型自己附带的测试。
5. 为什么 Opus 4.8 的物理题要检查能量耗散?#
因为耦合阻尼的非对角项很容易写错。输入功率与阻尼耗散功率一致,是检查复振幅、相位和阻尼矩阵同时正确的独立证据。
6. 这轮延迟能当成性能承诺吗?#
不能。上游渠道、缓存、并发度和重试都会改变延迟。生产环境至少要重复采样,统计 P50、P95、P99、截断率和每个成功任务的成本。
最终结论#
这轮真正比较出的不是一个脱离调用条件的“智力排名”,而是两种完全不同的交付行为:
- Claude Opus 4.8 在本轮三道研究生级任务上都给出了可见答案,数学和物理推导通过独立核验;
- Opus 的代码框架较强,但仍遗漏了依赖任务必须按时间先后完成这一关键业务约束;
- Kimi K3 在强制
temperature=1的条件下,三题都把 6000 token 用完,finish_reason=length,没有可见答案; - 如果业务目标是一次请求拿到完整的数学推导、物理计算或可执行代码,当前测试窗口下 Opus 4.8 的可交付性明显更好;
- 无论选择哪个模型,都必须把
finish_reason、usage、独立数值核验和代码语义测试纳入验收。
复现实验文件:
- 测试脚本:kimi_k3_vs_opus48_graduate_test.py
- Kimi 结果:kimi-k3-graduate-results.json
- 对比结果:kimi-k3-vs-opus48-graduate-results.json
推荐阅读:





