Claude Fable 5.1 对比 Fable 5:同题实测输出效率、正确性与那些不会报错的破坏性变更
把 claude-fable-5-1 与 claude-fable-5 钉在同一条上游路径上,用短改写、长缓存前缀、重推理三种负载各跑 3 次,记录正确性、输出 token、thinking 预算与延迟。结论:三组正确率全部打平,5.1 用 0.372/0.744/0.891 倍的输出 token 给出同样正确的答案,且官方标注会返回 400 的 7 项破坏性变更实测全部静默返回 200。

Claude Fable 5.1 对比 Fable 5:同题实测输出效率、正确性与那些不会报错的破坏性变更#
测试时间:2026-09-03(Asia/Shanghai)
Base URL:https://cn.crazyrouter.com
Endpoint:POST /v1/messages
模型:claude-fable-5-1、claude-fable-5
结论先行#
Fable 5.1 发布后,公开评测几乎都在转述同一批 benchmark 分数。我们换了个角度:把两个模型钉在同一条上游路径上,用三种负载形态各跑 3 次,同时记录正确性、输出 token 用量、思考预算和延迟。
| 负载形态 | 正确性 | 输出 token 比 (5.1/5) | 延迟比 |
|---|---|---|---|
| A 短单发改写 | 3:3 平局 | 0.372 | 0.79 |
| B 长前缀规格问答 | 3:3 平局(1 题有行为差异) | 0.744 | 0.85 |
| C 重推理调度题 | 3:3 平局 | 0.891 | 0.90 |
三组全部正确率打平,答案质量没有差别。真正的差异在效率:5.1 用更少的输出 token、更短的时间给出同样正确的答案,而且任务越简单优势越大,越难越接近。
Artificial Analysis 报告过 5.1 在 max effort 下用约 1.7 倍输出 token。我们测的默认 effort 下是 0.37–0.89 倍——方向相反。两者不矛盾,下面解释为什么。
效率差异从哪来:thinking 预算#

Fable 系列的思考是常开的 adaptive 模式,没有开关。看 thinking_tokens 就能看懂上面那条曲线:
| 负载形态 | 5.1 thinking | 5 thinking | 5.1 总输出 | 5 总输出 |
|---|---|---|---|---|
| A 短单发 | 0 | 11 | 57.0 | 153.3 |
| B 长前缀 | 439 | 676 | 788.3 | 1060.0 |
| C 重推理 | 1261 | 1565 | 2253.0 | 2527.7 |
简单题上 5.1 完全不思考(thinking=0),5 仍要花 11 个 token 起步;到了难题两者都全力思考,差距收敛到 11%。
5.1 的改进是「该省的时候真省」,不是全局变短。 这也解释了与 Artificial Analysis 的分歧:effort 是 Fable 5.1 唯一的思考深度旋钮,AA 测的是 max effort 下的 Intelligence Index 全套任务,把旋钮拧到底会让 5.1 的思考量反超。输出倍率随 effort 档位和任务难度变号,照搬任何单一档位的结论都会误判。
测试方法#
- Endpoint
POST /v1/messages,Anthropic 原生协议,anthropic-version: 2023-06-01 - 每格 3 次取均值,失败自动重试 4 次,不用单发定结论
- 正确性按客观验收判定,不看表述风格:
- A 组:句子是否真正精简且语义不变
- B 组:规则 ID 集合、数值是否与规格文档一致
- C 组:关键路径长度、makespan、最优单点优化三项数值全对才算通过
- 三种负载形态:
- A 短单发:一句话改写,无系统提示、无工具、无缓存
- B 长前缀规格问答:约 18,686 token 的规则文档挂
cache_control: ephemeral,后接 3 个问题 - C 重推理:8 节点带依赖的作业调度题
必须钉住路径,否则测的不是模型#
跨模型比 token 之前,得先证明两边跑在同一条上游路径上。用递增长度的填充文本对 input_tokens 做最小二乘拟合,截距就是每请求的固定开销:
| 模型 | 斜率 (tok/单位) | 截距 (tok) |
|---|---|---|
| claude-fable-5-1 | 21.000 | 18.00 |
| claude-fable-5 | 21.201 | 20.87 |
斜率一致说明分词器相同、正文没有被放大;截距 18.0 对 20.9 说明每请求固定开销基本等价。不同上游路径之间截距可以差几百 token,若放任路由,两个模型可能落在不同路径上,那部分差异会被当成模型差异读出来。本轮全部请求都钉在同一条路径上,这是对比成立的前提。
逐项结果#
A 短单发:正确率打平,5.1 少用 63% 输出 token#

claude-fable-5-1 out 55 / 56 / 60 thinking 0 lat 3.27-3.60s
claude-fable-5 out 171 / 161 / 128 thinking 11 lat 4.16-4.48s
两边 6 次全部正确完成精简,核心句几乎一致("Because the server was experiencing heavy traffic, users saw slower response times than usual.")。
差异在于交付形态:5.1 给出答案加一个更短的备选就收尾;5 每次都额外附一段没被要求的 "Key changes" 拆解说明。这不是质量差异,是冗余度差异——如果你的下游要解析结果,5 的额外说明反而是噪声。
B 长前缀规格问答:数值全对,但对错误前提的处理不同#
三个问题的客观验收:
| 问题 | 正确答案 | 5.1 | 5 |
|---|---|---|---|
| DISPUTED 高严重度规则 ID | R003 起每 15 条,共 20 条 | 通过 | 通过 |
| REVERSED 最长保留期 | 117 天,R087/R177/R267 三条并列 | 通过 | 通过 |
| SETTLED 8h 冲突(含假前提) | 全部 60 条触发,非两条 | 通过 | 通过 |
两者缓存写入量完全相同(18,686 token),前缀被一致缓存,没有一方偷偷不写。
第三问是刻意植入的假前提——题目问「有两条规则会同时触发,是哪两条」,而按规格实际是全部 60 条 SETTLED 规则都会触发。两者都识破了:
- 5.1:直接否定前提——「不是两条,是全部 60 条 SETTLED 规则」,并指出规格里根本没有冲突消解条款,所以「哪个保留期胜出」无解
- 5:也指出「远不止两条」,但随后仍按假前提挑了「题目可能想问的那一对」(R006 与 R041)作答,并自行引入了「保留期长者胜」的原则
事实层面两者都没错,R006 和 R041 的字段值经核对全部准确。差别在于是否顺从错误前提:5.1 拒绝了,5 提醒之后还是配合了。做需要抵抗诱导性提问的场景(合规审查、数据核对),这个差异值得关注。
C 重推理:6 次全对,无显著差异#
5.1 out 2098 / 2357 / 2304 thinking 1131 / 1310 / 1343 lat 26.81-28.80s
5 out 2720 / 2579 / 2284 thinking 1799 / 1458 / 1437 lat 28.41-34.12s
标准答案:关键路径 A→B→E→G→H = 21,5 worker 下最大并发仅 2,故 makespan 同为 21;最优单点优化是把 G 从 6 减到 2,makespan 降至 17。
6 次全部三项数值全对。 两个模型都额外识别出:把 A 减 4 同样得 17 但属退化解(作业时长归零),以及降到 17 后会被 A→C→D→F→H 这条路径卡住,再减无益。这个题目上两者能力无法区分。
输出量也应视为无差异:5 的最少一次(2284)低于 5.1 的最多一次(2357),3 次采样区间重叠。C 组的 0.891 倍不构成有效差异。
延迟#

| 负载形态 | 5.1 均值 | 5 均值 | 差值 |
|---|---|---|---|
| A 短单发 | 3.40s | 4.31s | −21.1% |
| B 长前缀 | 13.41s | 15.71s | −14.6% |
| C 重推理 | 27.95s | 31.03s | −9.9% |
5.1 三组都更快,且收窄幅度与 token 曲线同步——延迟差异基本由输出量差异驱动,不是推理速度本身的差别。延迟受网络与上游负载影响,此处仅作参考,不参与能力评分。
不会报错的破坏性变更#

官方迁移指南列了几项在 Fable 5.1 上会返回 400 的变更。我们把每一项在网关上各打 6 次:
| 请求内容 | 官方文档 | 实测 |
|---|---|---|
tool_choice: {"type": "any"} | 400 | 200(6/6) |
tool_choice: {"type": "tool", "name": …} | 400 | 200(6/6) |
thinking: {"type": "disabled"} | 400 | 200(6/6) |
temperature: 0.7 | 400 | 200 |
top_p: 0.9 | 400 | 200 |
top_k: 40 | 400 | 200 |
| assistant 预填充 | 400 | 200 |
7 项全部静默通过。这意味着:
- 迁移不会因为这些而失败,但也不会因为这些而被发现。 参数被中途丢弃,请求照常返回 200,行为却与预期不同。
- 尤其是
temperature/top_p/top_k——如果生产代码依赖低温度保证输出稳定,这些值在 Fable 系列上不生效,且不会收到任何提示。 - 官方文档说 forced tool choice 返 400「很响,几分钟就能发现」。这个假设在直连时成立,经任何中继层后都不成立。
正确的迁移验证方式不是等报错,而是主动断言响应内容:检查 stop_reason、检查是否真的调用了强制指定的工具、检查多次相同请求的输出是否符合设定的温度预期。
复现命令#
对比输出效率(把 $KEY 换成你的 key):
for M in claude-fable-5-1 claude-fable-5; do
curl -s https://cn.crazyrouter.com/v1/messages \
-H "x-api-key: $KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d "{\"model\":\"$M\",\"max_tokens\":2048,\"messages\":[{\"role\":\"user\",
\"content\":\"Rewrite this sentence to be more concise: 'Due to the fact that the server was experiencing an elevated level of traffic, the response times that users experienced were longer than what would normally be expected.'\"}]}" \
| python -c "import sys,json;d=json.load(sys.stdin);u=d['usage'];print(d['model'],'out',u['output_tokens'],'think',u.get('output_tokens_details',{}).get('thinking_tokens'))"
done
验证破坏性变更是否静默:
curl -s https://cn.crazyrouter.com/v1/messages \
-H "x-api-key: $KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model":"claude-fable-5-1","max_tokens":64,"temperature":0.7,
"messages":[{"role":"user","content":"What is the weather in Tokyo?"}]}' \
-w "\nHTTP %{http_code}\n"
拟合每请求固定开销,确认两个模型跑在同一条路径上:
# 用递增长度的填充文本打同一模型,对 input_tokens 做最小二乘
# 截距落在 8-25 属正常;两个模型截距接近才说明对比条件成立
UNIT = "The reconciliation service records each settlement attempt in the ledger. "
for n in [1, 20, 100, 250]:
body = {"model": M, "max_tokens": 16,
"messages": [{"role": "user", "content": UNIT * n + "Reply with the single word: ok"}]}
生产选型建议#
- 短任务、分类、抽取、改写:换 5.1。同样的正确率下少用 63% 输出 token、快 21%,且不需要任何代码改动。这类流量是收益最大的地方。
- 需要抵抗诱导性提问的场景:倾向 5.1。B 组第三问里它直接否定了错误前提,5 提醒之后仍配合了假设。样本量小,建议用自己的诱导题复测。
- 重推理任务:两者能力无法区分(6 次全对,输出量区间重叠)。换不换取决于是否需要 5.1 更新的知识截止(2026 年 6 月对 2026 年 1 月),而不是本轮任何指标。
- 拧 effort 之前先复测。官方明确说过 effort 档位名称在不同模型间不代表相同的思考量,在 Fable 5 上调好的参数不会平移到 5.1。这也是 AA 测出 1.7 倍而本轮测出 0.37–0.89 倍的关键变量。
- 迁移验证要断言内容,不要等报错。 见上一节。
限制#
- 每格 3 次采样,只够判断量级,不足以做统计显著性检验。C 组差异在采样区间内重叠,不应作为选型依据。
- 三组正确率全部打平,本轮没有测出任何能力差异,只测出效率与行为差异。要区分能力需要更难、更容易失败的题目。
- 只测了默认 effort。Artificial Analysis 的 1.7 倍是 max effort 下的结果,本文没有复现该档位,不构成对该结论的否定——两者测的是曲线的不同位置。
- B 组的假前提只有 1 道题、各 1 次,「5.1 更能抵抗诱导」目前只是观察不是结论。
- 三种负载形态是构造的,不等于真实流量分布。建议用自己的负载和验收标准重跑。
FAQ#
Q1:Fable 5.1 比 Fable 5 更聪明吗? 本轮三种形态、共 18 次调用,正确率全部打平,没有测出能力差异。测出的是效率差异:同样正确的答案,5.1 用更少的输出 token 和更短的时间。要区分能力需要更容易失败的题目。
Q2:为什么有的评测说 5.1 用更多输出 token,你们测出更少?
effort 是 Fable 5.1 唯一的思考深度旋钮。Artificial Analysis 测的是 max effort,本轮测的是默认 effort。倍率随档位和任务难度变号——默认档简单题 0.372 倍,难题 0.891 倍,max 档会反超。别照搬任何单一档位的数字。
Q3:迁移到 Fable 5.1 需要改代码吗?
模型 ID 从 claude-fable-5 换成 claude-fable-5-1 即可。但要检查三处:是否用了 forced tool choice、是否手工拼接 messages 数组(thinking 块现在绑定对话)、是否依赖 temperature 等采样参数。这些经中继层不会报错,需要主动断言。
Q4:thinking: {"type": "disabled"} 为什么关不掉思考?
Fable 系列只有一种思考模式:常开的 adaptive,没有关闭开关。官方文档说传 disabled 会返回 400,但实测 6/6 返回 200——参数被丢弃了,思考照常进行。想控制思考深度只能用 effort。
Q5:为什么同一个模型在不同地方量出的 token 数不一样?
每条上游路径都可能有自己的固定开销。用递增长度的填充文本对 input_tokens 做线性拟合,截距就是这个开销,正常应落在 8–25 之间。斜率反映分词器,如果两条路径斜率相同而截距差很多,那是路径差异不是模型差异。
Q6:Fable 5.1 的上下文和知识截止是什么? 100 万 token 上下文、12.8 万 token 最大输出,与 Fable 5 相同。知识截止 2026 年 6 月,Fable 5 是 2026 年 1 月。
Q7:为什么要把上游路径钉死? 放任路由时两个模型可能落到不同上游路径上,路径的固定开销差异会被误读成模型差异。本轮实测两个模型截距 18.0 对 20.9、斜率 21.0 对 21.2,基本等价,才构成有效对照。
相关阅读#
- Claude Opus 5 对比 Claude Fable 5:API 实测
- Claude Fable 5 对比 Claude Sonnet 5:API 实测
- GLM-5.2 对比 Claude Fable 5:输出预算实测
- Kimi K3 对比 Claude Fable 5:高难推理实测
- Claude Fable 5 对比 GPT-5.5:max_tokens 实测
- Claude Opus 5 对比 GPT-5.6 Sol:正确率实测
- Kimi K3 对比 Opus 4.8:能力与效率实测
外部参考#
- Anthropic 官方迁移指南
- Anthropic:Fable 5.1 有什么新变化
- Artificial Analysis:Fable 5.1 评测
- Snorkel AI:Fable 5.1 前沿编码任务独立评测
原始证据#
- 输出量、思考预算、延迟原始数据:
.tmp/fable51_cost_results.json - 破坏性变更矩阵:
.tmp/fable51_breaking_matrix.json、.tmp/fable51_retry_matrix.json - 截距拟合数据:
.tmp/fable51_intercept.json - 复测脚本:
.tmp/fable51_cost_probe.py
本文全部数据在 https://cn.crazyrouter.com/v1 上实测产出,两个模型均可直接调用。注册获取 API Key





