文章速读
这篇文章回答的问题
已在 Fable 5 / Opus 5 / Opus 4.8 上跑生产的 API 开发者,升级到 Claude Fable 5.1 时哪些 breaking changes 会导致现有代码报错、tool_choice 和 thinking block 规则具体怎么变、按什么步骤迁移最稳妥
核心结论
Fable 5.1 有 3 条报错级变更:tool_choice 的 any/tool 类型返回 400(改 auto + strict: true、JSON outputs 或 mid-conversation system message);thinking block 单向绑定(旧模型读不了 Fable 5.1 的 block,静默丢弃不计费);编辑 thinking block 之前的历史会报 400(改用三种安全压缩形态、服务端 compaction 或 drop_block)。另有 3 条不报错的行为变化:并行工具调用变少、进度消息变少、low effort 下检索变少。三类受影响调用都不沾的代码大概率只需换模型 ID。旧模型暂无官方退役时间表,迁移时机按 cache reads 降价收益与改造成本决定。
关键要点
- Fable 5.1 模型 ID 为 claude-fable-5-1,2026 年 9 月 1 日发布,官方承诺退役不早于 2027 年 9 月 1 日,1M 上下文、128K 输出,adaptive thinking 常开,默认 effort 为 high
- 官方总结为 3 条报错级 breaking changes、3 条行为级变化、5 条新增能力
- tool_choice 设 {"type":"any"} 或 {"type":"tool"} 返回 400 invalid_request_error,官方文案:tool_choice: type "tool" and "any" are not supported for this model.;auto/none 不变;限制适用于 Messages API、Message Batches API、token counting 端点
适用边界:全部变更条目、报错文案、beta header、定价数字均以 2026-09-01 版官方迁移指南、What's new、模型卡与官方定价页为准;行为差异仅写官方表述,不做能力评测;旧模型退役时间线官方未公布,不构成迁移硬时限;beta 功能标注稳定性风险,生产环境谨慎依赖;LiteLLM 相关表述为厂商一手口径,非 Anthropic 官方。
刚收录的 AI 工具,适合继续发现可用产品。
如果你的生产环境正在调用 claude-fable-5、claude-opus-5 或 claude-opus-4-8,把模型 ID 直接改成 claude-fable-5-1 就上线,第一波请求大概率会撞上 400:所有 tool_choice 设了强制调工具的调用会被直接拒绝。更麻烦的是另一类变更根本不报错,长程 agent 的并行工具调用悄悄变少,每轮多花 token 和往返时间,问题要到成本报表或延迟监控里才浮出来。这篇指南面向正在评估升级的 API 开发者和平台工程师,按官方迁移文档逐条对照改法,再给迁移步骤、报错排查和定价决策依据。
先看总账:这次升级到底改了多少东西?
官方模型卡对 Fable 5.1 的变更有明确总结:3 条报错级 breaking changes、3 条行为级变化、5 条新增能力。先区分两个概念:报错级变更是硬性不兼容,不改代码请求就返回 400;行为级变化不报错,但模型的输出模式变了,影响藏在延迟、成本和交互体验里。模型 ID 为 claude-fable-5-1,2026 年 9 月 1 日发布,官方承诺退役不早于 2027 年 9 月 1 日,上下文 1M、最大输出 128K,adaptive thinking 常开,默认 effort 为 high。
先说结论:按官方迁移指南的清单推导,影响集中在三类调用上。第一类是强制指定工具的(tool_choice 用了 any 或 tool);第二类是跨模型路由、回退、重试时携带 thinking block 的;第三类是会编辑对话历史的(压缩、重排、删轮)。如果你的代码三类都不沾,大概率只需换模型 ID 就能跑。旧模型这边,官方弃用页面目前没有 Fable 5、Opus 5、Opus 4.8 的任何退役条目,不存在“必须马上迁”的硬时限,迁移时机可以按成本账来定。
顺带一句:同期发布的 Mythos 5.1 与 Fable 5.1 是同一模型的不同安全配置,访问受限,本文不展开。
升级后 tool_choice 报 400 怎么改?
这是最容易撞上的第一条。Fable 5.1 不再支持 tool_choice 设为 {"type": "any"} 或 {"type": "tool", "name": ...},这类请求会返回 400 invalid_request_error,官方报错文案为:tool_choice: type "tool" and "any" are not supported for this model.。auto 和 none 的行为不变。这条限制同时适用于 Messages API、Message Batches API 和 token counting 端点,批量管线别以为只在在线链路上改就行。
旧写法:
{
"model": "claude-fable-5",
"tool_choice": {"type": "any"}
}
官方给出三种替代路径,按场景选:
- 流程编排类:改回
auto,在 prompt 里写明“本轮必须调用某工具”,并给该工具定义加strict: true。适合原来用any强制模型必须调工具的 agent 编排。 - 结构化输出类:改用 JSON outputs(通过
output_config.format指定输出格式)。如果原来用{"type": "tool", "name": "extract"}只是为了逼模型吐结构化 JSON,这是最对口的替代。 - 多轮对话中临时强制:用 mid-conversation system message 在特定轮次指定必须调哪个工具。注意这是 beta 功能,生产环境谨慎依赖,下文 beta 清单里有对应 header。
受影响场景点名:用强制 tool_choice 做流程控制的 agent、用 Batches API 批量跑抽取任务的管线。另外,如果你的请求经过 LiteLLM 这类网关,要注意它会把 OpenAI 风格的 tool_choice: "required" 映射为 Anthropic 的 any,在 Fable 5 上能跑的请求原样发到 5.1 会失败(此为 LiteLLM 官方博客口径,非 Anthropic 文档)。
路由和回退场景注意:thinking block 现在是“单向”的
第二条 breaking change 不一定报错,但会让依赖推理内容的下游逻辑出问题。Fable 5.1 可以读取 Mythos 5.1、Opus 5、Fable 5、Mythos 5 及更早模型产生的 thinking block;反方向则除 Mythos 5.1 外都不可读。也就是说,你从 Fable 5.1 切到 Opus 5 再切回来,或者把 Fable 5.1 的历史喂给旧模型,那些 block 会被 API 静默丢弃。
关键信息:被丢弃的 block 不计费。所以成本上没有异常,异常在行为上。如果你的代码解析 thinking block 做下游判断(比如展示推理过程、基于 thinking 内容做路由决策),切走再切回来之后这部分内容就没了,而且没有任何报错提示。带上 thinking-binding-controls-2026-08-01 这个 beta header 后,丢弃行为会在响应顶层 input_transformations 数组里报告,排查时可以靠它。
方向对照简化成一张表:
| 请求模型 | 历史中的 block 来自 | 结果 |
|---|---|---|
| Fable 5.1 | Fable 5 / Opus 5 / Mythos 5 及更早 | 可读 |
| Fable 5.1 | Mythos 5.1 | 可读 |
| Opus 5 / Fable 5 等 | Fable 5.1 | 静默丢弃,不计费 |
官方还提供一个服务端回退 beta(fallbacks: "default",header 为 server-side-fallback-2026-07-01):Fable 5.1 允许回退到 Opus 4.8 与 Opus 5,但回退模型收不到 thinking block。同样是 beta,生产环境谨慎依赖。
报 "The block is bound to a different conversation" 是怎么回事?
三条 breaking changes 里改动量最大的一条,主要影响做对话压缩和历史管理的代码。规则是:编辑 Fable 5.1 thinking block 之前的任何内容,会使该 block 及其后的所有 block 失效,请求返回 400,官方报错文案为 The block is bound to a different conversation。
官方列出四种失效模式:编辑、重排或删除较早轮次;注入后又删除的临时文本;重建 system 或 tools 定义;URL 返回了不同字节。注意第四条,校验的是字节而不是 URL 本身,所以轮换签名的同一文件 URL 没问题,但同一 URL 背后内容变了就会触发。
生效条件要看清,这是账号创建时间而非发布日期:2026 年 8 月 31 日及以后创建的账号强制执行检查;更早创建的账号只有在请求里显式设置 thinking.block_binding.prefix_mismatch_behavior 时才处理。也就是说老账号短期内可能感知不到这条规则,但新账号立刻全量生效,别拿老账号测试通过就当没事。
如果你必须编辑历史,官方给出客户端压缩的三种安全形态:
- simple compaction:把整段历史替换成一条摘要加新的 user 轮次,官方推荐的做法;
- keep-tail:保留尾部历史时,剥离尾部的 thinking / redacted_thinking block,或设置 drop_block;
- background compaction:后台生成摘要期间,所有请求带上 drop_block。
明确禁止从历史中间抽删单轮。另一个思路是改用服务端 compaction 或 context editing,官方说明这类操作不算编辑,不会触发绑定检查。
如果确实无法改造历史管理逻辑,可以 opt-out:带 thinking-binding-controls-2026-08-01 beta header 并设置 prefix_mismatch_behavior: "drop_block",失效的 block 会被丢弃而不是报错,丢弃以 reason: "prefix_binding_mismatch" 报告。Mythos 5.1 不做此检查。
不报错但行为变了:三个最容易漏掉的隐性坑
这类变更测试环境最容易漏过,因为代码全绿、返回正常,变化藏在延迟和成本里。
坑一:并行工具调用变少。 官方迁移指南明确说明,在长程 agent 循环中(自定义 coding agent、bash-and-editor、computer use 场景),Fable 5.1 可能每轮只发一个工具调用,而前代更常并行发多个。不影响答案质量,但多花 token、往返次数和时间。显式列出多个目标的请求仍然会并行。官方在 prompting 指南里给出了修复指令原句,直接加进 prompt 即可:
First privately list what you need next; then request every item
that doesn't depend on another's result in this one response.
放置位置两种:用带 clear_at: "next_user_message" 的 turn-scoped system message(beta 功能,header 见文末清单),或者不用 beta 时放在 tool_result 块之后的 text block 里。官方文档有完整 Python 示例可照抄。
坑二:进度消息变少。 工具调用之间的进度更新变少,agentic coding 的摘要更短。如果你的界面渲染这些更新,需要设 display: "updates"(beta)或 "summarized",对应 header 为 thinking-display-updates-2026-08-18。
坑三:low effort 下检索变少。 低 effort 档位下 Fable 5.1 更倾向凭记忆作答,更少触发 search/retrieval 工具。依赖低 effort 做检索的产品要么提高 effort,要么在 prompt 里显式指示何时必须搜索。
建议在迁移验证清单里加一项“延迟、成本、轮次对比”,专门抓这三类变化。
你从哪个模型迁过来?三条路径的差别
从 Fable 5 迁:只需处理本文前面列出的全部增量变更,价格不变(input $10 / output $50 每 MTok)。
从 Opus 5 迁:额外三项。第一,thinking: {"type": "disabled"} 在任何 effort 下都返回 400,adaptive thinking 常开不可关,代码里删掉这个参数。第二,工具调用之间的文本从 text block 变为 progress-update 类的 thinking block,默认 omitted 情况下为空,解析响应的代码要改。第三,安全分类器类别比 Opus 5 更广,新增 "bio"、"reasoning_extraction" 等类别,依赖分类器输出的内容审核链路要重新对照。价格从 $5/$25 升到 $10/$50。
从 Opus 4.8 迁:两步走。先套用官方 Opus 4.8 到 Fable 5 的 API 级变更(adaptive thinking、thinking 输出、refusals、effort、512-token 缓存下限、定价、数据保留),再叠加 Fable 5 到 5.1 的增量。合规差异必须提前评估:Opus 4.8 支持 ZDR(零数据保留),而 Fable 5.1 除非 Anthropic 明确授权否则不可 ZDR,需要 30 天数据保留,属于 Covered Models。有合规硬约束的团队这一条可能直接决定迁不迁。另外,Anthropic 定价页把 Opus 4.8 归入了 Legacy 分组,但官方弃用页面没有它的退役条目,分组不等于下线时间表,不要据此推断。
三条路径的行为差异一律以官方迁移指南表述为准,本文不写“谁更强”的判断。
按什么步骤从测试切到生产最稳妥?
结合官方迁移指南的 checklist 和通用工程实践(以下步骤为建议,非官方规定流程):
- 逐条对照改代码。优先处理三处:tool_choice 调用点(全局搜
any和tool)、thinking block 解析逻辑、历史管理/压缩代码。 - 测试环境跑自己的 eval。官方明确建议重新 sweep effort 档位,不要沿用为 Fable 5 调好的配置:Fable 5.1 默认
high,支持 5 档,官方说明增益在xhigh/max档最大,但会增加思考时间和首字延迟,具体档位要在自己的任务上测。 - 加延迟、成本、轮次对比项,抓前文三个隐性坑。
- 灰度切流量并配回退预案。已经在用 LiteLLM、ngrok AI Gateway 这类 AI 网关的团队,可以借模型路由做灰度发布和失败回退,但 breaking changes 本身仍要按官方清单逐条改代码,网关不能替代代码修改(LiteLLM 官方博客还提醒其成本表未更新时会按 base input 计费导致高估,升级网关适配层时留意)。
- 设计回退目标时注意 thinking block 单向性:回退到旧模型后历史里的 block 会被丢弃,回退链路的下游逻辑要能容忍这一点。
另外两个继承自 Fable 5 的硬限制别踩:不支持 assistant prefill 和手动 thinking budget(会返回 400),非默认的 temperature / top_p 也返回 400。
常见报错排查:升级后撞到的错对照这张表
| 现象 | 原因 | 解法 |
|---|---|---|
400 tool_choice: type "tool" and "any" are not supported for this model. | 强制 tool_choice 被移除 | 改 auto + 指令 + strict: true,或 JSON outputs,或 mid-conversation system message |
400 The block is bound to a different conversation | 编辑了 thinking block 之前的内容 | 检查压缩/重排/删轮逻辑,改用三种安全压缩形态或服务端 compaction,或设 drop_block |
| 路由切走再切回后推理内容丢失 | thinking block 单向绑定 | 静默丢弃不计费,属预期行为;带 beta header 可在 input_transformations 里看到报告 |
| agent 每轮只调一个工具,变慢变贵 | 并行调用频率下降 | 加官方批处理指令,放 turn-scoped system message 或 tool_result 后的 text block |
| 界面进度消息消失、摘要变短 | 进度消息变少 | 设 display: "updates" 或 "summarized"(beta) |
Opus 5 迁来后 thinking: {"type": "disabled"} 报 400 | adaptive thinking 常开 | 删除该参数 |
cache reads 降价 75% 之后,要不要现在迁?
定价数字以官方定价页为准,写作时已核对:Fable 5.1 input $10 / output $50 每 MTok,5 分钟 cache write $12.50,1 小时 cache write $20,cache hits/refreshes $0.25 每 MTok。最后这个数字是关键:计费倍率 0.025x,仅 Fable 5.1 与 Mythos 5.1 享受,其他模型是 0.1x。对照前代,Fable 5 的 cache reads 是 $1,Opus 5 和 Opus 4.8 是 $0.50。512-token 的最小可缓存长度不变。
官方公告给出的口径:典型负载总成本比 Fable 5 约降 25%,高 agentic 场景最多约 45%。能力增益的官方表述集中在 coding、knowledge work、long-running problem-solving 这些领域,其他场景的表现需要你自己在 eval 上确认。
落到成本账上:收益最直接的是缓存命中率高、多轮长程 agent 的负载——cache reads 降到 Fable 5 的四分之一,长对话里每轮重复读的前缀成本大幅下降。至于哪些团队适合现在动手、哪些应该先观望,文末单独给判断清单。
旧模型目前没有官方退役时间表,所以这不是一个“不迁就停服”的决策,而是一笔账:缓存收益,减去行为变化的改造成本,再减去合规差异的评估成本,正数就迁,负数就等。
6 项 beta 功能清单:生产环境先别急着依赖
Fable 5.1 的多项新能力目前都是 beta,各自需要对应的 header,生产环境谨慎依赖:
| Beta 功能 | Header |
|---|---|
| Per-message effort(会话中调整 effort) | mid-conversation-output-config-2026-07-01 |
| Turn-scoped system messages | mid-conversation-system-clear-at-2026-08-21 |
| Mid-conversation 工具增删 | mid-conversation-tool-changes-2026-07-01 |
display: "updates" 进度展示 | thinking-display-updates-2026-08-18 |
| Thinking 绑定控制(含 drop_block) | thinking-binding-controls-2026-08-01 |
服务端回退 fallbacks: "default" | server-side-fallback-2026-07-01 |
其中 per-message effort 和 turn-scoped system messages 在前文的修复方案里都出现过,但它们是 beta,接口和行为可能变化,核心链路不要押注。5 条新增能力里还有一条 content provenance,细节以官方文档为准,本文不展开。
升级前几个高频问题
Fable 5.1 能关掉 thinking 吗?
不能。adaptive thinking 常开,thinking: {"type": "disabled"} 在任何 effort 下都返回 400,也不支持手动 thinking budget。从 Opus 5 迁来的代码里如果有这个参数,直接删掉。
升级后一定要改代码吗?
不一定。影响集中在三类调用:强制 tool_choice、跨模型路由/回退携带 thinking block、编辑对话历史。三类都不沾的代码,大概率换模型 ID 就能跑,但建议照“延迟、成本、轮次对比”跑一轮 eval 再切流量,防住不报错的行为变化。
从 Opus 4.8 迁移和从 Fable 5 迁移有什么不一样?
从 Opus 4.8 迁要两步走:先套 Opus 4.8 到 Fable 5 的 API 级变更,再叠加 Fable 5 到 5.1 的增量。合规差异更关键:Opus 4.8 支持 ZDR,Fable 5.1 默认不可 ZDR、需 30 天数据保留,有合规硬约束的团队要先走授权评估。
cache reads 降价 75% 后我的成本能降多少?
取决于缓存命中率。官方口径是典型负载总成本比 Fable 5 约降 25%,高 agentic 场景最多约 45%;缓存命中率高、多轮长对话的负载吃到的收益最直接。
旧模型什么时候下线?现在不迁行不行?
官方弃用页面目前没有 Fable 5、Opus 5、Opus 4.8 的退役条目,暂无硬时限。迁移时机按“缓存收益 − 行为变化改造成本 − 合规差异”三笔账来定,不必为下线风险抢时间。
谁适合现在迁,谁应该先观望
适合现在动手的:从 Fable 5 迁移、负载以长程 agent 和 agentic coding 为主、缓存命中率高的团队,改动集中在 tool_choice 调用点和历史管理两处,迁完直接吃 cache reads 降价的收益。应该先观望的:从 Opus 4.8 迁移且有 ZDR 合规约束的团队(先走授权流程)、强依赖强制 tool_choice 的编排系统(先完成替代方案改造)、低 effort 检索型产品(先调整检索策略)。下一步动作很明确:把官方迁移指南的 checklist 过一遍自己的代码库,圈出三类受影响调用,在测试环境跑一轮带成本对比的 eval,数字出来再决定切流量的时间点。
常见问题
升级到 Fable 5.1 后 tool_choice 报 400 怎么办?
Fable 5.1 不再支持 tool_choice 的 any 和 tool 类型,返回 400 invalid_request_error。官方替代:改 auto + prompt 明确指令 + strict: true;结构化输出改用 JSON outputs(output_config.format);多轮中临时强制用 mid-conversation system message(beta)。auto 和 none 不变。
报 The block is bound to a different conversation 是什么原因?
编辑了 Fable 5.1 thinking block 之前的任何内容(编辑/重排/删除早轮、注入后删除的临时文本、重建 system 或 tools、URL 返回不同字节),使后续 block 失效。解法:改用三种官方安全压缩形态或服务端 compaction,或带 beta header 设置 drop_block 改报错为丢弃。2026-08-31 后创建的账号强制执行检查。
路由切到别的模型再切回来,thinking 内容没了正常吗?
正常。thinking block 是单向绑定:Fable 5.1 可读旧模型的 block,旧模型(除 Mythos 5.1 外)读不了 Fable 5.1 的 block,会被 API 静默丢弃且不计费。带 thinking-binding-controls-2026-08-01 beta header 可在 input_transformations 数组里看到丢弃报告。
Fable 5.1 能关掉 thinking 吗?
不能。adaptive thinking 常开,thinking: {"type": "disabled"} 在任何 effort 下返回 400,也不支持手动 thinking budget。从 Opus 5 迁来的代码需删除该参数。
读完这篇,可以继续看
Claude Mythos 5.1 怎么申请?访问条件、申请流程与合规使用说明
这篇指南面向网络安全与生命科学领域的研究机构和企业,讲清三件事:Mythos 5.1 和 Fable 5.1 差在哪、你的组织够不够格、通过 Project Glasswing、Cyber Verification Program 等渠道分别怎么走,以及获批后哪些任务仍会触发 safeguards 或自动回退到 Opus。个人普通用户没有申请通道,文中会明确说明。
Claude Fable 5.1 长任务怎么跑?Agent 工作流设计与提示词实践指南
这篇指南面向需要用 Claude Fable 5.1 跑小时级甚至天级任务的开发者和重度知识工作者,按大型代码库迁移、多步骤研究两个场景,讲清任务怎么拆、lead 加子代理怎么协作、提示词怎么写才能不停转,以及缓存读降价后如何组织上下文和控制成本,关键指令附官方原文。
ngrok AI Gateway
开发与编程
通过单一网关统一路由 OpenAI、Anthropic 及自建模型,内置访问控制与可观测性。
行业深度
继续查看这个主题下的更多分析和案例。