Claude Sonnet 5.5 是 Anthropic 9 月 28 日推出的 AI 模型。自行串接 API 升級時,有一種容易漏測的情況:開發者的帳號正常,讓客戶填入自己的金鑰後,部分對話卻收到 400 錯誤。保留思考文件提醒,原因可能是應用程式改寫了先前對話,卻繼續傳回原本的思考區塊。
台灣團隊若提供使用者自帶 API Key 的服務,不能只用公司的舊帳號驗收升級。 自行組裝多輪 Messages API 請求的服務需要檢查這項相容性。Claude Code 與 claude.ai 會代為處理思考區塊,一般使用者不需要自行改寫歷史管理。
為什麼同一套程式,新帳號會失敗?
思考區塊是 Claude 回傳、可在後續對話中接續使用的推理紀錄,與畫面上可讀的回答文字不同。依 Sonnet 5.5 遷移指南,它的思考文字預設可能是空的,但仍帶有簽章;不能因為看不到文字,就把區塊當成沒有內容。
遷移指南指出,思考區塊之前的系統指令 system、工具清單 tools 與較早訊息須維持原樣。這些內容合稱「前綴」。對於 2026 年 8 月 31 日 00:00 UTC 當天或之後建立的帳號,API 預設強制執行前綴檢查;切點指帳號,重新產生一把金鑰不等於建立新帳號。
較舊帳號只有在請求設定 thinking.block_binding.prefix_mismatch_behavior 時,才強制執行前綴檢查。因此,一套會重組歷史的程式可能在開發環境跑完,到了新帳號才被拒絕。這是官方文件指出的相容性風險,並非本文實測或已發生的台灣客戶案例。
提供自帶金鑰功能,就得確認新帳號的檢查行為也能通過。還在規劃串接方式,可以先看 AI API 整合入門,確認誰負責組裝每輪請求。
聊天畫面一樣,送出的歷史可能已不同
最容易忽略的是那些看似不影響語意的整理。官方疑難排解列出,重建系統指令、改動工具清單、移除舊訊息,或壓縮早期對話後保留較新的思考區塊,都可能破壞綁定。遇到簽章與對話不符的錯誤,重送相同內容不會把歷史恢復原樣。
例如,假設服務把「今天日期」寫在最前面的系統指令。跨日後重新生成指令,卻繼續沿用昨天的思考區塊,前綴就已經改變。這是依文件規則推導的示例,不是實際故障紀錄。畫面上的聊天文字看起來一樣,送出的完整請求卻可能不同。
這也讓常見的上下文管理做法多了一項限制:不能只刪掉前面的內容,再把後面的推理原封不動接上。排查時應比對實際送出與收到的紀錄,找到第一個變動位置,尤其是每輪重建日期、指令或工具的地方。需要縮短歷史,可依疑難排解指引使用伺服器端的上下文編輯或壓縮。
修正方向是保留先前內容,在末端加入新訊息。要更新指令時,Sonnet 5.5 支援對話中途的系統訊息,讓新指令從加入的位置生效,而非回頭改寫頂層 system。工具變更另有測試版機制與平台限制,不能直接套用一般訊息的規則。
先修歷史組裝,再決定是否丟棄推理
舊帳號也能協助找出問題。依保留思考文件,加入 thinking-binding-controls-2026-08-01 測試版標頭、且未設定強制檢查行為時,回應的 input_transformations 可用 thinking_mismatch_allowed 標示前綴檢查未通過的區塊。這能觀察原本被放行的歷史變動,不必等客戶的新帳號先撞到錯誤。
另一條路是按疑難排解指引設定 drop_block,讓 API 捨棄因前綴改動而失效的思考區塊及之後的思考,模型無法再讀取那些推理。我不建議把它設成所有請求的預設解法;那會讓服務繼續運作,卻掩蓋原本的歷史組裝問題。
真要採用這種降級,需搭配上述測試版標頭;在 Sonnet 5.5 上,block_binding 只適用於 adaptive 思考模式,不能加在 between_tools 裡。是否接受失去先前推理,應由服務設計決定。
最後要看清楚錯誤訊息。舊設定 thinking: {"type": "disabled"} 本身就會返回 400,這與前綴被改寫是不同問題,應按遷移指南分別修正。一般使用者的聊天與模型切換,則可從 Claude 使用指南繼續閱讀。
常見問題
重新建立 API Key,會變成受強制檢查的新帳號嗎?
官方說明中心以帳號建立時間為切點:2026 年 8 月 31 日 00:00 UTC 當天或之後。不是金鑰產生日期;舊帳號也可透過請求設定主動啟用前綴檢查。
Sonnet 5.5 的思考文字是空的,可以刪掉區塊嗎?
不能把空文字當成沒有推理。區塊仍含簽章,官方要求在接續對話時原樣傳回。刻意移除區塊是放棄那段推理的設計選擇,不能當成單純清理空欄位。
換另一個帳號接續對話,一定會收到 400 嗎?
不一定。官方說明中心指出,Sonnet 5.5 產生的思考區塊只供原帳號或連結帳號使用;其他帳號送入時,API 會捨棄區塊,請求仍成功。跨帳號綁定與前綴被改寫的拒絕行為要分開判讀。
參考來源
- Anthropic 官方:Introducing Claude Sonnet 5.5(2026-09-28)
- Claude Platform Docs:Migrating to Claude Sonnet 5.5(2026-10-03 查核;未標發布日)
- Claude Platform Docs:Preserved thinking(2026-10-03 查核;未標發布日)
- Claude Platform Docs:Troubleshooting thinking(2026-10-03 查核;未標發布日)
- Claude Help Center:Preserved thinking: changing how the Messages API handles thinking blocks to protect against distillation(2026-10-03 查核;未標發布日)
- Claude Platform Docs:對話中途的系統訊息與工具變更(2026-10-03 查核;未標發布日)