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。標價可以不變;欄位合約不應跟著一起鬆。