Was this page helpful?
此功能符合「Zero Data Retention」(零資料保留),即 ZDR 的資格。當您的組織具有 ZDR 安排時,透過此功能傳送的資料在 API 回應返回後不會被儲存。
「Extended thinking」(擴展思考)為 Claude 提供增強的推理能力以處理複雜任務,同時在提供最終答案之前,以不同程度的透明度呈現其逐步思考過程。
在 claude-fable-5 和 claude-mythos-5 上,擴展思考始終啟用且無法停用。不支援手動擴展思考(thinking: {type: "enabled", budget_tokens: N});請改用自適應思考。自適應思考始終開啟,而 thinking: {type: "disabled"} 會回傳錯誤。
對於 Claude Opus 4.8 和 Claude Opus 4.7,請設定 thinking: {type: "adaptive"} 以啟用自適應思考,並使用 effort 參數來控制思考深度。在這兩個模型上,不支援手動擴展思考(thinking: {type: "enabled", budget_tokens: N}),會回傳 400 錯誤。使用自適應思考時,模型會根據每個請求決定何時思考以及思考多少,因此僅在需要時才觸發思考。對於 Claude Opus 4.6 和 Claude Sonnet 4.6,也建議使用自適應思考;手動配置在這些模型上仍可運作,但已被棄用,並將在未來的模型版本中移除。
所有目前的 Claude 模型都支援手動擴展思考(thinking: {type: "enabled", budget_tokens: N}),但 Claude Fable 5、Claude Mythos 5、Claude Opus 4.8 和 Claude Opus 4.7 除外,這些模型不接受此設定並會回傳 400 錯誤。少數模型具有特定模式的行為:
claude-fable-5)和 Claude Mythos 5(claude-mythos-5): 不支援手動擴展思考,會回傳 400 錯誤。自適應思考始終開啟;請使用 effort 參數來控制思考深度。thinking: {type: "adaptive"})搭配 effort 參數。模型會根據每個請求決定是否使用擴展思考以及使用多少。thinking: {type: "adaptive"})搭配 effort 參數。thinking: {type: "enabled", budget_tokens: N}。不支援 thinking: {type: "disabled"},且 display 預設為 "omitted" 而非回傳思考內容。傳遞 display: "summarized" 以接收摘要。type: "enabled")已棄用但仍可運作。type: "enabled")已棄用但仍可運作。思考行為在不同 Claude 模型版本之間有所差異。詳情請參閱不同模型版本的思考差異。
當擴展思考開啟時,Claude 會建立 thinking 內容區塊,在其中輸出其內部推理。Claude 會在產生最終回應之前,整合此推理的見解。
API 回應包含 thinking 內容區塊,後接 text 內容區塊。
以下是預設回應格式的範例:
{
"content": [
{
"type": "thinking",
"thinking": "Let me analyze this step by step...",
"signature": "WaUjzkypQ2mUEVM36O2TxuC06KN8xyfbJwyem2dw3URve/op91XWHOEBLLqIOMfFG/UvLEczmEsUjavL...."
},
{
"type": "text",
"text": "Based on my analysis..."
}
]
}如需擴展思考回應格式的更多資訊,請參閱 Messages API 參考文件。
以下是在 Messages API 中使用擴展思考的範例:
若要開啟擴展思考,請新增一個 thinking 物件,將 type 參數設為 enabled,並將 budget_tokens 設為擴展思考的指定 token 預算。對於 Claude Opus 4.6 和 Claude Sonnet 4.6,請改用 type: "adaptive"。詳情請參閱自適應思考。雖然 type: "enabled" 搭配 budget_tokens 在這些模型上仍可運作,但已被棄用,並將在未來版本中移除。
budget_tokens 參數決定 Claude 可用於其內部推理過程的最大 token 數量。此限制適用於完整的思考 token,而非摘要輸出。較大的預算可透過對複雜問題進行更徹底的分析來提升回應品質,但 Claude 可能不會使用全部分配的預算,尤其是在超過 32k 的範圍內。
Claude Mythos Preview、Claude Opus 4.8、Claude Opus 4.7 和 Claude Opus 4.6 支援最多 128k 輸出 token。Claude Sonnet 4.6 和 Claude Haiku 4.5 支援最多 64k。請參閱模型概覽以了解舊版模型的限制。在 Message Batches API 上,output-300k-2026-03-24 beta 標頭可將 Claude Opus 4.8、Opus 4.7、Opus 4.6 和 Sonnet 4.6 的輸出限制提高至 300k。
budget_tokens 必須設為小於 max_tokens 的值。但是,當使用搭配工具的交錯思考時,您可以超過此限制,因為 token 限制會變成您的整個上下文視窗。由於 budget_tokens 必須小於 max_tokens,擴展思考無法與 max_tokens: 0(快取預熱)結合使用。
啟用擴展思考後,Claude 4 模型的 Messages API 會回傳 Claude 完整思考過程的摘要。摘要式思考提供擴展思考的完整智慧優勢,同時防止濫用。當思考配置中的 display 欄位未設定或設定為 "summarized" 時,這是 Claude 4 模型的預設行為。在 Claude Fable 5、Claude Mythos 5、Claude Opus 4.8、Claude Opus 4.7 和 Claude Mythos Preview 上,display 預設為 "omitted",因此您必須明確設定 display: "summarized" 才能接收摘要式思考。
以下是關於摘要式思考的一些重要考量:
在極少數情況下,如果您需要存取 Claude 4 模型的完整思考輸出,請聯絡 Anthropic 銷售團隊。
思考配置中的 display 欄位控制思考內容在 API 回應中的返回方式。它接受兩個值:
"summarized":思考區塊包含摘要化的思考文本。詳情請參閱摘要化思考。這是 Claude Opus 4.6、Claude Sonnet 4.6 及更早的 Claude 4 模型的預設值。"omitted":思考區塊返回時 thinking 欄位為空。signature 欄位仍攜帶加密的完整思考內容,以維持多輪對話的連續性(請參閱思考加密)。這是 Claude Fable 5、Claude Mythos 5、Claude Opus 4.8、Claude Opus 4.7 及 Claude Mythos Preview 的預設值。當您的應用程式不向使用者顯示思考內容時,設定 display: "omitted" 會很有用。主要優點是**串流時更快到達首個文本 token:**伺服器會完全跳過串流思考 token,僅傳送簽章,因此最終文本回應會更快開始串流。
以下是關於省略思考的一些重要考量:
signature 以重建原始思考內容用於提示建構(請參閱保留思考區塊)。您在往返傳遞的省略區塊中放入 thinking 欄位的任何文本都會被忽略。display 與 thinking.type: "disabled" 一起使用時無效(因為沒有內容可顯示)。thinking.type: "adaptive" 且模型針對簡單請求跳過思考時,無論 display 設定為何,都不會產生思考區塊。無論 display 是 "summarized" 還是 "omitted",signature 欄位都是相同的。支援在對話的不同輪次之間切換 display 值。
在 Claude Mythos Preview 上,display 預設為 "omitted"。本節中的範例明確傳遞 display,因此適用於所有模型,但在 Mythos Preview 上,您可以不設定此參數並獲得相同的行為。若要在 Mythos Preview 上接收摘要思考,請明確設定 display: "summarized"。
從不向終端使用者顯示思考內容的自動化管線,可以省去透過網路接收思考 token 的開銷。對延遲敏感的應用程式可獲得相同的推理品質,而無需等待思考文字串流完成後才開始最終回應。
當設定 display: "omitted" 時,回應包含 thinking 欄位為空的 thinking 區塊:
{
"content": [
{
"type": "thinking",
"thinking": "",
"signature": "EosnCkYICxIMMb3LzNrMu..."
},
{
"type": "text",
"text": "The answer is 12,231."
}
]
}當使用 display: "omitted" 進行串流時,不會發出 thinking_delta 事件;請參閱下方的串流思考以了解事件順序。
您可以使用伺服器傳送事件(SSE)來串流擴展思考回應。
當擴展思考啟用串流時,您會透過 thinking_delta 事件接收思考內容。
當設定 display: "omitted" 時,不會發出 thinking_delta 事件。請參閱控制思考顯示。
如需透過 Messages API 進行串流的更多文件,請參閱串流訊息。
以下是如何處理搭配思考的串流:
串流輸出範例:
event: message_start
data: {"type": "message_start", "message": {"id": "msg_01...", "type": "message", "role": "assistant", "content": [], "model": "claude-sonnet-4-6", "stop_reason": null, "stop_sequence": null}}
event: content_block_start
data: {"type": "content_block_start", "index": 0, "content_block": {"type": "thinking", "thinking": "", "signature": ""}}
event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "I need to find the GCD of 1071 and 462 using the Euclidean algorithm.\n\n1071 = 2 × 462 + 147"}}
event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "thinking_delta", "thinking": "\n462 = 3 × 147 + 21\n147 = 7 × 21 + 0\n\nSo GCD(1071, 462) = 21"}}
// Additional thinking deltas...
event: content_block_delta
data: {"type": "content_block_delta", "index": 0, "delta": {"type": "signature_delta", "signature": "EqQBCgIYAhIM1gbcDa9GJwZA2b3hGgxBdjrkzLoky3dl1pkiMOYds..."}}
event: content_block_stop
data: {"type": "content_block_stop", "index": 0}
event: content_block_start
data: {"type": "content_block_start", "index": 1, "content_block": {"type": "text", "text": ""}}
event: content_block_delta
data: {"type": "content_block_delta", "index": 1, "delta": {"type": "text_delta", "text": "The greatest common divisor of 1071 and 462 is **21**."}}
// Additional text deltas...
event: content_block_stop
data: {"type": "content_block_stop", "index": 1}
event: message_delta
data: {"type": "message_delta", "delta": {"stop_reason": "end_turn", "stop_sequence": null}}
event: message_stop
data: {"type": "message_stop"}當設定 display: "omitted" 時,思考區塊會開啟,接著收到單一 signature_delta,然後區塊關閉,不會有任何 thinking_delta 事件。文字串流會在此之後立即開始:
event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"thinking","thinking":"","signature":""}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"signature_delta","signature":"EosnCkYICxIMMb3LzNrMu..."}}
event: content_block_stop
data: {"type":"content_block_stop","index":0}
event: content_block_start
data: {"type":"content_block_start","index":1,"content_block":{"type":"text","text":""}}當使用啟用思考的串流時,您可能會注意到文字有時會以較大的區塊到達,並與較小的逐 token 傳遞交替出現。這是預期的行為,尤其是對於思考內容。
串流系統需要批次處理內容以獲得最佳效能,這可能導致這種「區塊式」傳遞模式,串流事件之間可能會有延遲。
擴展思考可與工具使用一起使用,讓 Claude 能夠推理工具選擇和結果處理。
當搭配工具使用擴展思考時,請注意以下限制:
工具選擇限制:搭配思考的工具使用僅支援 tool_choice: {"type": "auto"}(預設值)或 tool_choice: {"type": "none"}。使用 tool_choice: {"type": "any"} 或 tool_choice: {"type": "tool", "name": "..."} 會導致錯誤,因為這些選項會強制使用工具,這與擴展思考不相容。
保留思考區塊:在工具使用期間,您必須將最後一則助理訊息的 thinking 區塊傳回 API。將完整未修改的區塊傳回 API 以維持推理連續性。
您無法在助理回合中途切換思考,包括在工具使用迴圈期間。整個助理回合應在單一思考模式下運作:
從模型的角度來看,工具使用迴圈是助理回合的一部分。助理回合在 Claude 完成其完整回應之前不會結束,這可能包括多次工具呼叫和結果。
例如,以下序列全部屬於單一助理回合:
User: "What's the weather in Paris?"
Assistant: [thinking] + [tool_use: get_weather]
User: [tool_result: "20°C, sunny"]
Assistant: [text: "The weather in Paris is 20°C and sunny"]即使有多個 API 訊息,工具使用迴圈在概念上是一個連續助理回應的一部分。
當發生回合中途的思考衝突時(例如在工具使用迴圈期間開啟或關閉思考),API 會自動停用該請求的思考。為了保持模型品質並維持在分佈範圍內,API 可能會:
這表示嘗試在回合中途切換思考不會導致錯誤,但該請求的思考會被靜默停用。若要確認思考是否處於啟用狀態,請檢查回應中是否存在 thinking 區塊。
最佳實務:在每個回合開始時規劃您的思考策略,而不是嘗試在回合中途切換。
範例:完成回合後切換思考
User: "What's the weather?"
Assistant: [tool_use] (thinking disabled)
User: [tool_result]
Assistant: [text: "It's sunny"]
User: "What about tomorrow?"
Assistant: [thinking] + [text: "..."] (thinking enabled - new turn)透過在切換思考之前完成助理回合,您可以確保新請求確實啟用了思考。
切換思考模式也會使訊息歷史的提示快取失效。如需更多詳情,請參閱搭配提示快取的擴展思考一節。
在工具使用期間,您必須將 thinking 區塊傳回 API,且必須將完整未修改的區塊傳回 API。這對於維持模型的推理流程和對話完整性至關重要。
雖然您可以省略先前 assistant 角色回合的 thinking 區塊,但對於任何多回合對話,請始終將所有思考區塊傳回 API。API 會:
保留哪些區塊取決於模型。請參閱各模型的思考區塊保留以了解各類別的預設值。若要覆寫預設值,請使用 clear_thinking_20251015 上下文編輯策略。
在對話期間切換思考模式時,請記住整個助理回合(包括工具使用迴圈)必須在單一思考模式下運作。如需更多詳情,請參閱在對話中切換思考模式。
當 Claude 呼叫工具時,它會暫停建構回應以等待外部資訊。當工具結果回傳時,Claude 會繼續建構該現有回應。這使得在工具使用期間保留思考區塊成為必要,原因如下:
推理連續性:思考區塊捕捉了 Claude 導致工具請求的逐步推理。當您發布工具結果時,包含原始思考可確保 Claude 能從中斷處繼續其推理。
上下文維護:雖然工具結果在 API 結構中顯示為使用者訊息,但它們是連續推理流程的一部分。保留思考區塊可在多次 API 呼叫中維持此概念流程。如需上下文管理的更多資訊,請參閱上下文視窗指南。
重要:提供 thinking 區塊時,連續 thinking 區塊的整個序列必須與模型在原始請求期間產生的輸出相符;您不能重新排列或修改這些區塊的序列。
Claude 4 模型中搭配工具使用的擴展思考支援「interleaved thinking」(交錯思考),這使 Claude 能夠在工具呼叫之間進行思考,並在收到工具結果後進行更複雜的推理。
透過交錯思考,Claude 可以:
模型支援:
interleaved-thinking-2025-05-14 beta 標頭在 Opus 4.6 上已棄用,若包含則會被安全地忽略。thinking: {type: "enabled"})的 interleaved-thinking-2025-05-14 beta 標頭仍可運作但已棄用。interleaved-thinking-2025-05-14 以啟用交錯思考。以下是交錯思考的一些重要考量:
budget_tokens 可以超過 max_tokens 參數,因為它代表一個助理回合內所有思考區塊的總預算。interleaved-thinking-2025-05-14,而不會回傳錯誤。在不支援交錯思考的模型上,該標頭會被忽略。在 Claude Opus 4.8、Claude Opus 4.7 和 Claude Opus 4.6 上,它已棄用並會被安全地忽略。在 Claude Mythos Preview 上,不需要此標頭且會被安全地忽略。interleaved-thinking-2025-05-14 傳遞給 Claude Opus 4.8、Claude Opus 4.7、Claude Opus 4.6、Claude Sonnet 4.6、Claude Opus 4.5、Claude Opus 4.1(已棄用)、Opus 4(已棄用)、Sonnet 4.5 或 Sonnet 4(已棄用)以外的任何模型,您的請求將會失敗。搭配思考的提示快取有幾個重要考量:
擴展思考任務通常需要超過 5 分鐘才能完成。請考慮使用 1 小時快取持續時間,以在較長的思考工作階段和多步驟工作流程中維持快取命中。
思考區塊上下文移除
快取失效模式
當搭配工具使用擴展思考時,思考區塊會表現出特定的快取行為,這會影響 token 計數:
運作方式:
詳細範例流程:
請求 1:
User: "What's the weather in Paris?"回應 1:
[thinking_block_1] + [tool_use block 1]請求 2:
User: ["What's the weather in Paris?"],
Assistant: [thinking_block_1] + [tool_use block 1],
User: [tool_result_1, cache=True]回應 2:
[thinking_block_2] + [text block 2]請求 2 會寫入請求內容的快取(而非回應)。快取包含原始使用者訊息、第一個思考區塊、工具使用區塊和工具結果。
請求 3:
User: ["What's the weather in Paris?"],
Assistant: [thinking_block_1] + [tool_use block 1],
User: [tool_result_1, cache=True],
Assistant: [thinking_block_2] + [text block 2],
User: [Text response, cache=True]對於 Opus 4.5+ 和 Sonnet 4.6+,所有先前的思考區塊預設會被保留。對於較早的 Opus/Sonnet 模型和所有 Haiku 模型,由於包含了非工具結果的使用者區塊,所有先前的思考區塊會被忽略並從上下文中移除。此請求的處理方式將與以下相同:
User: ["What's the weather in Paris?"],
Assistant: [tool_use block 1],
User: [tool_result_1, cache=True],
Assistant: [text block 2],
User: [Text response, cache=True]重點:
cache_control 標記max_tokens(當思考啟用時包含您的思考預算)會作為嚴格限制強制執行。在 Claude 4.5 模型及更新版本上,如果輸入 token 加上 max_tokens 超過上下文視窗大小,API 會接受該請求。如果生成隨後達到上下文視窗限制,則會以 stop_reason: "model_context_window_exceeded" 停止。在較早的模型上,API 會改為回傳驗證錯誤。請參閱處理停止原因。
您可以閱讀上下文視窗指南以獲得更深入的了解。
在啟用思考的情況下計算上下文視窗使用量時,有一些需要注意的考量:
max_tokens 限制下圖展示了啟用擴展思考時的專用 token 管理:
有效的上下文視窗計算如下:
context window =
(current input tokens - previous thinking tokens) +
(thinking tokens + encrypted thinking tokens + text output tokens)使用 token 計數 API 來取得您特定使用案例的準確 token 計數,尤其是在處理包含思考的多回合對話時。
當搭配工具使用擴展思考時,思考區塊必須明確保留並隨工具結果一起回傳。
搭配工具使用的擴展思考的有效上下文視窗計算變為:
context window =
(current input tokens + previous thinking tokens + tool use tokens) +
(thinking tokens + encrypted thinking tokens + text output tokens)下圖說明了搭配工具使用的擴展思考的 token 管理:
鑑於擴展思考的上下文視窗和 max_tokens 行為,您可能需要:
max_tokens 值完整的思考內容會被加密並在 signature 欄位中回傳。此欄位用於驗證思考區塊在傳回 API 時確實是由 Claude 所生成。
以下是關於思考加密的一些重要考量事項:
content_block_delta 事件內的 signature_delta 加入,且發生在 content_block_stop 事件之前。signature 值比先前的模型長得多。signature 欄位是一個不透明的欄位,不應被解讀或解析。signature 值可跨平台相容(Claude API、Amazon Bedrock 和 Vertex AI)。在一個平台上生成的值可與另一個平台相容。除了一般的 thinking 區塊外,API 可能會回傳 redacted_thinking 區塊。redacted_thinking 區塊在 data 欄位中包含加密的思考內容,沒有可讀的摘要:
{
"type": "redacted_thinking",
"data": "..."
}data 欄位是不透明且加密的。與一般思考區塊上的 signature 欄位一樣,當繼續使用工具的多回合對話時,您應將 redacted_thinking 區塊原封不動地傳回 API。
如果您的程式碼在搭配工具使用來回傳遞回應時依類型過濾內容區塊(例如 block.type == "thinking"),請同時包含 redacted_thinking 區塊。僅依 block.type == "thinking" 過濾會靜默丟棄 redacted_thinking 區塊,並破壞上述的多回合協定。
redacted_thinking 區塊是 API 在部分思考因安全原因被遮蔽時回傳的獨立內容區塊類型。這與 display: "omitted" 選項不同,後者會回傳 thinking 欄位為空的一般 thinking 區塊。
Messages API 在不同 Claude 模型版本中處理思考的方式有所不同。下表提供了簡要比較:
| 功能 | Claude 4 模型(Opus 4.5 之前) | Claude Opus 4.5 | Claude Sonnet 4.6 | Claude Opus 4.6(自適應思考) | Claude Opus 4.7(自適應思考) | Claude Opus 4.8(自適應思考) | Claude Mythos Preview(自適應思考) |
|---|---|---|---|---|---|---|---|
| 思考輸出 | 回傳摘要思考 | 回傳摘要思考 | 回傳摘要思考 | 回傳摘要思考 | 預設省略;設定 display: "summarized" 以接收摘要思考 | 預設省略;設定 display: "summarized" 以接收摘要思考 | 預設省略;設定 display: "summarized" 以接收摘要思考。原始思考 token 永遠不會回傳。 |
| 交錯思考 | 透過 interleaved-thinking-2025-05-14 beta 標頭支援 |
先前助理回合的思考區塊是否預設保留在上下文中,取決於模型類別。Opus:Claude Opus 4.5 及更新的 Opus 模型會保留所有先前的思考區塊;Claude Opus 4.1(已棄用)及更早的 Opus 模型僅保留最後一個助理回合的思考。Sonnet:Claude Sonnet 4.6 及更新的 Sonnet 模型會保留全部;Claude Sonnet 4.5 及更早的 Sonnet 模型僅保留最後一個回合。Haiku:截至 Claude Haiku 4.5 的所有 Haiku 模型僅保留最後一個回合。Claude Mythos Preview 也會保留所有先前的思考區塊。
思考區塊保留的優點:
重要考量:
對於較早的模型(Claude Sonnet 4.5、Opus 4.1(已棄用)等),先前回合的思考區塊會繼續從上下文中移除。搭配提示快取的擴展思考一節中描述的現有行為適用於這些模型。
如需完整的定價資訊,包括基本費率、快取寫入、快取命中和輸出 token,請參閱定價頁面。
思考過程會產生以下費用:
啟用擴展思考時,系統會自動包含一個專用的系統提示以支援此功能。
使用摘要式思考時:
使用 display: "omitted" 時:
thinking 欄位為空)計費的輸出 token 數量將不會與回應中可見的 token 數量相符。您需要為完整的思考過程付費,而非回應中可見的思考內容。
若要查看內部推理消耗了多少計費輸出 token,請讀取回應中的 usage.output_tokens_details.thinking_tokens。此值反映模型生成的原始推理(而非回應主體中返回的摘要文字),且始終小於或等於 output_tokens。將其從 output_tokens 中減去,即可估算輸出中非推理部分的數量。
{
"usage": {
"input_tokens": 25,
"output_tokens": 348,
"output_tokens_details": {
"thinking_tokens": 312
}
}
}output_tokens 仍然是用於計費的完整且具權威性的總數。output_tokens_details 是僅供觀察用途的唯讀明細。
usage.output_tokens_details.thinking_tokens 欄位會報告計費的輸出 token 中有多少用於內部推理。使用串流時,此細分資訊僅會出現在最後的 message_delta 事件中。max_tokens 大於 21,333 時,SDK 會要求使用串流,以避免長時間執行的請求發生 HTTP 逾時。這是用戶端驗證,而非 API 限制。如果您不需要逐步處理事件,請使用 .stream() 搭配 .get_final_message()(Python)或 .finalMessage()(TypeScript)來取得完整的 Message 物件,而無需處理個別事件。詳情請參閱串流訊息。使用串流時,請準備好在思考和文字內容區塊到達時分別處理它們。display: "omitted",以縮短首個文字 token 的回應時間。請參閱控制思考顯示。temperature 或 top_k 的修改以及強制工具使用不相容。top_p 設定為 1 到 0.95 之間的值。client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=16000,
thinking={"type": "enabled", "budget_tokens": 10000},
messages=[
{
"role": "user",
"content": "Are there an infinite number of prime numbers such that n mod 4 == 3?",
}
],
)
# 回應包含摘要後的思考區塊與文字區塊
for block in response.content:
if block.type == "thinking":
print(f"\nThinking summary: {block.thinking}")
elif block.type == "text":
print(f"\nResponse: {block.text}")client = anthropic.Anthropic()
response = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=16000,
thinking={
"type": "enabled",
"budget_tokens": 10000,
"display": "omitted",
},
messages=[
{"role": "user", "content": "What is 27 * 453?"},
],
)
for block in response.content:
if block.type == "thinking":
if block.thinking:
print(f"Thinking: {block.thinking}")
else:
print("Thinking: [omitted]")
elif block.type == "text":
print(f"Response: {block.text}")client = anthropic.Anthropic()
with client.messages.stream(
model="claude-sonnet-4-6",
max_tokens=16000,
thinking={"type": "enabled", "budget_tokens": 10000},
messages=[
{
"role": "user",
"content": "What is the greatest common divisor of 1071 and 462?",
}
],
) as stream:
thinking_started = False
response_started = False
for event in stream:
if event.type == "content_block_start":
print(f"\nStarting {event.content_block.type} block...")
# 為每個新區塊重設旗標
thinking_started = False
response_started = False
elif event.type == "content_block_delta":
if event.delta.type == "thinking_delta":
if not thinking_started:
print("Thinking: ", end="", flush=True)
thinking_started = True
print(event.delta.thinking, end="", flush=True)
elif event.delta.type == "text_delta":
if not response_started:
print("Response: ", end="", flush=True)
response_started = True
print(event.delta.text, end="", flush=True)
elif event.type == "content_block_stop":
print("\nBlock complete.")透過 interleaved-thinking-2025-05-14 beta 標頭支援 |
透過 interleaved-thinking-2025-05-14 beta 標頭支援,或透過自適應思考自動啟用 |
| 透過自適應思考自動啟用(beta 標頭已棄用並安全地忽略) |
| 透過自適應思考自動啟用(beta 標頭已棄用並安全地忽略) |
| 透過自適應思考自動啟用(beta 標頭已棄用並安全地忽略) |
| 透過自適應思考自動啟用(不需要 beta 標頭且會安全地忽略)。在此模型上,工具間的推理會移入思考區塊。 |
| 思考區塊保留 | 不跨回合保留 | 預設保留 | 預設保留 | 預設保留 | 預設保留 | 預設保留 | 預設保留。 當在不支援 Mythos 思考格式的模型上繼續對話時,區塊會被移除。 |
學習擴展思考的提示工程最佳實務。