回到頂部
概念插畫:深藍色摺疊紀錄沿細線接續,一處被改動的舊摺頁使連線中斷,末端仍保留新增紀錄的位置

Sonnet 5.5 API 升級:為何部分帳號遇到 400?

Sonnet 5.5 API 升級後,部分新帳號可能因歷史改寫收到 400。解析思考區塊綁定、帳號日期差異,以及自帶金鑰服務的修正方向。

內容查核: 來源查核:

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 會捨棄區塊,請求仍成功。跨帳號綁定與前綴被改寫的拒絕行為要分開判讀。

參考來源

№ · further reading

延伸閱讀