重要提示:擴展思考與其他一些功能不相容,特別是訊息預填(message pre-filling),並且它會限制您使用 temperature 的方式。請參閱此處的完整限制清單: https://platform.claude.com/docs/en/build-with-claude/thinking#limits-and-feature-compatibility(在新分頁中開啟)
擴展思考是 Claude 的進階推理功能,讓模型在生成最終回應之前有時間處理複雜問題。您可以將其想像成 Claude 的「草稿紙」——您可以看到導向答案的推理過程,這有助於提升透明度,並且通常能產生品質更好的回應。
擴展思考的運作方式
啟用擴展思考後,Claude 的回應會從簡單的文字區塊變成包含兩個部分的結構化回應:

啟用思考功能後,您會同時獲得推理過程和最終答案:

主要優點包括:
- 在複雜任務上具有更好的推理能力
- 在困難問題上提高準確性
- 對 Claude 的思考過程具有透明度
然而,也存在重要的取捨:
- 更高的成本(您需要為思考 token 付費)
- 增加的延遲(思考需要時間)
- 程式碼中更複雜的回應處理
何時使用擴展思考
這個決定很簡單:使用您的提示評估。先在不啟用思考的情況下執行您的提示,如果在您已經優化過提示之後,準確性仍未達到您的要求,那麼就可以考慮啟用擴展思考。它是一個在標準提示方式無法完全達到目標時使用的工具。
回應結構與安全性
擴展思考的回應包含一個特殊的簽名系統以確保安全性:

簽名是一個加密 token,用於確保您沒有修改思考文字。這可防止開發者篡改 Claude 的推理過程,因為篡改可能會將模型導向不安全的方向。
已編輯的思考內容
有時您會收到一個已編輯(redacted)的思考區塊,而不是可讀的推理文字:

當 Claude 的思考過程被內部安全系統標記時,就會發生這種情況。已編輯的內容以加密形式包含實際的思考內容,讓您可以在未來的對話中將完整的訊息傳回給 Claude,而不會失去上下文。
實作方式
要在您的程式碼中啟用擴展思考,您需要在聊天函式中新增兩個參數:
def chat(
messages,
system=None,
temperature=1.0,
stop_sequences=[],
tools=None,
thinking=False,
thinking_budget=1024
):思考預算——請求中的 budget_tokens——設定 Claude 可用於推理的最大 token 數。budget_tokens 的最小值為 1024,並且您的 max_tokens 參數必須大於 budget_tokens。
將 thinking 參數新增到您的 API 請求中——這是一個物件,其 type 設為 "enabled",並帶有一個 budget_tokens 值——並提高 max_tokens,使其大於 budget_tokens:
if thinking:
params["max_tokens"] = thinking_budget + 1000
params["thinking"] = {
"type": "enabled",
"budget_tokens": thinking_budget
}然後在啟用思考功能的情況下呼叫您的聊天函式:
chat(messages, thinking=True)測試已編輯的回應
出於測試目的,您可以透過傳送特殊的觸發字串,強制 Claude 回傳已編輯的思考區塊。這有助於確保您的應用程式能夠妥善處理已編輯的回應,而不會發生當機。
當您需要 Claude 處理複雜的推理任務時,擴展思考是一項強大的功能,但考量到成本和延遲的影響,請謹慎使用。先從標準提示方式開始,充分優化,然後在您需要額外的推理能力時再加入思考功能。