載入中

擴展思考是 Claude 的進階推理功能,讓模型在生成回應之前有時間思考複雜的問題。啟用後,Claude 會產生一個可見的思考過程,使用者可以檢視這個過程以了解模型如何處理他們的查詢。

此功能顯著提升了 Claude 處理複雜任務的準確性,但也伴隨著重要的取捨。您將為思考階段產生的所有 token 付費,而額外的處理時間會增加回應延遲。關鍵在於判斷何時提升的智能表現值得額外的成本和等待時間。

何時使用擴展思考

啟用擴展思考的決定應由您的提示評估來驅動。以下是建議的方法:

  • 先撰寫並測試您的提示,不使用擴展思考
  • 執行評估以衡量準確性
  • 如果在提示優化的努力之後,結果仍未達到您的標準
  • 然後考慮啟用擴展思考作為解決方案

擴展思考如何改變回應

在沒有擴展思考的情況下,Claude 的回應流程很直接——您傳送一則包含文字區塊的使用者訊息,並收到一則包含文字區塊的助手訊息作為回覆。

啟用擴展思考後,回應結構會發生顯著變化。您將收到一則包含兩個不同區塊的助手訊息:

  • 一個包含 Claude 推理過程的 thinking 區塊
  • 一個包含最終回應的 text 區塊

簽名系統

每個思考區塊都包含一個加密簽名,用於重要的安全目的。此簽名確保當您在未來的對話輪次中包含該訊息時,思考文字未被修改過。

Claude 在生成回應時高度依賴思考內容,因此防止篡改對於維持安全且一致的行為至關重要。如果您修改了思考文字,簽名驗證將會失敗。

已編輯的思考內容

有時 Claude 的思考過程會被內部安全系統標記。發生這種情況時,您將收到一個已編輯的思考區塊,而不是原始的思考文字。

已編輯的內容以加密形式包含實際的思考文字。雖然您無法讀取它,但您仍然可以在未來的對話輪次中包含此區塊,以便 Claude 不會失去先前推理的上下文。

實作

要在您的程式碼中啟用擴展思考,您需要使用兩個新參數修改您的聊天函式:

python
def chat(
    messages,
    system=None,
    temperature=1.0,
    stop_sequences=[],
    tools=None,
    thinking=False,
    thinking_budget=1024
):

思考預算代表 Claude 可用於推理的最大 token 數量。允許的最小值為 1024 個 token。重要的是,您的 max_tokens 參數必須超過您的思考預算——如果您設定思考預算為 1024,max_tokens 必須至少為 1025。

在實務上,您會希望有更大的緩衝空間。例如,思考預算為 1024、max_tokens 為 4000 時,Claude 最多可以使用 1024 個 token 進行思考,並最多使用 2976 個 token 進行實際回應。

啟用此功能時,將思考配置加入您的 API 參數中:

python
if thinking:
    params["thinking"] = {
        "type": "enabled",
        "budget_tokens": thinking_budget
    }

測試已編輯的回應

在開發過程中,您可能想要測試您的應用程式如何處理已編輯的思考區塊。您可以透過在訊息中包含這個特殊的觸發字串,強制 Claude 回傳已編輯的回應:

TRIGGER_REDACTED_THINKING_46C9A13E193C177646C7398A98432ECCCE4C1253D5E2D82641AC0E52CC2876CB

這確保了當在生產環境中遇到已編輯的內容時,您的錯誤處理能正確運作。