四款 Claude 模型, 到底该用哪一个
Fable 5、Opus 4.8、Sonnet 5、Haiku 4.5——名字一串,价格差 10 倍。这篇把 一条选型主线讲透:日常默认 Opus 4.8,轻量小活降 Sonnet 5, 子代理归 Haiku 4.5,只有 Opus 4.8 都啃不动的最苛刻长程任务才召唤 Fable 5。再顺带把 thinking / effort、输出与上下文这三个省钱杠杆一次说清。
四款模型:定位与定价
先把四款模型的价格和定位摆在一起看。价格单位是每百万 token,输入 / 输出分开计——记住一件事:输出永远比输入贵得多,省钱的重点在少产出(第四、六节细讲)。
关系要厘清:谁是日常默认,谁是攻坚兜底
- Opus 4.8 是日常默认($5 / $25):高自主 agentic、复杂编码、知识工作、关键推理都默认用它。
- Fable 5 不是日常选择——它是最强的广泛发布模型,但定价高于 Opus 层,只面向 Opus 4.8 都啃不动的最苛刻长程自主任务。
Tokenizer 提醒(迁移必看):Sonnet 5 用了新 tokenizer,同样一段文本比 Sonnet 4.6 多约 30% token——单价没变,但等价请求的成本上升了。迁移后先用 count_tokens 重新基线,别沿用旧模型的 token 预算。Fable 5 与 Opus 4.8 / 4.7 同 tokenizer,从它们迁来 token 数基本不变。
Fable 5 有一批「与众不同」的 API 行为
如果你真的要直调 Fable 5,下面这些坑要先知道(用 Claude Code、走中转分组时多数由客户端替你处理,但心里有数不吃亏):
| 行为 | 说明 |
|---|---|
| 思考恒开 | 不能传 thinking,传 disabled 会 400(Opus 4.8 / 4.7 传 disabled 反而合法) |
| 思维链不返回 | 原始 CoT 永不返回,只能拿 display:"summarized" 摘要(此规则现已扩展到 Sonnet 5 / Opus 4.8·4.7,新模型默认 display:"omitted":思考字段为空,只回 signature);同模型续聊时思考块要原样回传,换模型会被静默丢弃且不计费 |
可能返回 refusal |
安全分类器可能拒绝良性相邻任务。新代码默认开服务端 fallback:beta 头 server-side-fallback-2026-06-01 + fallbacks:[{"model":"claude-opus-4-8"}],被拒后同一次调用内由 Opus 4.8 重跑 |
| 要求 30 天数据保留 | ZDR / 保留期不足的组织,所有请求都 400 |
fallback 计费规则:输出前被拒完全不计费;流式中途被拒只计已流出部分(应丢弃);fallback 重跑按 Opus 4.8 自己的价格计费。
任务与场景选型
核心原则只有一句:日常默认 Opus 4.8。Sonnet 5 仅用于轻量小任务;Haiku 4.5 是子代理的默认模型(系统自动唤起,无需手动选);Fable 5 只在 Opus 4.8 不够时攻坚。
| 模型 | 定位 | 典型适用任务 |
|---|---|---|
| Opus 4.8 | 日常默认 | 高自主 agentic、复杂编码、知识工作、关键推理——不确定用什么就用它 |
| Sonnet 5 | 轻量小任务 | 简单改写、总结、格式化、批处理等明确的小活 |
| Haiku 4.5 | 子代理默认 | 系统唤起子代理时自动使用,一般不用手动指定 |
| Fable 5 | 攻坚 | 最苛刻的长程自主运行、一次做对且错误代价极高的关键推理、多模态硬任务 |
一句话判断法(照着走就行)
别做「先小后大逐档试错」。主任务直接给 Opus 4.8,避免用便宜模型返工——返工反而更贵。Haiku 4.5 归子代理自动用,你基本不用管它。
你是在用 Claude Code,还是直调 API?
再往下几章会讲一堆参数——thinking、effort、max_tokens、task_budget、上下文管理、缓存前缀……但你到底关不关心它们,取决于你走哪条路。先把两种使用场景分开看清楚,再决定要不要往下读。
在 Claude Code 里
你只需要挑模型,其他全交给客户端。这也是我们主推 Claude 系列的核心理由——把最强模型的推理上限直接交到手里,不用为参数细节分心。
- 模型:
/model opus(日常主力)·/model sonnet(轻量小活)·/model fable(攻坚) - 思考深度(effort):Opus 4.8 / Sonnet 5 / Fable 5 默认
high,Opus 4.7 默认xhigh——我们推荐直接拉到/effort xhigh:用 Claude 就是为了推理上限,档位给拉满 - 思维链:Claude Code 客户端自动处理签名回传与显示;界面里可 Ctrl+O 展开思考摘要
- 其它参数:
thinking/max_tokens/ 缓存 / 上下文压缩 / 结构化输出——全部由客户端自适应管理,不用你手动传 - 单轮想更深挖:prompt 里加
ultrathink关键词即可
直调 API(含走 VibeAPI 中转)
每个参数都要自己传对。不同模型的写法差异、思维链的取回方式、上下文的编辑压缩规则——都得亲自管,一处不对就是 400 或者悄悄浪费 token。
- 思维链现在统一不返回明文了:新模型(Fable 5 / Sonnet 5 / Opus 4.8 / 4.7)默认
display: "omitted"——响应里thinking字段为空,只回一个加密signature;想让用户看到得显式传display: "summarized"拿摘要(依然不是原始 CoT) - 多轮续聊:signature 要原样回传,否则思考状态丢失;换模型时 signature 被静默丢弃
- 参数写法因模型而异:Fable 5 不能传
thinking、旧模型才用budget_tokens、新模型采样参数会 400(详见 04 章) - 输出 / 上下文 / 缓存:都得你自己算预算、自己压缩、自己维护缓存前缀(详见 05-07 章)
- 计费仍按完整思考 token:
omitted只是不传输,钱照收
怎么判断自己在哪个场景?命令行跑 claude、VS Code / JetBrains 的 Claude Code 扩展、桌面 App、web 版 claude.ai/code——都是场景 A;自己写代码 POST https://api.anthropic.com/v1/messages、或 POST https://api.vibeapi.cn/...(走 VibeAPI 中转分组)——都是场景 B。
一个常见误解:「走 VibeAPI 中转」不等于「用 Claude Code」。中转分组只帮你转发请求、不动参数——所以只要是你自己写代码调 API,就属于场景 B,参数得自己写对。Claude Code 客户端本身也可以配 ANTHROPIC_BASE_URL 指向 VibeAPI 中转——那种用法仍然属于场景 A,客户端还是替你管所有参数。
最影响质量与成本的一对参数
选好模型只是第一步。真正决定「这次调用花多少钱、答得多好」的,是 thinking(思考) 和 effort(努力度) 这对参数。新模型已经废弃固定的 budget_tokens,改用自适应思考 + effort 档位。
thinking 怎么设:每款模型写法不同
| 模型 | 正确写法 | 说明 |
|---|---|---|
| Fable 5 | 不传 thinking |
思考恒开;传 disabled 会 400(传 adaptive 合法但多余) |
| Opus 4.8 / 4.7 | {"type":"adaptive"} |
省略则不思考,需显式开;disabled 合法 |
| Sonnet 5 | 省略即自适应 | 省略默认就是 adaptive(与 4.6 相反——迁移时留意 max_tokens 要给思考留余量) |
| 旧模型 (≤4.5) | {"type":"enabled","budget_tokens":N} |
N 必须 < max_tokens,最小 1024 |
三个「会 400」的旧习惯,现在必须改掉:
budget_tokens在 Fable 5 / Opus 4.8·4.7 / Sonnet 5 上会 400(Opus 4.6 / Sonnet 4.6 上是 deprecated 但仍可用,仅作迁移过渡)。- 采样参数
temperature/top_p/top_k在 Fable 5 / Opus 4.8·4.7 上会 400,Sonnet 5 上非默认值也会 400——删掉它们,改用提示词引导风格与多样性。 - 想给用户展示推理过程,加
display:"summarized";否则默认omitted,思考块文本为空,流式看起来像长时间卡顿(这是从 4.6 默认 summarized 的静默变更)。
effort 档位:默认 high,别反射式上 max
通过 output_config: {effort: ...} 设置。档位越高越聪明也越贵——但新模型智力上限更高,high 常是甜点,不要一上来就顶格。
支持范围注意:effort 在 Haiku 4.5 / Sonnet 4.5 上会报错(不支持);max 需 Fable5 / Opus4.6+ / Sonnet5 / Sonnet4.6。
省 token 不只靠降质量。effort 越低 = 更少更集中的工具调用、更少前言、更简短确认。先在自己的评测集上扫 medium / high / xhigh 再定档;子任务 / 简单任务用 low,长程 agentic 用 high / xhigh 并把完整任务规格一次说清。
输出控制:省钱的第一杠杆
max_tokens / task_budget / streaming 全由客户端管
输出比输入贵得多——Fable 5 输出 $50 vs 输入 $10,整整 5 倍。所以省钱的重点从来不是「少喂」,而是少产出。
max_tokens:别定太低,也别裸奔大值
| 场景 | 建议值 | 原因 |
|---|---|---|
| 非流式常规请求 | ~16000 | 保持在 SDK HTTP 超时之下 |
| 流式请求 | ~64000 | 无超时顾虑,给模型空间 |
| 分类 / 短输出 | ~256 | 明确限制产出 |
| 缓存预热 | 0 | max_tokens:0 只预热不产出(不能与 stream / 结构化输出 / 强制 tool_choice / Batch 同用) |
撞上限会从半句截断并需重试,别一味压低。max_tokens 是思考 + 正文的总上限:Sonnet 5 省略 thinking 默认自适应思考,预算太紧会出现「几乎全是思考 + 截断答案」。另外 128K 输出(Fable5 / Opus4.6+ / Sonnet5·4.6;Haiku 4.5 上限 64K)必须走 streaming,否则 HTTP 超时——用 .stream() + .get_final_message()。
压缩输出:最直接的省产出手段
- 明确要求「只给结论 / 只给代码 / 限定字数」;positive 示例比「不要啰嗦」更有效。
- effort 降档也会减少前言与确认(见上一节)。
- 新模型(Opus 4.8 / Sonnet 5)默认叙述更多——加一句「工具调用间默认沉默,只在有发现 / 换方向 / 受阻时说一句」可显著减产。
结构化输出:减少无效 token 与重试
- 用
output_config: {format: {type:"json_schema", schema:...}}约束响应,别用已废弃的output_format。 - 强制工具参数合规:工具定义上加
strict:true(配additionalProperties:false+required)——注意放在工具上,不是tool_choice上。
prefill 技巧要弃用了:Fable5 / Opus4.6+ / Sonnet4.6 / Sonnet5 不支持 assistant 前缀填充(会 400;Sonnet 4.5 及更早仍支持)。用结构化输出或系统提示替代旧的 prefill。唯一例外:Fable 5 fallback credit 重试时回显被拒响应的 prefill claim 是被接受的。
task_budget:让模型自己优雅收尾(beta)
适用 Fable5 / Sonnet5 / Opus4.8·4.7。写法 output_config: {task_budget: {type:"tokens", total:N}}(beta 头 task-budgets-2026-03-13,最小 20000)。
模型看不见的硬上限 撞到就硬截断、从半句停 需要你重试
模型知情的整轮软预算 看到倒计时自我节流 优雅收尾,不被硬砍
迁移时别乱设 task_budget——预算值要么实测、要么问用户,别猜。
上下文与长任务管理
1M 上下文不等于该把整库塞进去——喂得越多越慢越贵。三种机制配合用,按场景挑。
| 机制 | 何时用 | 做什么 | 成本 |
|---|---|---|---|
| 控制上下文长度 | 首选,任何时候 | 只喂必要片段;用 RAG 检索代替整库塞入;及时裁剪历史 | 最省 |
| 上下文编辑 context editing |
多轮后旧工具结果 / 思考块变陈旧 | 清除旧 tool_result 或 thinking 块(不总结) | 省 |
| 压缩 compaction |
会话逼近上下文窗口上限 | 服务端总结早期上下文为压缩块 | 中 |
一句话分清「编辑」和「压缩」:编辑是「删」陈旧轮次,压缩是「近上限时总结」。二者都在会话内;跨会话持久化要靠记忆(memory)。长程 agent 常三者并用。
关键 API 细节(易踩坑)
压缩(beta,compact-2026-01-12):必须把 response.content 整个追加回 messages——压缩块要靠它替换被压缩的历史。只取文本字符串追加会静默丢失压缩状态。
上下文编辑(beta,context-management-2025-06-27):用 context_management.edits,类型 clear_tool_uses_20250919 或 clear_thinking_20251015——不是 compact_20260112(那是压缩,别混)。二者都走 client.beta.messages.*。
提示缓存由 Claude Code 客户端默认管理,无需手动配置——仅当自己直调 API 构建长程 agent 时,才需要关心缓存前缀问题。
成本优化策略(速查)
把前面几节的省钱手段汇成一张速查表——记住哪一招省在「输入侧」、哪一招省在「输出侧」,用起来就有的放矢。
| 手段 | 做法 | 省在哪 |
|---|---|---|
| 压缩输出 | 只给结论 / 代码、限字数、降 effort(见 04) | 输出侧 |
| 控制上下文 | RAG 代替整库、裁剪历史、context editing(见 05) | 输入侧 |
| 批处理(Batch) | 可容忍延迟的任务走批量接口 | 全 token 5 折 |
| 明确降档 | 明确的轻量小活交给 Sonnet 5,别占用 Opus | 避免大材小用 |
| 结构化输出 | JSON schema / strict 工具约束,减少重试 | 减无效 token |
| 监控预算 | 对 Fable 5 / Opus 单独计量,设 token 上限或 task_budget | 防长任务失控 |
限输出降 effort + 控住上下文(RAG / 编辑 / 压缩)+ 明确小活降档 Sonnet —— 这就是最大的省钱杠杆。
分工方案:谁打主力,谁攻坚
把四款模型当成一支队伍:Opus 打主力、Sonnet 干小活、Haiku 归子代理、Fable 攻坚。不做「先小后大逐档试错」——主任务直接给 Opus 4.8,避免便宜模型返工反而更贵。
一个进阶用法:让 Fable 5 / Opus 4.8 只做关键审校——主体用便宜模型跑,最后用少量顶配 token 把一遍质量关,比全程顶配更划算。
一条主线:日常默认 Opus 4.8,其余按需增减。
明确的轻量小活降到 Sonnet 5;Haiku 4.5 留给子代理自动用;
只在 Opus 4.8 都不够的最苛刻长程任务,才召唤 Fable 5。
Claude Code 里只挑模型,其他忘掉;直调 API 才要每个参数亲自写对。
/effort xhigh,思考 / 缓存 / 上下文全交给客户端
🔧 直调 API 场景:思维链只回 signature 不回明文,每个参数亲自写对(04-07 章)
💰 省钱三招(API 侧):限输出降 effort + 控住上下文(RAG / 编辑 / 压缩)+ 明确小活降档 Sonnet