思考功能疑難排解
診斷並修正最常見的思考功能失敗:設定造成的 400 錯誤、空白或遺失的思考區塊、max_tokens 停止,以及快取未命中。
本頁涵蓋設定 thinking(思考)或往返傳遞思考區塊(將回傳的思考區塊在後續請求中送回)時最常見的失敗情況。第一節將每個模型對應到其支援的思考設定以及會拒絕的設定;其後的各節皆從您觀察到的症狀出發,讓您可以將錯誤訊息或非預期的回應直接對應到其原因與修正方式。若要了解思考的運作方式,請參閱思考總覽。
各模型的思考支援、預設值與拒絕的設定
大多數思考設定錯誤,都是請求中的 thinking.type 值與模型所支援的內容不相符所致。在大多數模型上,思考以 thinking: {type: "adaptive"} 執行,且許多模型預設即開啟。部分較早期的模型則改用 extended thinking(擴展思考),這是一種舊版的手動模式,設定方式為 thinking: {type: "enabled", budget_tokens: N}。
「Extended thinking」(擴展思考)(thinking.type: "enabled" 搭配 budget_tokens)在 Claude 4.6 模型上已被棄用(使用它的請求仍會成功)。Claude 4.7 及更新的模型不支援它,並會拒絕使用它的請求,回傳 400 錯誤。在支援思考功能的 Claude 4.5 及更早的模型上,擴展思考是唯一可用的思考模式。Claude Mythos Preview 同時支援兩種模式。在兩種模式皆可用的情況下,請改用「adaptive thinking」(自適應思考)。
下表列出每個模型支援的內容、預設值,以及會以 400 錯誤拒絕的 thinking.type 值;任何未列為拒絕的值皆會被接受。
| 模型 | 思考類型 | 預設值 | 以 400 拒絕 |
|---|---|---|---|
| Claude Fable 5.1 | 僅自適應 | 永遠開啟 | "enabled"、"disabled" |
| Claude Mythos 5.1 | 僅自適應 | 永遠開啟 | "enabled"、"disabled" |
| Claude Fable 5 | 僅自適應 | 永遠開啟 | "enabled"、"disabled" |
| Claude Mythos 5 | 僅自適應 | 永遠開啟 | "enabled"、"disabled" |
| Claude Mythos Preview | 自適應、擴展 | 永遠開啟 | "disabled" |
| Claude Opus 5 | 僅自適應 | 開啟 | "enabled"、"disabled"2 |
| Claude Opus 4.8 | 僅自適應 | 關閉 | "enabled" |
| Claude Opus 4.7 | 僅自適應 | 關閉 | "enabled" |
| Claude Sonnet 5 | 僅自適應 | 開啟 | "enabled" |
| Claude Opus 4.6 | 自適應、擴展(已棄用)1 | 關閉 | 無 |
| Claude Sonnet 4.6 | 自適應、擴展(已棄用)1 | 關閉 | 無 |
| Claude Opus 4.5 | 僅擴展 | 關閉 | "adaptive" |
| Claude Haiku 4.5 | 僅擴展 | 關閉 | "adaptive" |
| Claude Sonnet 4.5 | 僅擴展 | 關閉 | "adaptive" |
1 enabled 與 budget_tokens 在這些模型上仍可運作,但已棄用;請改用自適應思考。
2 Claude Opus 5 在 effort(努力程度) 為 high 或以下時接受 "disabled";將其與 effort xhigh 或 max 結合會回傳 400 錯誤。此限制適用於 Claude Opus 5 及之後的模型,並在每個請求上強制執行。
標示為「永遠開啟」的模型無法關閉思考。標示為「開啟」的模型預設會思考,但接受 thinking: {type: "disabled"}。
較早期的 Claude 4 模型(Claude Opus 4.1、Claude Sonnet 4 與 Claude Opus 4)僅支援擴展思考。其可用性請參閱模型棄用。除非經 Anthropic 明確授權,否則 Claude Fable 5.1、Claude Mythos 5.1、Claude Fable 5 與 Claude Mythos 5 無法在零資料保留下使用。
400 錯誤指出不支援 "thinking.type.enabled"
請求失敗並回傳 400 錯誤,其訊息為:
"thinking.type.enabled" is not supported for this model. Use "thinking.type.adaptive" and "output_config.effort" to control thinking behavior.發生此情況是因為您請求的模型已移除擴展思考(請參閱各模型設定表)。
將請求切換為 thinking: {type: "adaptive"},並以 effort 而非 budget_tokens 來引導思考深度。遷移至自適應思考會逐步說明轉換方式。
400 錯誤指出不支援 "thinking.type.disabled"
請求失敗並回傳 400 錯誤,其訊息為:
"thinking.type.disabled" is not supported for this model. Thinking defaults to adaptive mode when not specified; use "thinking.type.enabled" with "budget_tokens" for extended thinking.此情況發生在思考永遠開啟的模型上:Claude Fable 5.1、Claude Mythos 5.1、Claude Fable 5、Claude Mythos 5 與 Claude Mythos Preview 會拒絕 "disabled"。除 Claude Mythos Preview 外,上述所有模型也會拒絕錯誤文字中建議的 "thinking.type.enabled"。
請省略 thinking 參數;這些模型無需任何設定即會思考。如果您的目的是讓回應中不包含思考文字,請使用 display: "omitted" 而非停用思考;請參閱控制思考顯示。
"disabled" 的 400 錯誤也可能發生在 Claude Opus 5 上,該模型僅在 effort 為 high 或以下時接受 thinking: {type: "disabled"}:將其與 effort xhigh 或 max 結合會被拒絕。請降低 effort 等級,或保持思考開啟。
400 錯誤指出不支援自適應思考
請求失敗並回傳 400 錯誤,其訊息為:
adaptive thinking is not supported on this model發生此情況是因為該模型僅支援擴展思考(請參閱各模型設定表)。
請改用 thinking: {type: "enabled", budget_tokens: N};設定方式請參閱擴展思考。
400 錯誤指出思考區塊不可修改
回傳工具結果的請求失敗,並回傳 400 invalid_request_error,其訊息包含:
`thinking` or `redacted_thinking` blocks in the latest assistant message cannot be modified在多輪對話與 tool use(工具使用)對話中,您會將先前的助理訊息(包括其 thinking 與 redacted_thinking 區塊)送回 API,而 API 會驗證它們是否原封不動地送達。當您送回的助理訊息與 API 回傳的不同時,就會發生此錯誤,最常見的原因是您的程式碼依類型篩選內容區塊而丟棄了 redacted_thinking 區塊,或是重新建構助理訊息而非原樣回傳。
請將助理輪次逐字原樣回傳,包括思考區塊。相關規則請參閱保留思考區塊,而各 SDK 的正確程式碼請參閱工具與多輪工作流程中的思考中的完整往返範例。
400 錯誤指出思考區塊簽章無效
對 Claude Fable 5.1 發出、重播先前思考區塊的請求失敗,並回傳 400 invalid_request_error,其訊息為:
messages.{i}.content.{j}: Invalid `signature` in `thinking` block. The block is bound to a different conversation. Remove the block, or set `thinking.block_binding.prefix_mismatch_behavior` to "drop_block".如果請求未傳送 thinking-binding-controls-2026-08-01 beta 標頭,訊息會加上 That setting requires the `thinking-binding-controls-2026-08-01` value in the `anthropic-beta` header.。訊息結尾也可能附上一句話,指出第一個發生變更的訊息。如果訊息完全沒有原因子句,則表示該區塊的內容已被修改。請參閱 400 錯誤指出思考區塊不可修改。
在 Claude Fable 5.1 上,API 僅在其之前的 system 提示、tools 與訊息皆未變更時才接受重播的思考區塊。此錯誤表示對話中較早的某些內容在請求之間發生了變更:某個輪次被編輯、重新排序或移除;某個逐輪提醒被注入後又被移除;system 提示或 tools 陣列被重新建構;或是用戶端壓縮保留了最近的輪次及其思考的逐字內容。此檢查對 2026 年 8 月 31 日當日或之後建立的新帳戶強制執行,也對任何設定了 thinking.block_binding.prefix_mismatch_behavior 的請求強制執行。伺服器端的壓縮與上下文編輯絕不會觸發此錯誤。
若要修正,請讓歷史記錄保持僅附加:將先前的輪次完全依照傳送與接收時的樣子傳回,使用對話中途系統訊息來新增指示而非編輯 system 或 tools,並讓伺服器端的上下文編輯或壓縮來執行任何修剪。重試相同的請求主體無法清除此錯誤。若要在不含已失效推理的情況下繼續此請求,請傳送 thinking-binding-controls-2026-08-01 beta 標頭,並將 thinking.block_binding.prefix_mismatch_behavior 設為 "drop_block"。或者,從歷史記錄中移除每個 thinking 與 redacted_thinking 區塊(至少包括被指名的區塊及其後的每個區塊,涵蓋該輪次與所有後續輪次),保留每個輪次的其他區塊不動,然後重試一次。
來自目標模型無法讀取之模型的區塊絕不會產生此錯誤:API 會將其丟棄,並在使用 beta 標頭時於 input_transformations 中回報。
回應中的 thinking 欄位為空
回應包含 thinking 區塊,但其 thinking 欄位為空字串,僅 signature 欄位有填入值。
發生此情況是因為 display 在較新的模型上預設為 "omitted",這會回傳不含文字的思考區塊。
請在您的思考設定中設定 display: "summarized" 以接收摘要後的思考文字。各模型的預設值請參閱控制思考顯示。如果您只想要部分模型在工具呼叫之間撰寫的簡短狀態行,而不需要推理內容,請改為設定 display: "updates"(beta)。請參閱工具呼叫之間的進度更新。
某些輪次未出現思考區塊
即使已設定思考,某些回應仍完全不含 thinking 區塊。
這在自適應模式下是正常的:對於 Claude 判斷為足夠簡單、可直接回答的請求,它會略過思考。
如果您希望更頻繁或更深入地思考,請提高 effort 或透過提示來引導;請參閱引導 Claude 思考的頻率。
文字輸出中出現工具呼叫或 XML 標籤
回應偶爾會將工具呼叫寫入其文字中,而非發出 tool_use 區塊,或在其可見文字中包含 <thinking> 或其他內部 XML 標籤。洩漏的工具呼叫絕不會執行,而在代理迴圈中,洩漏的文字會留在對話歷史記錄中,因此後續輪次也會受到影響。
此情況發生在 Claude Opus 5 停用思考時,最常見於搜尋等大量使用工具的工作負載。指示模型不要思考或不要推理的 system prompt(系統提示)規則會增加標籤洩漏。
請重新啟用思考(預設值),並改用較低的 effort 等級來控制 token 成本。如果您的整合必須保持停用思考,請套用在停用思考下執行中的提示緩解措施。
回應以 stop_reason: "max_tokens" 停止
回應以 stop_reason: "max_tokens" 結束,通常伴隨被截斷或遺失的文字區塊。
發生此情況是因為思考 token 會計入 max_tokens,因此較長的思考過程可能在文字回應完成之前就耗盡預算。
請提高 max_tokens 以為思考與文字兩者預留空間,或降低 effort 讓 Claude 在思考上花費較少;請參閱成本控制與思考與上下文視窗。
變更思考設定後快取命中下降
在先前命中快取的請求上,cache_read_input_tokens 降為零。
發生此情況是因為思考設定與 effort 等級(或其預設值)是快取提示前綴的一部分,因此變更其中任何一項都會開始新的前綴:切換思考模式、變更 effort 值以及變更 budget_tokens 都會使訊息快取斷點失效,並且視模型呈現設定的位置而定,也可能使工具與系統提示斷點失效。
請在共用同一對話的請求之間保持思考設定與 effort 等級不變;將參數明確設為其預設值等同於省略它,不會造成失效。請參閱思考與 prompt caching(提示快取)。
設定 effort 不會改變思考
您變更了 effort,但思考頻率或深度維持不變。
發生此情況是因為 effort 僅在自適應模式下是主要的思考控制手段。在僅支援擴展思考的模型上,思考深度改由 budget_tokens 設定。
請在這些模型上調整 budget_tokens,或確認您的模型以哪種模式執行;請參閱思考與 effort。在 Claude Opus 4.5(唯一支援 effort 的僅擴展思考模型)上,effort 會與預算組合運作;請參閱預算規則與調校。
後續步驟
Was this page helpful?