一个不太显眼但有时限的变更:Anthropic 在 9 月 30 日的发布说明里写了,Claude Sonnet 4.5(claude-sonnet-4-5-20250929)计划于 2026 年 11 月 30 日在 Claude API 停用,建议迁移到 Claude Sonnet 5.5。离月底不到四周。

停用意味着什么要说清楚:不是"不推荐",是调不通。11 月 30 日之后还在用旧模型 ID 的服务,会直接收到模型不存在的错误。如果那个服务是夜间批处理,可能第二天早上才发现。

两代之间的实际差异

Sonnet 5.5 于 9 月 28 日上线,定位是"边界清晰的日常工作"——修 bug、写代码、做文档、做表格幻灯片这类任务。价格没变:每百万输入 token 2 美元、输出 10 美元,缓存读取 0.2 美元、写入 2.5 美元。上下文 1M,最大输出 128K。

参数没变,变的是每件事的 token 消耗。官方口径是输出速度提升三成以上,单个任务的总成本最多降三成,降的部分来自更少的 token 和更少的工具调用,不是单价下降。这个区别很重要:如果你的预算模型是按单价 × 预估 token 算的,账单不会自己降,因为省的是实际消耗,不是你估的量。

第三方评测给的口径可以参考:BenchLeader 在 11 月 4 日的榜单里给 Sonnet 5.5 打 65.3 分(总分前十),编码单项 73 分、知识单项 59 分;Artificial Analysis 的智能指数 56 分,仅次于 Opus 5.5。官方公布的几个基准是 Terminal-Bench 4.0 70.6%、OSWorld 2.1 80.1%、CursorBench 4.0 55.5%。

会直接报错的地方

官方明确点出两个会 400 的写法,这两个是迁移时最先撞上的:

第一,强制工具调用。tool_choice 用 {"type": "any"} 或 {"type": "tool"} 这种强制模式,在 5.5 上返回 400。依赖"必须调某个工具"来保证输出结构的地方,要改成用结构化输出或者在提示里约束,不能靠强制 tool_choice。

第二,关闭预思考的写法变了。原来可能是 thinking: {"type": "disabled"},现在要在 high 或更低的 effort 下传 thinking: {"type": "between_tools"}。这不是简单改名,语义也变了:between_tools 表示"在工具调用之间思考",和"完全不思考"不是一回事。

第三个坑更隐蔽:思考块与模型和对话绑定。多轮对话里如果复用了上一轮返回的 thinking block,或者把 A 模型的思考块喂给 B 模型,会出问题。之前很多人在做上下文裁剪时会把 thinking 块一起存下来重放,迁移到 5.5 之后这条路要断掉,得改成只保留可见的文本部分。

官方还说了一句概括性的话:为 Sonnet 5 写的代码,在 5.5 上可能在五个方面出错。这五个方面没有逐条列全,实践上就是上面这几个,加上 effort 档位的默认值变化。

迁移检查表

按风险从高到低排,逐项过一遍:

一,搜全仓库的旧模型 ID。字符串 claude-sonnet-4-5、claude-sonnet-4-5-20250929,包括配置文件、环境变量默认值、测试用例里的断言。最容易漏的是 CDN 或网关层的路由配置。

二,搜 tool_choice 的强制值。{"type": "any"} 和 {"type": "tool", ...} 每一处都要评估:改成结构化输出、改成多给一个"输出 JSON"的工具、还是改成提示词约束。

三,搜 thinking 配置。所有传 disabled 的地方按新语义改写,同时确认 effort 档位:high 以上还能不能关,取决于你的场景。

四,清掉所有持久化的 thinking block。会话历史表、缓存、日志里存的思考块,重放到新模型都会出问题。

五,重跑回归。这是唯一能确认真的没坏的办法。回归集不需要大,二十条覆盖主要链路就够:单轮问答、多轮工具调用、长文档摘要、结构化输出、流式。

迁移之外的判断

如果你的用量不大、链路简单,直接在 11 月 30 日前切过去,跑两天回归就行。真正需要谨慎的是三类场景:

依赖强制工具调用做结构化的。这类改造工作量最大,但不改不行,因为它在 5.5 上直接报错。

依赖 thinking 块做链式推理的。官方说思考块绑模型绑对话,意味着跨模型复用的架构要重做。

按 token 单价做成本模型的。单价没变但消耗变了,报价模型和实际账单会偏离,要么按实测重算,要么按官方口径打个下调。

最后一句提醒:停用日期是 API 侧的,托管在 Bedrock、Google Cloud、Azure 上的同名模型有各自的退役节奏,日期可能不同,这几条线要分别确认,别把 API 的 11 月 30 日当成所有渠道的统一截止。