Login
Back to Blog
中文Comparison

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 打满和浏览器验证如何影响模型对比结论。

C
Crazyrouter Team
July 6, 2026 / 6 views
Share:
Claude Fable 5 vs GPT-5.5:一次 max_tokens 误判如何改变模型对比结论

Claude Fable 5 vs GPT-5.5:一次 max_tokens 误判如何改变模型对比结论#

先给结论:这次测试不是“Claude Fable 5 不会写动画”,而是一次 max_tokens 设置导致的误判。

在原始同参数测试里,gpt-5.5 一次输出了完整 HTML,并且通过浏览器运行验证;claude-fable-5 的动画代码被截断,第一次看起来像是长代码能力不稳定。但复盘元数据后,关键字段非常明确:

text
finish_reason = length
completion_tokens = 3200
max_tokens = 3200

这说明输出预算被打满,服务端按长度停止。随后把 claude-fable-5max_tokens 从 3200 提到 8000,它输出了完整 HTML,finish_reason=stop,并且同样通过浏览器验证。

本文记录这次模型对比的完整测试设计、三道题、第一次误判、复测结果,以及后续做模型对比时必须记录的字段。

GPT-5.5 animation result

Last updated: 2026-07-06.

快速结论#

这轮对比的结果可以压缩成四句话:

维度结论
数学推理claude-fable-5gpt-5.5 都正确
物理综合题两者都正确,Claude 的解释更强调能量损失
长代码动画,max_tokens=3200gpt-5.5 完整输出,Claude 被截断
Claude 复测,max_tokens=8000Claude 输出完整 HTML,浏览器验证通过

所以这篇文章不把结论写成“谁赢谁输”。更准确的说法是:

text
GPT-5.5 在较低输出预算下更稳。
Claude Fable 5 不是能力失败,而是长代码任务需要更高输出预算。

如果你的任务是短推理、数学推导、物理解释,两者在这组题里都很稳。如果你的任务是一次性生成完整页面、动画、小工具或长代码文件,就必须同时看 max_tokenscompletion_tokensfinish_reason 和真实运行验证结果。

可以通过本站直接复现 OpenAI-compatible 请求:

text
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。

text
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 不加。

一个最小请求示例:

bash
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前端动画是否能一次性输出完整、可运行、有交互的长代码产物

前两题验证推理正确性。第三题验证长输出、结构保持、代码完整性和可运行结果。

这比单纯问“解释某个概念”更接近真实工作流,因为生产里经常遇到的问题不是模型完全不会,而是:

text
写到一半被截断
漏掉事件绑定
少了 closing tag
看起来有代码但浏览器报错
静态检查通过但 Canvas 没有动

题目一:连续抛硬币直到 HH#

题目:

text
连续抛一枚公平硬币,直到第一次出现连续两个正面 HH 为止。
1. 求停止时所需抛掷次数的期望值。
2. 请用状态方程或递推方式推导,不要只给结论。
3. 最后用一句话解释为什么答案不是 4。

标准解法是设两个状态:

text
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 的直觉陷阱。

题目二:子弹嵌入木块后压缩弹簧#

题目摘要:

text
子弹 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. 说明哪里用动量守恒,哪里用能量关系,为什么不能对碰撞全过程用机械能守恒。

标准计算:

text
碰撞瞬间:
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:

text
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:

text
finish_reason = stop
包含 <!DOCTYPE html>
包含 </html>
包含 requestAnimationFrame
包含 init / update / draw / animate
包含暂停、重置、速度滑杆
canvas = 800x500

浏览器验证结果:

text
控制台错误:无
canvas 尺寸:800x500
控件:存在
700ms 后 changedPixels = 37512
hasAnimation = true

这说明它不是只画了一张静态图,而是确实在动。

claude-fable-5 的第一次结果看起来方向也对:它写了 800x500 canvas、粒子配置、轨道、恒星、HUD、控件样式,也开始写 initupdatedraw。但输出在中途停止。

关键元数据:

text
max_tokens = 3200
finish_reason = length
completion_tokens = 3200
HTML 末尾截断
没有完整 </script>
没有 </body>
没有 </html>

在“交付一个可运行 HTML 动画”的任务下,这份产物不能算完成。

为什么这是一次误判#

如果只看最终文件,会很容易写出一个错误结论:

text
GPT-5.5 会写动画,Claude Fable 5 不会。

finish_reason=length 改变了判断。

Chat Completions 里,finish_reason=length 通常意味着输出达到长度上限后停止。再结合:

text
completion_tokens = 3200
max_tokens = 3200

可以判断它不是自然结束,而是预算打满。

也就是说,第一次失败至少不能直接归因成“模型不会写”。更合理的假设是:这份代码超过了 3200 个输出 token,模型还没写完就被截断。

Claude Fable 5 复测:max_tokens 提到 8000#

为了验证这个假设,我对 claude-fable-5 单独复测了动画题。

测试max_tokensfinish_reasoncompletion_tokensHTML 是否闭合
同参数复测3200length3200
提高输出预算8000stop3975

这组结果很关键:

text
max_tokens=3200 时,它再次打满输出预算并截断。
max_tokens=8000 时,它实际只用了 3975 个 completion tokens 就自然结束。

也就是说,完成这个动画题需要的输出长度略高于 3200,但没有接近 8000。原始设置刚好卡在不够的位置。

Claude Fable 5 的 8000 版本也做了浏览器验证:

text
控制台错误:无
canvas 尺寸:800x500
暂停按钮:存在
重置按钮:存在
速度滑杆:存在
700ms 后 changedPixels = 15795
hasAnimation = true

复测后的结论要修正为:

text
Claude Fable 5 不是不会完成这个动画题。
它在 max_tokens=3200 下写不完;提高到 8000 后可以完整输出并运行。

Claude Fable 5 animation result

本轮结果总表#

指标结果
测试模型claude-fable-5gpt-5.5
请求接口POST /v1/chat/completions
原始测试请求数6
HTTP 2006/6
returned_modelrequested_model 一致6/6
原始测试 finish_reason=stop5/6
原始测试截断claude-fable-5 的动画题
Claude 复测结论max_tokens=8000 后完整输出

耗时记录:

题目claude-fable-5gpt-5.5
MATH-00317.87s28.18s
PHYS-00323.21s43.05s
CODE-003-ANIM40.84s79.22s

从这组耗时看,claude-fable-5 返回更快。但长代码任务不能只看速度。如果输出预算不够,速度快也可能只是“更快地被截断”。

人工评分#

题目claude-fable-5gpt-5.5说明
MATH-0035/55/5两者都正确得到期望 6
PHYS-0035/55/5两者都正确使用动量和能量关系
CODE-003-ANIM,原始 max_tokens=32002/55/5Claude 被截断;GPT 完整并通过浏览器验证
CODE-003-ANIM,Claude max_tokens=8000 复测5/5-Claude 完整输出并通过浏览器验证

这张表比简单胜负更重要。它说明模型对比至少要分成两个层面:

text
模型在相同调用约束下的表现。
模型在合理输出预算下的真实能力。

第一个层面,gpt-5.5max_tokens=3200 下更稳。第二个层面,claude-fable-5 并没有在动画能力上失败。

对实际选模型的启发#

如果你的任务是:

text
数学推导
物理解释
短代码
结构化说明
简短 JSON

这组测试看不出两者有明显正确性差距。

如果你的任务是:

text
一次性生成完整 HTML
输出长 JavaScript 文件
生成可交互前端 Demo
写完整工具页面
输出长配置文件或长测试用例

就不能只比较“模型是否答对”。你还需要检查:

字段为什么重要
max_tokens决定本次最多能输出多少
completion_tokens观察输出是否接近预算上限
finish_reason判断是自然结束还是被截断
content_chars粗略观察输出体量
静态检查HTML、函数、控件、关键字段是否存在
运行验证浏览器、测试脚本、控制台、像素变化是否通过

做长代码评测时,如果没有这些字段,结论很容易失真。

推荐的对比请求格式#

后续做模型对比,可以把元数据记录成固定格式:

json
{
  "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 快速复测同类任务:

text
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 行为和模型对比测试:

这些文章共同指向一个原则:模型对比不能只看宣传页,也不能只看 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#

这次对比最有价值的地方,不是证明某个模型稳赢,而是纠正了一次很常见的评测误判。

原始测试里:

text
GPT-5.5:max_tokens=3200,完整输出 HTML,浏览器验证通过。
Claude Fable 5:max_tokens=3200,finish_reason=length,completion_tokens=3200,输出截断。

复测后:

text
Claude Fable 5:max_tokens=8000,finish_reason=stop,completion_tokens=3975,完整 HTML,浏览器验证通过。

所以最终结论是:

text
在低输出预算下,GPT-5.5 更稳。
在合理输出预算下,Claude Fable 5 可以完成同类动画任务。
长代码模型对比必须记录 max_tokens、completion_tokens、finish_reason 和运行验证结果。

后续继续做模型对比系列时,应把这四个字段作为固定记录项。否则,长代码题很容易把“输出预算不足”误写成“模型能力不足”。

Implementation Guides

Topics

Comparison

Related Posts

Gemini 2.5 Flash vs GPT 4.1 Nano:图片理解 API 实测对比(Crazyrouter Base URL)Comparison

Gemini 2.5 Flash vs GPT 4.1 Nano:图片理解 API 实测对比(Crazyrouter Base URL)

本文用 Crazyrouter OpenAI 兼容接口实测 gemini-2.5-flash 与 gpt-4.1-nano 的图片理解表现,比较识别准确率、延迟、价格、usage 信号和生产选型建议。

Jun 21
Qwen3 VL Flash vs GPT-4.1 Nano:图片理解 API 实测对比(Crazyrouter Base URL)Comparison

Qwen3 VL Flash vs GPT-4.1 Nano:图片理解 API 实测对比(Crazyrouter Base URL)

本文用 Crazyrouter OpenAI 兼容接口实测 qwen3-vl-flash 与 gpt-4.1-nano 的图片理解表现,比较识别准确率、延迟、价格和生产选型建议。

Jun 21
GPT-4.1 Mini vs GPT-4.1 Nano:图片理解 API 实测对比(Crazyrouter Base URL)Comparison

GPT-4.1 Mini vs GPT-4.1 Nano:图片理解 API 实测对比(Crazyrouter Base URL)

本文用 Crazyrouter OpenAI 兼容接口实测 gpt-4.1-mini 与 gpt-4.1-nano 的图片理解表现,比较识别准确率、延迟、价格和生产选型建议。

Jun 21
GPT-4.1 Nano vs Qwen3 VL Plus:图片理解 API 实测对比(Crazyrouter Base URL)Comparison

GPT-4.1 Nano vs Qwen3 VL Plus:图片理解 API 实测对比(Crazyrouter Base URL)

本文用 Crazyrouter OpenAI 兼容接口实测 gpt-4.1-nano 与 qwen3-vl-plus 的图片理解表现,比较识别准确率、延迟、价格和生产选型建议。

Jun 21
实测 cn.crazyrouter.com:Claude Opus 4.8 和 GPT-5.5 的价格差距,关键在缓存创建收费Pricing

实测 cn.crazyrouter.com:Claude Opus 4.8 和 GPT-5.5 的价格差距,关键在缓存创建收费

基于 https://cn.crazyrouter.com/v1 的实测,解释 Claude Opus 4.8 的 cache_creation_input_tokens、cache_read_input_tokens 为什么会显著影响真实账单,并对比 GPT-5.5 的普通 OpenAI-compatible 调用成本结构。

Jun 5
GPT-4.1 Mini vs Qwen3 VL Plus:图片理解 API 实测对比(Crazyrouter Base URL)Comparison

GPT-4.1 Mini vs Qwen3 VL Plus:图片理解 API 实测对比(Crazyrouter Base URL)

本文用 Crazyrouter OpenAI 兼容接口实测 gpt-4.1-mini 与 qwen3-vl-plus 的图片理解表现,比较识别准确率、延迟、价格和生产选型建议。

Jun 21