Claude Fable 5 vs GPT-5.5:一次 max_tokens 误判如何改变模型对比结论
基于 Crazyrouter OpenAI-compatible API 的真实测试,比较 claude-fable-5 与 gpt-5.5 在数学推理、物理综合题和 Canvas 动画长代码任务中的表现,重点复盘 finish_reason=length、completion_tokens 打满和浏览器验证如何影响模型对比结论。

Claude Fable 5 vs GPT-5.5:一次 max_tokens 误判如何改变模型对比结论#
先给结论:这次测试不是“Claude Fable 5 不会写动画”,而是一次 max_tokens 设置导致的误判。
在原始同参数测试里,gpt-5.5 一次输出了完整 HTML,并且通过浏览器运行验证;claude-fable-5 的动画代码被截断,第一次看起来像是长代码能力不稳定。但复盘元数据后,关键字段非常明确:
finish_reason = length
completion_tokens = 3200
max_tokens = 3200
这说明输出预算被打满,服务端按长度停止。随后把 claude-fable-5 的 max_tokens 从 3200 提到 8000,它输出了完整 HTML,finish_reason=stop,并且同样通过浏览器验证。
本文记录这次模型对比的完整测试设计、三道题、第一次误判、复测结果,以及后续做模型对比时必须记录的字段。

Last updated: 2026-07-06.
快速结论#
这轮对比的结果可以压缩成四句话:
| 维度 | 结论 |
|---|---|
| 数学推理 | claude-fable-5 和 gpt-5.5 都正确 |
| 物理综合题 | 两者都正确,Claude 的解释更强调能量损失 |
长代码动画,max_tokens=3200 | gpt-5.5 完整输出,Claude 被截断 |
Claude 复测,max_tokens=8000 | Claude 输出完整 HTML,浏览器验证通过 |
所以这篇文章不把结论写成“谁赢谁输”。更准确的说法是:
GPT-5.5 在较低输出预算下更稳。
Claude Fable 5 不是能力失败,而是长代码任务需要更高输出预算。
如果你的任务是短推理、数学推导、物理解释,两者在这组题里都很稳。如果你的任务是一次性生成完整页面、动画、小工具或长代码文件,就必须同时看 max_tokens、completion_tokens、finish_reason 和真实运行验证结果。
可以通过本站直接复现 OpenAI-compatible 请求:
https://crazyrouter.com/register?utm_source=crazyrouter_blog&utm_medium=article&utm_campaign=model_compare_series_20260706&utm_content=claude-fable-5-vs-gpt-55-max-tokens-animation-test-2026__quick_answer
测试环境#
本轮使用 Crazyrouter 的 OpenAI-compatible API。
Base URL: https://cn.crazyrouter.com/v1
Endpoint: POST /v1/chat/completions
Test date: 2026-07-06
Models:
- claude-fable-5
- gpt-5.5
temperature: 0.2
注意:上面的 API endpoint 是真实请求地址,不应该加 UTM 参数。注册链接可以加 UTM,API base URL 不加。
一个最小请求示例:
curl https://cn.crazyrouter.com/v1/chat/completions \
-H "Authorization: Bearer $CRAZYROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-fable-5",
"messages": [
{
"role": "user",
"content": "连续抛一枚公平硬币,直到第一次出现 HH,求期望次数并给出推导。"
}
],
"temperature": 0.2,
"max_tokens": 3200
}'
同一套代码只需要把 model 改成 gpt-5.5,就可以跑另一组对比。
为什么不只问选择题#
模型对比如果只问选择题或短问答,很容易得到“都对”的结果。那种测试能证明 API 可用,但不一定能暴露真实使用中的问题。
这轮设计了三类题:
| 题号 | 类型 | 想验证什么 |
|---|---|---|
| MATH-003 | 数学期望 | 是否能建立状态方程,而不是套错直觉概率 |
| PHYS-003 | 物理综合 | 是否能区分碰撞动量守恒和碰后能量关系 |
| CODE-003-ANIM | 前端动画 | 是否能一次性输出完整、可运行、有交互的长代码产物 |
前两题验证推理正确性。第三题验证长输出、结构保持、代码完整性和可运行结果。
这比单纯问“解释某个概念”更接近真实工作流,因为生产里经常遇到的问题不是模型完全不会,而是:
写到一半被截断
漏掉事件绑定
少了 closing tag
看起来有代码但浏览器报错
静态检查通过但 Canvas 没有动
题目一:连续抛硬币直到 HH#
题目:
连续抛一枚公平硬币,直到第一次出现连续两个正面 HH 为止。
1. 求停止时所需抛掷次数的期望值。
2. 请用状态方程或递推方式推导,不要只给结论。
3. 最后用一句话解释为什么答案不是 4。
标准解法是设两个状态:
E0:当前没有连续正面的前缀
E1:刚抛出一个 H,等待第二个 H
E0 = 1 + 1/2 E1 + 1/2 E0
E1 = 1 + 1/2 * 0 + 1/2 E0
解得 E0 = 6
结果:
| 模型 | 结果 | 观察 |
|---|---|---|
claude-fable-5 | 正确 | 状态定义清楚,解释了失败会重置进度 |
gpt-5.5 | 正确 | 推导更展开,对“为什么不是 4”的解释更完整 |
这题没有拉开差距。两个模型都没有落入 1 / (1/4) = 4 的直觉陷阱。
题目二:子弹嵌入木块后压缩弹簧#
题目摘要:
子弹 m = 0.02 kg,速度 v = 300 m/s。
子弹射入静止木块并嵌入。
木块 M = 1.98 kg,连接弹簧 k = 800 N/m。
桌面动摩擦因数 μ = 0.10,g = 9.8 m/s^2。
求:
1. 碰撞后共同速度。
2. 弹簧最大压缩量。
3. 说明哪里用动量守恒,哪里用能量关系,为什么不能对碰撞全过程用机械能守恒。
标准计算:
碰撞瞬间:
mv = (M + m)V
V = 0.02 * 300 / 2.00 = 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
结果:
| 模型 | 结果 | 观察 |
|---|---|---|
claude-fable-5 | 正确 | 额外指出碰前动能 900J、碰后 9J,解释冲击力更强 |
gpt-5.5 | 正确 | 步骤规整,动量和能量阶段划分清楚 |
这题也没有明显正确性差距。两者都知道碰撞阶段用动量守恒,碰后压缩弹簧阶段用能量关系,并且都避免了“全过程机械能守恒”的错误。
题目三:生成一个 Canvas 动画#
第三题是这轮真正有信息量的部分。
要求不是“写一段 JavaScript”,而是完整可运行的单文件 HTML:
800x500 canvas
中心恒星
至少 5 个绕行粒子
requestAnimationFrame
半透明轨迹
暂停/继续按钮
重置按钮
速度滑杆
FPS 和速度倍率 HUD
必须包含 init / update / draw / animate 四个函数
不能依赖外部库、图片或网络资源
这个任务同时测四件事:
| 能力 | 具体表现 |
|---|---|
| 长输出完整性 | HTML、CSS、JS 是否完整闭合 |
| 约束保持 | 控件、函数名、Canvas 尺寸是否都满足 |
| 运行能力 | 浏览器打开是否报错 |
| 真实动画 | Canvas 像素是否随时间变化 |
第一次结果:GPT-5.5 完整,Claude 被截断#
在原始同参数测试里,两个模型都使用 max_tokens=3200。
gpt-5.5 输出了完整 HTML:
finish_reason = stop
包含 <!DOCTYPE html>
包含 </html>
包含 requestAnimationFrame
包含 init / update / draw / animate
包含暂停、重置、速度滑杆
canvas = 800x500
浏览器验证结果:
控制台错误:无
canvas 尺寸:800x500
控件:存在
700ms 后 changedPixels = 37512
hasAnimation = true
这说明它不是只画了一张静态图,而是确实在动。
claude-fable-5 的第一次结果看起来方向也对:它写了 800x500 canvas、粒子配置、轨道、恒星、HUD、控件样式,也开始写 init、update、draw。但输出在中途停止。
关键元数据:
max_tokens = 3200
finish_reason = length
completion_tokens = 3200
HTML 末尾截断
没有完整 </script>
没有 </body>
没有 </html>
在“交付一个可运行 HTML 动画”的任务下,这份产物不能算完成。
为什么这是一次误判#
如果只看最终文件,会很容易写出一个错误结论:
GPT-5.5 会写动画,Claude Fable 5 不会。
但 finish_reason=length 改变了判断。
在 Chat Completions 里,finish_reason=length 通常意味着输出达到长度上限后停止。再结合:
completion_tokens = 3200
max_tokens = 3200
可以判断它不是自然结束,而是预算打满。
也就是说,第一次失败至少不能直接归因成“模型不会写”。更合理的假设是:这份代码超过了 3200 个输出 token,模型还没写完就被截断。
Claude Fable 5 复测:max_tokens 提到 8000#
为了验证这个假设,我对 claude-fable-5 单独复测了动画题。
| 测试 | max_tokens | finish_reason | completion_tokens | HTML 是否闭合 |
|---|---|---|---|---|
| 同参数复测 | 3200 | length | 3200 | 否 |
| 提高输出预算 | 8000 | stop | 3975 | 是 |
这组结果很关键:
max_tokens=3200 时,它再次打满输出预算并截断。
max_tokens=8000 时,它实际只用了 3975 个 completion tokens 就自然结束。
也就是说,完成这个动画题需要的输出长度略高于 3200,但没有接近 8000。原始设置刚好卡在不够的位置。
Claude Fable 5 的 8000 版本也做了浏览器验证:
控制台错误:无
canvas 尺寸:800x500
暂停按钮:存在
重置按钮:存在
速度滑杆:存在
700ms 后 changedPixels = 15795
hasAnimation = true
复测后的结论要修正为:
Claude Fable 5 不是不会完成这个动画题。
它在 max_tokens=3200 下写不完;提高到 8000 后可以完整输出并运行。

本轮结果总表#
| 指标 | 结果 |
|---|---|
| 测试模型 | claude-fable-5、gpt-5.5 |
| 请求接口 | POST /v1/chat/completions |
| 原始测试请求数 | 6 |
| HTTP 200 | 6/6 |
returned_model 与 requested_model 一致 | 6/6 |
原始测试 finish_reason=stop | 5/6 |
| 原始测试截断 | claude-fable-5 的动画题 |
| Claude 复测结论 | max_tokens=8000 后完整输出 |
耗时记录:
| 题目 | claude-fable-5 | gpt-5.5 |
|---|---|---|
| MATH-003 | 17.87s | 28.18s |
| PHYS-003 | 23.21s | 43.05s |
| CODE-003-ANIM | 40.84s | 79.22s |
从这组耗时看,claude-fable-5 返回更快。但长代码任务不能只看速度。如果输出预算不够,速度快也可能只是“更快地被截断”。
人工评分#
| 题目 | claude-fable-5 | gpt-5.5 | 说明 |
|---|---|---|---|
| MATH-003 | 5/5 | 5/5 | 两者都正确得到期望 6 |
| PHYS-003 | 5/5 | 5/5 | 两者都正确使用动量和能量关系 |
CODE-003-ANIM,原始 max_tokens=3200 | 2/5 | 5/5 | Claude 被截断;GPT 完整并通过浏览器验证 |
CODE-003-ANIM,Claude max_tokens=8000 复测 | 5/5 | - | Claude 完整输出并通过浏览器验证 |
这张表比简单胜负更重要。它说明模型对比至少要分成两个层面:
模型在相同调用约束下的表现。
模型在合理输出预算下的真实能力。
第一个层面,gpt-5.5 在 max_tokens=3200 下更稳。第二个层面,claude-fable-5 并没有在动画能力上失败。
对实际选模型的启发#
如果你的任务是:
数学推导
物理解释
短代码
结构化说明
简短 JSON
这组测试看不出两者有明显正确性差距。
如果你的任务是:
一次性生成完整 HTML
输出长 JavaScript 文件
生成可交互前端 Demo
写完整工具页面
输出长配置文件或长测试用例
就不能只比较“模型是否答对”。你还需要检查:
| 字段 | 为什么重要 |
|---|---|
max_tokens | 决定本次最多能输出多少 |
completion_tokens | 观察输出是否接近预算上限 |
finish_reason | 判断是自然结束还是被截断 |
content_chars | 粗略观察输出体量 |
| 静态检查 | HTML、函数、控件、关键字段是否存在 |
| 运行验证 | 浏览器、测试脚本、控制台、像素变化是否通过 |
做长代码评测时,如果没有这些字段,结论很容易失真。
推荐的对比请求格式#
后续做模型对比,可以把元数据记录成固定格式:
{
"task_id": "CODE-003-ANIM",
"model": "claude-fable-5",
"endpoint": "/v1/chat/completions",
"max_tokens": 8000,
"temperature": 0.2,
"http_status": 200,
"requested_model": "claude-fable-5",
"returned_model": "claude-fable-5",
"finish_reason": "stop",
"completion_tokens": 3975,
"validation": {
"console_errors": 0,
"canvas": "800x500",
"changed_pixels_after_700ms": 15795,
"has_animation": true
}
}
真正用于文章结论的,不应该只有模型输出文本,还应该有这些运行证据。
你也可以用本站 OpenAI-compatible API 快速复测同类任务:
https://crazyrouter.com/register?utm_source=crazyrouter_blog&utm_medium=article&utm_campaign=model_compare_series_20260706&utm_content=claude-fable-5-vs-gpt-55-max-tokens-animation-test-2026__api_example
和之前几篇对比的关系#
这篇属于模型对比系列的一次方法修正。
之前我们也做过几类 API 行为和模型对比测试:
- Claude Fable 5 vs Claude Sonnet 5 API 行为测试
- Claude Sonnet 5 vs GPT-5.4 API 对比
- DeepSeek V4 Pro 在 Codex 与 Claude Code 中的兼容性测试
- 电商使用 gpt-image-2 失败的常见原因
- OpenRouter Alternatives for Production Teams
这些文章共同指向一个原则:模型对比不能只看宣传页,也不能只看 HTTP 200。要看真实 payload、真实返回、真实失败原因和真实运行结果。
FAQ#
1. 这次是不是说明 GPT-5.5 一定比 Claude Fable 5 强?#
不是。更准确地说,gpt-5.5 在本轮动画题的 max_tokens=3200 设置下更稳,因为它一次输出完整 HTML。claude-fable-5 在同预算下被截断,但提高输出预算后完成了同类任务。
2. 为什么 finish_reason=length 这么重要?#
因为它说明输出不是自然结束。对长代码任务来说,finish_reason=length 往往意味着代码可能缺尾部、缺事件绑定、缺 closing tag 或缺最后的函数调用。
3. 为什么不能只看 completion_tokens?#
单看 completion_tokens=3200 没有意义。它必须和 max_tokens=3200 一起看。两者相等时,才说明输出预算很可能被打满。
4. 为什么要做浏览器验证?#
代码生成任务不能只做文本检查。HTML 里出现 requestAnimationFrame 不代表动画真的跑起来。浏览器验证能检查控制台错误、Canvas 尺寸、控件存在性和像素变化。
5. 长代码任务应该把 max_tokens 设多大?#
没有固定答案。经验上,完整 HTML、复杂 JS、带样式和交互的页面,不建议用太紧的输出预算。如果第一次看到 finish_reason=length,应先提高 max_tokens 复测,再评价模型能力。
6. 为什么数学和物理题没有拉开差距?#
这两题有明确标准答案,而且约束不算极端。两个模型都具备完成这类推导的能力。差异更多体现在解释风格,而不是正确性。
7. 这类测试可以用来选生产模型吗?#
可以作为参考,但不能单独决定生产路由。生产选择还要结合价格、延迟、上下文长度、结构化输出稳定性、失败率、重试策略和业务任务类型。
Final verdict#
这次对比最有价值的地方,不是证明某个模型稳赢,而是纠正了一次很常见的评测误判。
原始测试里:
GPT-5.5:max_tokens=3200,完整输出 HTML,浏览器验证通过。
Claude Fable 5:max_tokens=3200,finish_reason=length,completion_tokens=3200,输出截断。
复测后:
Claude Fable 5:max_tokens=8000,finish_reason=stop,completion_tokens=3975,完整 HTML,浏览器验证通过。
所以最终结论是:
在低输出预算下,GPT-5.5 更稳。
在合理输出预算下,Claude Fable 5 可以完成同类动画任务。
长代码模型对比必须记录 max_tokens、completion_tokens、finish_reason 和运行验证结果。
后续继续做模型对比系列时,应把这四个字段作为固定记录项。否则,长代码题很容易把“输出预算不足”误写成“模型能力不足”。





