Login
Back to Blog
中文Comparison

Claude Opus 5 vs Claude Fable 5:7 项真实 API 测试与生产路由建议

在同一 OpenAI-compatible API、相同提示词和参数下,对 Claude Opus 5 与 Claude Fable 5 进行数学、物理、约束推理、代码审查、严格 JSON 和实验设计测试,记录交付率、内容过滤、延迟、token 与重试结果。

C
Crazyrouter Team
July 25, 2026 / 12 views
Share:
Claude Opus 5 vs Claude Fable 5:7 项真实 API 测试与生产路由建议

Claude Opus 5 vs Claude Fable 5:7 项真实 API 测试与生产路由建议#

Claude Opus 5 与 Claude Fable 5 真实 API 对比

Claude Opus 5 和 Claude Fable 5 应该怎么选?如果只看一次成功回答,两款模型都能写出很漂亮的数学推导。真正影响生产体验的,往往是另外三件事:任务能不能稳定交付、延迟是否适合交互、失败后能不能自动恢复

我们在 2026 年 7 月 25 日通过同一个 OpenAI-compatible API,使用相同提示词和参数,对两款模型做了 7 类任务测试。结果没有落入“更大的模型一定更好”这种简单叙事:

  • claude-fable-5 在共同成功任务上更快、更简洁;
  • claude-opus-5 最终覆盖了全部 7 类任务;
  • Fable 5 在普通代码审查和事故 JSON 提示词上连续触发 content_filter
  • Opus 5 的物理题前两次虽然返回 HTTP 200,却只回复了一句问候语,第 3 次才正常完成。

这意味着生产选型不应该只有一个模型 ID。更稳妥的做法是:先按任务类型选择主模型,再用内容验收、重试和模型回退把异常包起来。

用同一 API 测试 Opus 5 与 Fable 5

快速结论#

问题本轮答案
哪款模型覆盖更多任务?Opus 5:主测试 6/7,重试后 7/7
哪款模型更快?共同成功任务中,Fable 5 的 P50 总延迟低约 24%
哪款输出更简洁?Fable 5,平均可见输出 token 少约 43%
哪款更适合代码审查和严格 JSON?本轮 Opus 5 更稳;Fable 5 两题连续 3 次被过滤
可以只看 HTTP 200 吗?不可以;两款模型都出现过 HTTP 200 但任务未交付
推荐怎么路由?已验证任务优先 Fable 5,过滤或空正文回退 Opus 5;Opus 异常问候语时自动重试

如果你的输入类型不可预测,或者必须尽量避免普通业务提示词被过滤,优先考虑 Opus 5。如果任务结构固定、已经做过回归测试,并且交互速度和输出长度更重要,Fable 5 更适合作为第一跳。

我们怎样测试#

测试前先调用模型列表接口,确认两个精确模型 ID 都可见:

text
GET https://cn.crazyrouter.com/v1/models

claude-opus-5
claude-fable-5

所有正式请求走同一个 endpoint:

text
POST https://cn.crazyrouter.com/v1/chat/completions

公共条件如下:

text
相同 system prompt
相同 user prompt
temperature = 1
每道题使用相同 max_tokens
stream = true
不启用工具和联网

统一 system prompt 只要求准确回答并遵守输出格式,没有加入偏向任何模型的角色设定:

text
Answer the user's task accurately. Follow every requested output format and length constraint exactly. Do not use external tools.

我们记录的不只是最终文字,还包括:

  • HTTP 状态与 finish_reason
  • response ID 与 returned model;
  • 首个可见 token 时间和总延迟;
  • completion tokens、reasoning tokens;
  • 可见答案是否满足任务验收;
  • 异常请求能否通过相同参数重试恢复。

这是一组 Crazyrouter 网关端到端测试,不是指定单一上游渠道的实验。因此结果同时反映模型行为、上游过滤、网关路由和当时渠道状态。它适合回答“用户通过这个 API 实际会遇到什么”,不适合被包装成 Claude 家族的纯离线能力排行榜。

如果你想了解为什么模型测试必须记录 finish_reason 和输出预算,可以继续看Claude Fable 5 vs GPT-5.5 的 max_tokens 复测

7 项结果总表#

Claude Opus 5 与 Claude Fable 5 七项任务结果矩阵

测试维度Claude Opus 5Claude Fable 5生产影响
精确数学:马尔可夫链通过通过两者均得到正确的一阶矩、二阶矩与方差
数值物理:耦合振子前两次仅回复问候语,第 3 次通过首轮通过Opus 需要内容级验收与重试
约束搜索通过通过两者均找到唯一解
统计纠错通过通过两者均拒绝错误前提并给出正确上界
Python 代码审查通过连续 3 次 content_filterFable 当前不适合未经回归的代码审查流量
严格 JSON 事故摘要通过连续 3 次 content_filterFable 当前不适合这类生产事故文本
实验设计通过通过两者都能识别未配对样本和难度混杂

主测试的一次交付率:

text
Claude Opus 5: 6 / 7 = 85.7%
Claude Fable 5: 5 / 7 = 71.4%

加入重试后:

text
Claude Opus 5: 7 / 7
Claude Fable 5: 5 / 7

这里的“交付”不是请求成功,而是业务能拿到符合题目要求的可见答案。HTTP 200、模型名和 token usage 都存在,但正文为空、被过滤或只返回问候语,仍然算任务失败。

数学、约束与统计:两款模型都可靠#

数学题使用三状态马尔可夫链,要求计算从状态 1 首次到达状态 3 的等待时间:

text
E1[τ]
E1[τ²]
Var1(τ)

两款模型都给出:

text
E1[τ] = 5
E1[τ²] = 43
Var1(τ) = 18

它们也都写出了暂态矩阵 Q 和一阶、二阶矩方程。这一题没有出现“最终数字正确但推导不一致”的情况。

约束搜索要求把 A、B、C、D、E 五场演讲排入五个时段,同时满足立即相邻、先后、间隔和不相邻等条件。两者都得到唯一顺序:

text
A, C, E, B, D

统计纠错题故意给出一个错误结论:“均值为 10、方差为 4,所以 P(X≥14)=0.5。”两款模型都指出两阶矩不足以唯一确定尾概率,并用单侧 Chebyshev/Cantelli 不等式得到:

text
P(X >= 14) <= 0.2

这三类任务说明 Fable 5 的速度优势并不是靠牺牲基础推理正确性换来的。在明确、短小、可验收的数学与逻辑任务上,它完全可以作为更轻的第一跳。

此前的Claude Fable 5 vs Claude Sonnet 5 API 测试GLM-5.2 vs Fable 5 输出预算测试也表明:判断一款模型是否适合生产,必须把正确性、输出预算与交付形态放在一起看。

物理题:Fable 首轮完成,Opus 第三次恢复#

物理题要求处理一个带接地阻尼和耦合阻尼的二自由度振子,计算两个无阻尼固有频率,以及 ω=8 rad/s 时两个质量块的复频响。

参考值为:

text
ω1 = 10.0204 rad/s
ω2 = 16.2149 rad/s
|X1| = 0.14929 m, phase = -12.15°
|X2| = 0.07174 m, phase = -13.90°

Fable 5 首轮就给出了全部正确结果。Opus 5 的前两次调用则出现了一个更值得生产团队注意的异常:接口返回 HTTP 200 和 finish_reason=stop,但正文只有:

text
Hi! How can I help you today?

这两次响应的 prompt tokens 都只有 10,与真实输入明显不匹配。相同请求第 3 次执行时,Opus 5 在 34.901 秒后完整返回,六个数值全部通过检查。

因此,这类异常不应该被归类为“物理题算错”,而应归类为“请求上下文没有被正常处理”。最简单的防线不是让人工看日志,而是在调用端设置任务级验收:答案必须包含 ω1ω2X1X2;缺失任一字段就重试。

代码与严格 JSON:Fable 的过滤是本轮最大差异#

代码题让模型审查一个 Python DFS 环检测器。bug 很普通:节点完成 DFS 后没有从 visiting 集合删除,导致已经完成的节点仍被误认为递归栈中的节点,从而在 DAG 上误报环。

Opus 5 正确指出最小修复:

python
visiting.discard(node)
visited.add(node)
return False

Fable 5 没有返回代码分析,而是 finish_reason=content_filter、正文为空。为了排除 system prompt 偏差和偶发路由,我们做了三轮:原始测试、清洁 system prompt 复测、独立单题重试,结果都是 content_filter

严格 JSON 题同样没有危险内容。输入只包含 15 分钟内的请求总数、失败数、渠道归因、重试恢复数和处置动作,要求输出一个 JSON 对象。Opus 5 返回的 JSON 可以直接解析;Fable 5 同样连续 3 次被过滤。

这两类失败说明:安全过滤本身也是模型 API 的生产能力之一。 如果一个模型在正常代码审查或事故复盘文本上稳定误过滤,即使它在数学题上更快,也不能直接接管所有业务流量。

两次独立重试的 response ID:

text
代码审查:gen-1784915384-vGI1PtuNXZG0IJ2YiaCz
事故 JSON:gen-1784915390-buOWZQSnqjgHeJ6nUogF

延迟与输出长度#

为了避免把失败请求的短耗时算成“速度优势”,这里只比较两款模型都成功的四项共同任务:数学、约束搜索、统计纠错、实验设计。

Claude Opus 5 与 Claude Fable 5 共同成功任务延迟

指标Claude Opus 5Claude Fable 5
P50 总延迟10.729 s8.147 s
P50 首个可见 token8.376 s6.974 s
平均可见 completion tokens797.5452.3

在这个小样本中,Fable 5 的 P50 总延迟低约 24%,首个可见 token 低约 17%,答案短约 43%。对聊天、批量摘要和高频结构化任务来说,这些差异会直接影响用户等待时间与下游处理量。

但不要把 4 道题的中位数写成 SLA。上游负载、缓存、路由和限流都会改变延迟。正式上线前,应当用自己的业务提示词重复 20–50 次,再统计 P50、P95、P99 和每个通过结果的真实成本。

Fable 5 的主测试响应提供了 cost 字段,7 次合计约 $0.24596。Opus 5 的 usage 没有提供同口径 cost,因此本文不做美元价格胜负判断。字段缺失不代表免费,也不应该用未经核实的价格补齐。

推荐的生产路由策略#

单模型调用最容易写,但它把模型的所有偶发行为都暴露给最终用户。对于本轮两个模型,更合理的分工如下:

Fable 5 作为第一跳#

适合:

  • 已通过回归测试的数学、约束推理与短摘要;
  • 对首 token 和整体延迟敏感的交互;
  • 希望控制答案长度、减少后处理负担的任务。

前提是任务族已经做过过滤测试,且调用端会检查 content_filter、空正文和缺失字段。

Opus 5 作为高覆盖回退#

适合:

  • 输入类型不可预测;
  • 代码审查、严格 JSON、复杂物理等需要更宽任务覆盖的场景;
  • Fable 5 被过滤后,需要自动恢复用户请求的场景。

Opus 5 同样不能免检。本轮的问候语异常证明:HTTP 200 与 stop 仍可能没有业务答案。

OpenAI-compatible Python 示例#

下面的示例先调用 Fable 5,遇到过滤、空正文或验收失败时回退 Opus 5;如果 Opus 仍然只返回问候语,则再重试一次。

python
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://cn.crazyrouter.com/v1",
)


def valid_answer(text: str, required_terms: tuple[str, ...]) -> bool:
    normalized = (text or "").strip()
    if not normalized:
        return False
    if normalized.lower().startswith("hi! how can i help"):
        return False
    return all(term in normalized for term in required_terms)


def call_model(model: str, prompt: str) -> tuple[str, str | None]:
    response = client.chat.completions.create(
        model=model,
        messages=[{"role": "user", "content": prompt}],
        temperature=1,
        max_tokens=3000,
    )
    choice = response.choices[0]
    return choice.message.content or "", choice.finish_reason


def routed_completion(prompt: str, required_terms: tuple[str, ...] = ()) -> str:
    for model, attempts in (("claude-fable-5", 1), ("claude-opus-5", 2)):
        for _ in range(attempts):
            text, finish_reason = call_model(model, prompt)
            if finish_reason == "content_filter":
                break
            if valid_answer(text, required_terms):
                return text
    raise RuntimeError("No model produced a valid business answer")


answer = routed_completion(
    "Return a JSON incident summary with keys total, failed, recovered.",
    required_terms=('"total"', '"failed"', '"recovered"'),
)
print(answer)

生产实现还应记录 model、response ID、finish_reason、总延迟和验收失败原因。这样你才能区分模型算错、输出截断、内容过滤和路由丢失输入,而不是把它们都归入一个模糊的“模型失败”。

如果你正在规划多模型基础设施,可以参考AI API Gateway、聚合器和直连模型 API 的区别,以及Kimi K3 vs Opus 4.8 的七维测试

最终建议#

本轮最有价值的结论不是谁拿到了更高分,而是两款模型的失败形态不同:

  • Fable 5 的优势是共同任务更快、更短;风险是部分普通业务提示词会稳定触发过滤。
  • Opus 5 的优势是重试后覆盖全部任务;风险是偶发返回与真实输入无关的问候语。

因此,建议把 Fable 5 放在已经验证的高频任务前面,把 Opus 5 作为更广覆盖的回退,并对两条路径都做内容级验收。这样才能把模型对比结果转化成真实的可靠性,而不是只停留在一张排行榜上。

创建 API Key,复现这组双模型路由

FAQ#

Claude Opus 5 一定比 Claude Fable 5 更强吗?#

不能从这组小样本得出“所有任务都更强”。两者在数学、约束、统计纠错和实验设计上都通过;Fable 5 更快、更短,Opus 5 的任务覆盖更完整。选择应基于具体任务成功率,而不是模型名字。

Claude Fable 5 适合生产环境吗?#

适合经过回归测试的任务。本轮它在多类推理任务上正确且较快,但代码审查和事故 JSON 连续触发过滤。上线前应使用真实提示词测过滤率,并配置 Opus 5 或其他模型回退。

为什么 HTTP 200 仍然算失败?#

HTTP 200 只说明接口完成了响应。正文为空、finish_reason=content_filter、输出被截断,或者只回复问候语,都无法完成业务任务。生产指标应统计“验收通过率”,而不是只统计 HTTP 成功率。

returned model 为什么是 anthropic/claude-fable-5#

请求使用 claude-fable-5,响应中的 returned model 稳定为带 provider 前缀的 anthropic/claude-fable-5。这可以视为规范化别名;仅凭前缀变化不足以证明发生了模型替换。

可以直接比较两款模型的美元成本吗?#

本轮不可以。Fable 5 的响应提供了 cost 字段,Opus 5 没有提供同一口径字段。严谨的成本比较应从统一计费日志取数,并以“每个验收通过结果的成本”为指标。

应该重复多少次再决定上线?#

建议每个核心任务族至少重复 20–50 次,并覆盖正常输入、边界输入、长输入和容易触发过滤的输入。至少记录任务成功率、过滤率、空正文率、截断率、P50/P95/P99 延迟和成本。

怎样开始测试?#

使用 https://cn.crazyrouter.com/v1 作为 OpenAI-compatible base URL,分别调用 claude-opus-5claude-fable-5。固定提示词和参数,保存原始响应,再用本地断言或结构校验判定任务是否真正完成。

开始你的 Claude 双模型测试

Implementation Guides

Topics

Comparison

Related Posts

国产之光 Kimi 已经达到 Opus 4.8 了吗?七维 API 实测Comparison

国产之光 Kimi 已经达到 Opus 4.8 了吗?七维 API 实测

通过精确数学、物理建模、约束推理、统计反诱导、代码审查、严格 JSON 和不确定性校准七个维度,对比 Kimi K3 与 Claude Opus 4.8 的正确性、首个可见答案、总延迟和 reasoning Token 效率。

Jul 19
Claude Fable 5 vs Claude Opus 4.8:通过 Crazyrouter 中国区 API 的真实实测Comparison

Claude Fable 5 vs Claude Opus 4.8:通过 Crazyrouter 中国区 API 的真实实测

我们用 Crazyrouter 中国区 API 对 claude-fable-5 和 claude-opus-4-8 做了 8 项真实测试,覆盖代码修复、严格 JSON、推理、长上下文、API Review、中文总结、Agent 计划和路由策略。

Jun 10
GLM-5.2 vs Claude Fable 5 实测:真正的差异在输出预算和可见结果Comparison

GLM-5.2 vs Claude Fable 5 实测:真正的差异在输出预算和可见结果

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

Jul 6
Claude Fable 5 vs GPT-5.5:一次 max_tokens 误判如何改变模型对比结论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 打满和浏览器验证如何影响模型对比结论。

Jul 6
Kimi K3 对比 Claude Fable 5:数学更稳,还是响应更快?Comparison

Kimi K3 对比 Claude Fable 5:数学更稳,还是响应更快?

通过四类高难度任务比较 Kimi K3 与 Claude Fable 5 的数学可靠性、物理建模、Python 可执行性、文本推理、延迟和输出预算。

Jul 17
GLM-5.2 vs GPT-5.5 实测:难题下真正暴露的是可见输出稳定性Comparison

GLM-5.2 vs GPT-5.5 实测:难题下真正暴露的是可见输出稳定性

基于 Crazyrouter OpenAI-compatible API 的真实模型对比测试,使用偏置硬币等待 HTH、斜面摩擦弹簧压缩、Lorenz Canvas 动画三道更难题,比较 glm-5.2 与 gpt-5.5 的 max_tokens、reasoning_tokens、finish_reason、可见输出和浏览器验证结果。

Jul 7