GLM-5.2 vs Claude Fable 5 实测:真正的差异在输出预算和可见结果
基于 Crazyrouter OpenAI-compatible API 的真实测试,对比 glm-5.2 与 claude-fable-5 在数学推理、物理综合题和 Canvas 动画长代码任务中的表现,重点分析 max_tokens、reasoning_tokens、finish_reason、可见正文为空和浏览器验证结果。

模型对比系列第 3 篇:GLM-5.2 vs Claude Fable 5,真正的差异在输出预算和可见结果#
先给结论:这一轮不能简单写成“GLM-5.2 不会推理”或“Claude Fable 5 全面更强”。更准确的结论是:
GLM-5.2 在推理题上能做对,但本轮非常吃输出预算,低 max_tokens 下容易出现 HTTP 200 但可见正文为空。
Claude Fable 5 在数学和物理题上输出更短、更直接,低预算下更稳定。
长代码动画题里,GLM-5.2 即使提高到 max_tokens=8000 仍然截断;Claude Fable 5 提到 8000 后输出完整 HTML,并通过浏览器验证。
这一轮继续沿用前一篇的方法:不只看模型回答,也记录 max_tokens、completion_tokens、reasoning_tokens、finish_reason、可见正文是否为空、HTML 是否闭合,以及浏览器运行结果。

测试对象:
模型 1:glm-5.2
模型 2:claude-fable-5
Base URL:https://cn.crazyrouter.com/v1
Endpoint:POST /v1/chat/completions
测试时间:2026-07-06
temperature:0.2
本站测试入口:
https://crazyrouter.com/register?utm_source=crazyrouter_blog&utm_medium=article&utm_campaign=model_compare_series_20260706&utm_content=glm52_fable5_round3
这轮为什么继续用同一组题#
上一轮 claude-fable-5 vs gpt-5.5 已经证明:如果只看模型最终文本,很容易把 max_tokens 截断误判成能力失败。
所以这一轮没有急着换题,而是继续用同一组相对稳定的题:
| 题号 | 类型 | 目的 |
|---|---|---|
| MATH-003 | 数学期望 | 看模型能否建立状态方程,而不是误用 1/概率 |
| PHYS-003 | 物理综合 | 看模型能否区分碰撞瞬间动量守恒和碰后能量关系 |
| CODE-003-ANIM | Canvas 动画 | 看模型能否一次输出完整可运行 HTML,并通过浏览器验证 |
这样做的好处是:题目不变,变量主要变成模型行为。尤其是 glm-5.2 这种带较多 reasoning token 消耗的模型,如果不记录 token 元数据,结论会非常容易偏。
模型可用性确认#
写测试前先查了本站 /v1/models,确认两个模型都在当前模型列表中,并且都支持 OpenAI-compatible endpoint:
| 模型 | supported_endpoint_types | public_endpoint_types |
|---|---|---|
glm-5.2 | openai | openai |
claude-fable-5 | anthropic, openai | anthropic, openai |
请求格式示例:
curl https://cn.crazyrouter.com/v1/chat/completions \
-H "Authorization: Bearer $CRAZYROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "glm-5.2",
"messages": [
{
"role": "user",
"content": "连续抛一枚公平硬币,直到第一次出现 HH,求期望次数并给出推导。"
}
],
"temperature": 0.2,
"max_tokens": 3200
}'
同一套请求把 model 改成 claude-fable-5,即可做对照测试。
第一题:连续抛硬币直到 HH#
题目:
连续抛一枚公平硬币,直到第一次出现连续两个正面 HH 为止。
1. 求停止时所需抛掷次数的期望值。
2. 请用状态方程或递推方式推导,不要只给结论。
3. 最后用一句话解释为什么答案不是 4。
标准答案:
E0 = 1 + 1/2 E1 + 1/2 E0
E1 = 1 + 1/2 * 0 + 1/2 E0
解得 E0 = 6
这一题最有意思的不是最终答案,而是 glm-5.2 的第一次返回。
| 模型 | max_tokens | finish_reason | completion_tokens | reasoning_tokens | 可见正文 | 结果 |
|---|---|---|---|---|---|---|
glm-5.2 | 1600 | length | 1601 | 1600 | 空 | 不可评分 |
claude-fable-5 | 1600 | stop | 608 | 0 | 完整 | 正确 |
glm-5.2 复测 | 3200 | stop | 1418 | 1105 | 完整 | 正确 |
glm-5.2 第一次不是答错,而是几乎所有 completion token 都消耗在 reasoning tokens 上,导致可见正文为空。
复测到 max_tokens=3200 后,它给出了正确推导:
E0 = 1 + 1/2 E1 + 1/2 E0
E1 = 1 + 1/2 * 0 + 1/2 E0
E0 = 6
这一题的结论:
GLM-5.2 会做,但低输出预算下可能看不到答案。
Claude Fable 5 在同样 1600 输出预算下更直接,完整输出。
第二题:子弹嵌入木块后压缩弹簧#
题目摘要:
子弹 m = 0.02 kg,v = 300 m/s,射入静止木块并嵌入。
木块 M = 1.98 kg,连接弹簧 k = 800 N/m。
桌面动摩擦因数 μ = 0.10,g = 9.8 m/s^2。
求碰撞后共同速度和弹簧最大压缩量,并说明动量守恒和能量关系的使用位置。
标准答案:
碰撞瞬间:
mv = (M+m)V
V = 3.0 m/s
碰后压缩阶段:
1/2(M+m)V^2 = 1/2kx^2 + μ(M+m)gx
9 = 400x^2 + 1.96x
x ≈ 0.148 m
结果:
| 模型 | max_tokens | finish_reason | completion_tokens | reasoning_tokens | 可见正文 | 结果 |
|---|---|---|---|---|---|---|
glm-5.2 | 1800 | length | 1800 | 1795 | 空 | 不可评分 |
claude-fable-5 | 1800 | stop | 1060 | 0 | 完整 | 正确 |
glm-5.2 复测 | 3600 | length | 3600 | 3067 | 有正文但尾部截断 | 主体正确 |
glm-5.2 复测 | 8000 | stop | 3923 | 3404 | 完整 | 正确 |
这里 glm-5.2 的现象更清楚:
max_tokens=1800时,HTTP 200,但可见正文为空。max_tokens=3600时,已经能看到主体答案,而且数值正确,但尾部仍然finish_reason=length。max_tokens=8000时,才完整自然结束。
glm-5.2 的 8000 版本给出的结果是:
V = 3.0 m/s
x ≈ 0.148 m
碰撞瞬间用动量守恒
碰后压缩用能量关系,摩擦做功计入耗散
全过程不能用机械能守恒
claude-fable-5 在 1800 token 预算下直接完整答完,且额外指出:
碰前动能 = 900 J
碰后动能 = 9 J
损失 891 J
这一题的结论:
两者都能算对。
但 GLM-5.2 需要更高输出预算才能把可见答案完整吐出来。
Claude Fable 5 在这类中等推理题上更省 token,也更适合低预算调用。
第三题:Canvas 动画完整 HTML#
动画题要求:
800x500 canvas
中心恒星
至少 5 个绕行粒子
requestAnimationFrame
半透明轨迹
暂停/继续按钮
重置按钮
速度滑杆
FPS 和速度倍率 HUD
必须包含 init / update / draw / animate
不能依赖外部库、图片或网络
这题是本轮拉开差距的地方。
原始同预算测试:max_tokens=3200#
| 模型 | finish_reason | completion_tokens | reasoning_tokens | 可见正文 | HTML 是否闭合 |
|---|---|---|---|---|---|
glm-5.2 | length | 3200 | 3178 | 空 | 否 |
claude-fable-5 | length | 3200 | 0 | 有 HTML 片段 | 否 |
glm-5.2 在 3200 输出预算下没有可见 HTML。它的 completion tokens 基本都消耗在 reasoning tokens 上。
claude-fable-5 有可见 HTML,结构方向正确,但和上一轮一样在 3200 下被截断,不能直接运行。
高预算复测:max_tokens=8000#
| 模型 | finish_reason | completion_tokens | reasoning_tokens | HTML 是否闭合 | 浏览器验证 |
|---|---|---|---|---|---|
glm-5.2 | length | 8000 | 5745 | 否 | 不通过,文件不完整 |
claude-fable-5 | stop | 3782 | 0 | 是 | 通过 |
glm-5.2 的 8000 版本已经输出了 6908 字符左右的 HTML 片段,开头是完整的:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>模型对比轨道仪表盘</title>
但尾部仍然截断在 JavaScript 代码中:
grad.addColorStop(1, 'rgba
也就是说,它不是视觉效果不好,而是文件根本没有写完,没有 </html>,不能作为可运行交付物。
Claude Fable 5 的 8000 版本通过了浏览器验证:
控制台错误:无
canvas:800x500
按钮:暂停、重置
速度滑杆:1 个
700ms 后 changedPixels = 55090
hasAnimation = true
这一题的结论:
GLM-5.2 在本轮长代码动画题里,即使 max_tokens=8000 仍然没有完整交付。
Claude Fable 5 在 max_tokens=3200 下也会截断,但提高到 8000 后可以完整运行。
总表:这轮真正比较的是什么#
| 题目 | glm-5.2 | claude-fable-5 |
|---|---|---|
| MATH-003 原始预算 | HTTP 200,但可见正文为空 | 完整正确 |
| MATH-003 复测 | 3200 下完整正确 | 不需要复测 |
| PHYS-003 原始预算 | HTTP 200,但可见正文为空 | 完整正确 |
| PHYS-003 复测 | 8000 下完整正确 | 不需要复测 |
| CODE-003-ANIM 原始预算 | 可见正文为空 | 有 HTML 片段但截断 |
| CODE-003-ANIM 复测 | 8000 仍截断 | 8000 完整,浏览器验证通过 |
人工初评:
| 题目 | glm-5.2 | claude-fable-5 | 说明 |
|---|---|---|---|
| MATH-003 原始同预算 | 1/5 | 5/5 | GLM 可见正文为空;复测后正确 |
| PHYS-003 原始同预算 | 1/5 | 5/5 | GLM 可见正文为空;8000 复测后正确 |
| CODE-003-ANIM 原始同预算 | 0/5 | 2/5 | GLM 空输出;Claude 截断 |
| CODE-003-ANIM 高预算复测 | 2/5 | 5/5 | GLM 8000 仍截断;Claude 完整运行 |
这轮对实际使用有什么启发#
如果你准备在生产里使用 glm-5.2,这轮最应该关注的不是它“会不会推理”,而是:
可见正文是否为空
reasoning_tokens 是否吃掉了大部分 completion_tokens
finish_reason 是否是 length
max_tokens 是否足够
任务是否需要一次性长输出
对于短答案或可分步调用的推理任务,glm-5.2 可以通过提高输出预算得到正确结果。
但如果你的任务是:
一次性输出完整 HTML
生成长 JS 工具
要求代码直接可运行
要求一次性交付完整文件
那么本轮结果显示,claude-fable-5 更稳。glm-5.2 在 8000 输出预算下仍然没有完成 HTML,说明这类任务不能只靠提高一点 max_tokens 解决。
方法论:以后 GLM 系列要额外记录 reasoning_tokens#
上一轮 claude-fable-5 vs gpt-5.5 的重点是:
不要忽略 finish_reason=length。
这一轮新增一个重点:
对 GLM-5.2 这类模型,必须额外记录 reasoning_tokens 和 visible content。
因为这轮多次出现了这样的组合:
HTTP 200
finish_reason=length
completion_tokens 打满
reasoning_tokens 接近 completion_tokens
content 为空
如果只看 HTTP 200,会误以为请求成功。如果只看 completion_tokens,会以为模型输出了很多。但用户真正能看到的正文可能是空的。
以后做 GLM 系列对比,建议固定记录:
{
"model": "glm-5.2",
"max_tokens": 3200,
"finish_reason": "length",
"completion_tokens": 3200,
"reasoning_tokens": 3178,
"visible_content_chars": 0,
"html_closed": false,
"browser_validation": "not_run_incomplete_html"
}
总结#
这一轮 glm-5.2 vs claude-fable-5 的结论比表面结果复杂。
推理题上:
GLM-5.2 不是不会做。
数学题提高到 max_tokens=3200 后正确。
物理题提高到 max_tokens=8000 后正确。
但在调用稳定性上:
GLM-5.2 低预算下容易 HTTP 200 但没有可见正文。
它的 reasoning_tokens 消耗很高,需要更谨慎地设置 max_tokens。
长代码动画题上:
GLM-5.2:max_tokens=3200 时可见正文为空;max_tokens=8000 时仍然截断,HTML 不完整。
Claude Fable 5:max_tokens=3200 时截断;max_tokens=8000 时完整输出,并通过浏览器验证。
因此,这篇的最终判断是:
短推理题:GLM-5.2 能做,但需要更高输出预算。
中等物理题:GLM-5.2 能做,但低预算不可用。
长代码可运行产物:Claude Fable 5 明显更稳。
下一轮可以继续加入更难的编程题,比如 LRU cache、异步重试、并发限流、可交互图表或小游戏。对于 GLM 系列,尤其要把 reasoning_tokens 和 visible content 纳入主表,否则很容易把一次“HTTP 200 但无可见输出”的请求误判为成功。





