Claude Sonnet 5.5 发布后,价目没变,为什么 JSON 抽取还是会 400?从 between_tools 到 JSON Schema

截至 2026 年 9 月 29 日:Sonnet 5.5(9 月 28 日)价目仍是 $2 / $10。thinking.disabled 回 400,要改 between_tools。无工具的 JSON 抽取仍要自适应思考加 Structured Output,不能关 thinking。

先给结论:Sonnet 5.5 的价目表一行没动,请求合同却动了。2026 年 9 月 28 日,Anthropic 发布 Claude Sonnet 5.5(claude-sonnet-5-5)。输入 / 输出仍是 $2 / $10,缓存读仍是 $0.20。官方说输出快 30% 以上,多数任务大约省 30%——省的是每任务 token,不是标价。真正会炸生产的,是从 Sonnet 5 抄过来的旧开关:thinking: {"type": "disabled"} 返回 400;tool_choice 的 any / tool 同样 400;非默认的 temperature / top_p / top_k 也是 400。更不声张的坑在 JSON 抽取:无工具请求里用 between_tools,模型先不思考,Structured Output 也会抽歪。官方提示页把这类任务单独列成「Reasoning tasks with JSON output」。

这篇按 2026 年 9 月 29 日写,依据当天仍有效的模型页、What's new 与迁移指南。本站 9 月 24 日已有《Opus 5.5 为什么不能再靠 tool_choice 强制出 JSON》。本文不重写那四处,只回答:从 Sonnet 5 换到 5.5,JSON 流水线多出来的那一层要改什么。Haiku 5.5 官方仍写「未来几周」,这篇不预支。

9 月 28 日发了什么

Claude Sonnet 5.5 是 Claude 5.5 家族的第二档。官方定位:速度与智力的折中;日常编码、改 bug、做文档与表格。模型 ID 在 Claude API、Google Cloud、Microsoft Foundry、Claude Platform on AWS 都是 claude-sonnet-5-5;Bedrock 是 anthropic.claude-sonnet-5-5。退役承诺不早于 2027 年 9 月 28 日。分词器与 Sonnet 5 相同,同一段文本 token 数不变。

价目(每百万 token):输入 $2、输出 $10、5 分钟缓存写 $2.50、1 小时缓存写 $4、缓存读 $0.20。批处理半价。上下文 1M,同步最大输出 128K;Message Batches 加 output-300k-2026-03-24 可到 300K。默认可缓存前缀从 Sonnet 5 的 1,024 token 降到 512。默认 effort 是 high——Opus 5.5 默认是 medium。漏写 effort,行为按 high 走,不是「跟 Sonnet 5 一样」的静默兼容。

公告把 Sonnet 5.5 写成 Opus 5.5 的更快、更便宜互补档。这篇不拿排行榜选型。要看的是:价目一行没动,thinking、tool_choice 和 JSON 抽取的合同动了。

五处硬失败,一张表

文档把「换成 5.5 就 400」的请求列得很清楚。前三条和 Opus 5.5 / Fable 5.1 同源,但第一行的替代写法不一样:

旧写法(Sonnet 5)5.5 上会怎样该改成什么
thinking: {"type": "disabled"} 或 enabled + budget_tokens400 invalid_request_error,报错指向 between_tools关前置思考用 {"type": "between_tools"};要推理用省略或 adaptive
tool_choice: {"type": "any"} 或 {"type": "tool", "name": "..."}400;token 计数接口同样验auto(或 none)+ strict: true,或 Structured Output
改 system / tools / 更早消息后再回放 thinking 块2026-08-31 之后开的账号默认 400对话只追加;改指令用中途 system 消息
Claude API / Google Cloud 上的 computer_20251124400computer_toolset_20260801;Bedrock 仍收旧工具
advisor 指定 Opus 4.8 / 4.7 或 Sonnet 5400换成 5.5 接受的 advisor(含 Opus 5.5、Fable / Mythos 5.1,或 5.5 自己)

还有一处不报错但会静音:工具调用之间偏长的说明改走 thinking 块。默认 display: "omitted" 时空文本。靠流式「中间句」当进度条的界面会突然没声。要进度,自适应思考设 thinking.display(updates 要 beta 头);between_tools 会带回摘要文本,但这个类型不许再带 display。

温度也从「可调」变成「只能默认」:把 temperature、top_p 或 top_k 设成非默认值,400。以前靠降温度逼 JSON 更稳的请求,现在只能把稳交给 Schema。

disabled 作废,between_tools 才是最低档

Sonnet 5 上关 thinking 写 disabled。5.5 上这一行直接 400,报错指向 between_tools。最低档的形状是:

{
  "model": "claude-sonnet-5-5",
  "thinking": { "type": "between_tools" },
  "output_config": { "effort": "high" }
}

between_tools 不用 beta 头,各平台都收。它只关前置思考:工具调用之间偏长的进度仍以 thinking 块回来,回灌时原样传,模型拿到的是完整笔记,不是摘要。无工具时,响应里通常只剩 text,看起来像旧的 disabled。

限制写得很死:只接受 low / medium / high。配 xhigh 或 max,400。旁边再塞 display、budget_tokens、block_binding,也是 400。对话中途改 output_config.effort,还是 400——要按轮调 effort,必须走自适应思考。服务端 fallback 落到 Sonnet 5 时,between_tools 会被译成那边的 disabled。

所以 5.5 并没有「thinking 必须一直开到满」。它拆掉的是 disabled 这个旧开关。开关一拆,关思考的人要写新类型;要稳定 JSON 的人,往往不该关——见下一节。

无工具 JSON 抽取,不要关 thinking

官方 Prompting 页单独开了一节:给 Sonnet 5.5 一个需要几步演算的 JSON 题(加总、套规则、排序),模型在 low / medium 上常不先想。有 Structured Output 时,可见正文只能是 JSON,演算只能发生在 thinking 里。thinking 被跳过,准确率就掉。

官方给的顺序是:

  1. 能走 Structured Output 就走。正文只剩符合 Schema 的对象,不用再 JSON.parse 聊天句。见《Structured Output 是什么》。
  2. 用自适应思考,不要用 between_tools。无工具请求里,between_tools 等于先不思考。「先想再答」写进提示词也无效。测试里把「先出答案、再出 JSON」拆成两次请求,合规率高,但费用和延迟都很高,官方不推荐当默认。
  3. 系统提示末尾加一句 Think the problem through before you answer. 在 high 上,准确率接近 xhigh,多出来的输出 token 不多;low / medium 也会升,但更费。
  4. 给 max_tokens 留出 thinking。low / medium 配 Structured Output 时,模型偶发想到顶。官方说:stop_reason 是 max_tokens 的响应,即使正文是合法 JSON,也当失败重试。

没有 Structured Output 时,模型常在正文里演算、把 JSON 放在最后。整段 JSON.parse 会失败。官方写法是:只读 text 块,从每个 { 或 [ 试解析,留下最后一个完整值,不要取第一个 { 到最后一个 } 的整段——中间可能夹着草稿。原理见《JSON.parse 为什么失败》。这是兜底,不是合同。

强制工具这条,跟 Opus 5.5 一样 400

5.5 家族共用同一句报错:

tool_choice: type "tool" and "any" are not supported for this model.

替代仍是:tool_choice 留 auto,工具开 strict: true,用 JSON Schema 卡住参数;最终答复走 Structured Output。想让模型倾向调工具,把「何时该调」写进提示词。提示词影响 auto 选哪把工具,不代替 Schema。 细节不在这里展开,见《Opus 5.5 为什么不能再靠 tool_choice 强制出 JSON》《Tool Calling 为什么依赖 JSON Schema》。

5.5 还多了一处名字容错:偶尔用错大小写调用工具,或参数名差一点。宿主不要当致命错误;能唯一对上就收,否则回 is_error: true 并写出准确名字。Schema 仍要严,名字匹配可以宽一档。

价目没变,默认 effort 是 high

标价与 Sonnet 5 相同。官方 30% 的「更便宜」来自每任务更少 token,不是价目表。独立评测已经写出反例:任务不自己限制输出时,新模型可能更贵。换路由之前,用同一份 Schema 跑一遍抽取。

effort 档位重新校准过。同一档 high,5.5 想的量和 Sonnet 5 不是一回事。官方建议:日常从 high 起;代理编码、步骤清楚的工具循环从 medium 起;聊天和延迟敏感从 medium 或 low 起。改顶层 effort 会打掉 prompt cache;按轮改要用自适应思考下的 per-message effort(beta)。between_tools 不许中途改档。

和 Opus 5.5 并排时不要混默认值:Opus 5.5 默认 medium,Sonnet 5.5 默认 high。只换模型字符串、不写 effort,账单和延迟都会跳。thinking 块也不能跨档乱读:5.5 能读 Sonnet 5、Opus 4.8、Haiku 4.5 及更早的块,不读 Opus 5 / Opus 5.5 / Fable / Mythos。反过来,别的模型也不读 Sonnet 5.5 的块。从 Opus 5.5 切到 Sonnet 5.5,推理历史会被接口丢掉,请求仍 200,丢弃的块不计费。

温度、缓存、计算机工具、advisor

temperature / top_p / top_k 非默认即 400。以前靠采样参数「收紧 JSON」的流水线,现在只能收紧 Schema。缓存门槛降到 512 token,短系统提示更容易命中;代价是改顶层 effort 仍会废缓存。

Claude API 与 Google Cloud 上,计算机工具只收 computer_toolset_20260801。Bedrock 继续收 computer_20251124。advisor(beta)不能再让 5.5 执行器配 Opus 4.8 / 4.7 或 Sonnet 5;5.5 接受的 advisor 一律返回加密的 advisor_redacted_result,客户端读不到建议正文。

中途改工具 Schema,可走 inline-tools-2026-09-15,在对话中途的 system 消息里带完整定义,不去改请求顶层的 tools。这和 thinking 块绑前缀是一套:历史只追加。compaction(compact-2026-09-04)可以在保留 thinking 有效的前提下换摘要块,条件见官方 Compaction 页。

换模型字符串之前先核的五件事

  1. 搜 thinking。删掉 disabled 和 budget_tokens。只要关前置思考,写 between_tools,effort 不超过 high。JSON 演算题走自适应思考。
  2. 搜 tool_choice。任何 any / 点名 tool 都改成 auto,开 strict,收紧 input_schema。
  3. 搜 temperature / top_p / top_k。非默认就删。稳 JSON 靠 Schema,不靠采样。
  4. 显式写 effort。不要吃默认 high。和 Opus 5.5 共用路由时,两边默认值不同。
  5. 回放与缓存。8 月 31 日后的账号不要改历史里的 tools / system。从 Opus 5.5 切过来,做好 thinking 被丢的准备。

用本地 JSON 工具看 Schema

把模型 ID 改成 claude-sonnet-5-5 之前,先在浏览器里摊开三份文本:旧的 input_schema、一条曾经靠 disabled 或强制 tool_choice 拿到的 arguments、你准备交给 Structured Output 的那份 Schema。

  • JSON 校验 — 文法是否合法;有 Schema 就一起核必填和多余键。
  • JSON 格式化 — 展开压成一行的工具定义,看 additionalProperties 有没有写。
  • JSON Diff — 对比「关 thinking 时的样本」和「strict Schema 允许的最小对象」。

数据不离开浏览器。合同稳定了,再改模型字符串。5.5 会换 effort、会拒收 disabled 和旧 tool_choice;你的字段名和 required 不应跟着一起松。

常见问题 FAQ

只改 model 为 claude-sonnet-5-5 能上线吗?

不能当默认。只要请求里还有 thinking.disabled、budget_tokens、tool_choice 的 any/tool、非默认温度,或 Claude API 上的 computer_20251124,就会 400。

between_tools 是不是新的 disabled?

只在无工具时看起来像。有工具时,进度仍走 thinking 块。它不接受 display / budget_tokens / 中途改 effort,也不能配 xhigh 或 max。JSON 演算题不要用它。

价目没变,账单为什么还会动?

默认 effort 是 high,档位重新校准过。官方 30% 省钱来自每任务更少 token,不是标价。任务不限制输出时,独立评测见过更贵的结果。用同一份 Schema 自己跑一遍。

和 9 月 22 日的 Opus 5.5 是一回事吗?

强制工具、thinking 块绑定、旧计算机工具,两条线同源。Sonnet 5.5 多出来的是 disabled→between_tools、默认 effort high、温度锁定、advisor 配对,以及无工具 JSON 不要关思考。分开迁,不要一张工单。

没有 Structured Output,还怎么收 JSON?

只读 text 块,解析最后一个完整 JSON 值,不要吃整段正文。stop_reason 为 max_tokens 就重试。这是兜底。能上 Schema 就上 Schema。

Haiku 5.5 到了吗?

截至 2026 年 9 月 29 日,官方仍写「未来几周」。不要把这篇的 breaking change 预支到还没发布的档。

总结

Sonnet 5.5 把价目表按住,把 disabled 收成了 400。从 Sonnet 5 抄请求,会在 thinking、tool_choice、温度三处硬失败。要关前置思考,写 between_tools;要稳定 JSON,走自适应思考 + Structured Output,或 auto + strict + JSON Schema。无工具的演算题关 thinking,官方已经量过会抽歪。

先在本地校验工具里把 Schema、样本 arguments、strict 合同看平,再改 claude-sonnet-5-5。标价可以不变;字段合同不应跟着一起松。