“Thinking mode”(亦稱為 extended thinking、thinking 或 thinking blocks)在 Claude 4.5 中是一種明確且可配置的運作模式,指示模型在輸出最終答案前,先使用單獨預算的代幣生成內部的逐步推理(“chain-of-thought”)。它透過以更高延遲與代幣成本換取更深入的內部思考,來提升多步推理、複雜程式設計與代理工作流程、以及研究任務的表現。Claude 4.5 在 Messages API 層面以明確參數(例如 thinking / budget_tokens 或 effort/“interleaved-thinking” 標頭)提供此能力,並會保留且可選擇加密思考區塊,以供之後驗證或工具使用,同時引入快取與代幣記帳行為,在建置生產工作負載時必須加以管理。
什麼是 Claude 4.5?(我應該關注哪些模型?)
Claude 4.5 是 Anthropic 發布的一組最新 Claude 模型,作為「4.5」的漸進式更新(例如 Sonnet 4.5 與 Opus 4.5)。Sonnet 4.5 被定位為對多數開發者而言在智慧、程式與代理表現上的最佳平衡;Opus 4.5 則專注於非常高投入的推理,並保留思考區塊以提升多輪延續性。兩者皆支援 Claude 的延伸思考能力,但某些行為(例如摘要化 vs 完整思考)會因模型而異。
Claude 4.5 的效能提升,尤其在 Sonnet 4.5 上,在 SWE-bench Verified 基準上最為明顯。該基準衡量 AI 解決真實 GitHub 問題的能力。
| Model | SWE-bench Verified Score | OSWorld (Computer Use) |
|---|---|---|
| Claude 3.5 Sonnet | 49.0% | 42.2% |
| Claude 4.1 Opus | 67.6% | 55.0% |
| Claude 4.5 Sonnet (Thinking On) | 77.2% | 61.4% |
| GPT-5 (Medium Reasoning) | 65.0% | 52.0% |
這些數據顯示,Claude 4.5 不僅更擅長撰寫片段程式碼;它在瀏覽整個檔案系統與無需人工介入即可執行自主任務方面顯著更為強大。
為何重要
- 程式設計與代理:Sonnet 4.5 在真實世界軟體工作與長期程式開發方面展現強大提升——非常適合用於程式碼產生、程式碼編輯與自主代理流程。
- 延伸思考與上下文:Claude 4.5 系列模型能以非常大的內部草稿空間(數萬代幣或更多)進行推理,帶來更深的多步思考。這會改變你設計提示、代幣預算與工具互動的方式。
什麼是 Claude 4.5 的 Thinking Mode?
Thinking Mode(正式稱為「Extended Thinking」)是一項功能,允許模型在提供最終輸出前先對自己「展示其推理過程」。不同於標準模型會立即承諾答案,Claude 4.5 使用專門的推理空間來探索多個假設、辨識其邏輯中的可能錯誤,並精煉策略。
回應的組成
在標準互動中,模型接收提示並開始生成答案。在 Thinking Mode 中,回應被分成兩個不同的區塊:
| Block Type | Visibility | Purpose |
|---|---|---|
| Thinking Block | Hidden (via API) or Collapsed (UI) | 模型的內部獨白、規劃與自我批判。 |
| Text Block | Visible | 提供給使用者的最終、精煉答案。 |
Thinking Mode 的關鍵特性
- 按需啟用:你在 API 呼叫中傳入
{"type":"enabled","budget_tokens":10000}的thinking物件以啟用,並給模型一個內部推理代幣預算。 - 預算管理:
budget_tokens對模型的內部推理代幣做上限。更高的預算 => 更深的推理潛力,但也帶來更高成本與延遲。在 Claude 4 系列中,即使你只收到摘要視圖,思考代幣仍計費。 - 摘要與遮蔽:對於許多 Claude 4 模型,使用者會看到思考內容的摘要版本;某些內部推理可能由安全系統遮蔽(加密)並以
redacted_thinking返回。 - 簽章與驗證:思考區塊包含不透明的
signature,在返回思考區塊至 API(尤其在使用工具時)進行驗證時需要。你應將簽章視為不透明——不要嘗試解析。 - 與工具的交錯思考:Claude 4 支援將思考區塊與工具執行交錯(在某些情況下為測試版、旗標控制)。這對代理式工作非常強大(執行工具、思考、再執行另一個工具等)。
若需實作範例與最新參數,請以 Anthropic 的 Messages/Extended Thinking 文件為準。
Messages API 如何返回思考內容
摘要 vs 完整思考;加密與簽章
不同版本的 Claude 模型處理思考內容的方式不同:較新的 Claude 4 模型(如 Sonnet/Opus 4.5)通常返回內部推理的「摘要」公開視圖,而完整草稿可能被加密,僅能透過 signature 欄位(或 redacted 區塊)取得。當使用工具(或你需要在工具呼叫間保留內部狀態)時,你必須將思考區塊傳回 API,或使用文件所述的簽章機制。此機制有助於保護敏感的內部推理,同時在需要時允許安全地延續思考過程。
實務處理模式
工具使用/延續:若你的下一個請求必須延續相同的內部狀態(例如,工具是基於該思考所執行),請在再次呼叫 API 時包含返回的思考區塊或簽章,以便模型能解密並從中接續。
請求:傳送 thinking: {type: "enabled", budget_tokens: N}。
回應:你可能收到 (a) 公開輸出的摘要、(b) 加密的 signature 或 redacted_thinking 區塊,或 (c) 二者皆有。
CometAPI 以官方 API 價格的 20% 提供 Claude 4.5 API,亦可使用 Anthropic Messages 呼叫。開始前你需要取得 API 金鑰。
範例 1 — 簡單 curl(非串流)啟用思考
curl https://api.cometapi.com/v1/messages \
-H "x-api-key: $CometAPI_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 16000,
"thinking": {
"type": "enabled",
"budget_tokens": 10000
},
"messages": [
{"role": "user", "content": "Design a robust data validation strategy for CSV imports, show tests + code."}
]
}'
回應會包含 content 區塊。檢視每個區塊並以 text 區塊為最終輸出;thinking 區塊包含模型的內部分析摘要。
範例 2 — Python:請求、解析思考與文字區塊
import os, requests
API_KEY = os.environ["CometAPI_API_KEY"]
URL = "https://api.cometapi.com/v1/messages"
HEADERS = {
"x-api-key": API_KEY,
"anthropic-version": "2023-06-01",
"content-type": "application/json"
}
payload = {
"model": "claude-sonnet-4-5",
"max_tokens": 16000,
"thinking": {"type": "enabled", "budget_tokens": 8000},
"messages": [{"role": "user", "content": "Explain how to do property-based testing in Python; include example code."}]
}
r = requests.post(URL, headers=HEADERS, json=payload)
r.raise_for_status()
resp = r.json()
# Parse blocks
for block in resp.get("content", []):
if block.get("type") == "thinking":
thinking_summary = block.get("thinking")
print("=== THINKING (summary) ===")
print(thinking_summary[:1000]) # truncate for logs
print("signature:", block.get("signature")[:64], "...")
elif block.get("type") == "text":
print("=== FINAL TEXT ===")
print(block.get("text"))
此程式會擷取並列印摘要化的思考與最終答案。若你需要在多輪代理流程中保留延續性,請在下一次請求的 messages 陣列中包含未修改的思考區塊(見下一個範例)。
範例 3 — 在多輪流程中重用思考區塊(Python 偽碼)
# After initial response (resp above):
# Add the assistant message including the thinking block back into the conversation
assistant_message = {
"role": "assistant",
"content": resp["content"] # include raw content array (contains thinking + text blocks)
}
# Next user turn: ask follow-up and include previous assistant message
payload2 = {
"model": "claude-opus-4-5", # Opus preserves thinking blocks better across turns
"max_tokens": 20000,
"thinking": {"type": "enabled", "budget_tokens": 12000},
"messages": [
{"role": "user", "content": "Now adapt the validation logic for an avro pipeline."},
assistant_message
]
}
r2 = requests.post(URL, headers=HEADERS, json=payload2)
在進行工具整合或長時間代理工作流程時,保留完全未修改的思考區塊至關重要。Opus 4.5 在跨輪次的思考區塊保留與快取方面有更佳的預設。
我該如何串流思考輸出並在 UI 顯示進度?
串流最佳實務
- 使用 SDK 串流端點(Python/TypeScript SDK 具備串流輔助工具)。對於長時間或高預算的推理工作,串流可避免 HTTP 逾時,並在模型計算時提供部分文本。典型程式會對
text_stream(Python)進行疊代或在 JS 中解析事件。 - 有時需預期兩階段串流:模型可能先產生可見的推理片段,再完成最終答案。建置你的 UI 以處理切割內容,並顯示「思考中…」與最終答案的狀態。
- 若 API 在串流時返回
signature_delta或content_block_delta,請擷取並依規格在後續呼叫中附加。
若你需要在 UI 中顯示中途推理進度,請串流回應。伺服器會先發出 thinking_delta 事件,接著是 text_delta 事件。
curl https://api.cometapi.com/v1/messages \
--header "x-api-key: $CometAPI_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--data '{
"model": "claude-sonnet-4-5",
"max_tokens": 16000,
"stream": true,
"thinking": { "type": "enabled", "budget_tokens": 8000 },
"messages": [ { "role": "user", "content": "Walk me through debugging this failing unit test and propose fixes." } ]
}'
在串流時,請依序處理 content_block_start、content_block_delta(包含 thinking_delta 與 text_delta)以及 content_block_stop 事件。這能讓你在模型推理進行時即時顯示其逐步思考。
Claude Code 如何與 Thinking Mode 互動?(terminal + VS Code)
Claude Code 是整合 Messages API 與工具執行器的互動式、代理式程式設計終端。CLI/IDE 體驗透過兩種方式呈現思考:
- 全域/每次工作階段設定:Claude Code 透過
/config設定面板調整行為(代理如何請求權限、是否保留思考區塊等)。若你想要持久的行為變更,請使用該 UI,而非重複輸入原始 JSON。 - 模型選擇與 CLI 命令:你可在 REPL 中選擇
claude-sonnet-4-5或claude-opus-4-5作為使用中的模型;工具與思考行為將遵循 Messages API 語意。CHANGELOG 與版本說明指出,在部分 Opus 4.5 的部署中,思考預設已啟用,且思考配置可透過/config呈現。
Claude Code 的實務流程:
- 在 REPL 中啟動一個專案。
- 使用
/config檢視與思考相關的旗標(保留、冗長程度等)。 - 要求代理執行長任務——它會產生思考內容,必要時會請求執行特定 bash 步驟的許可。當你需要驗證或重新執行決策時,請保留思考區塊。
安裝與設定
Claude Code 需要 Node.js,並可全域安裝。
# Install Claude Code CLI
npm install -g @anthropic/claude-code
# Authenticate
claude-code --init
在終端啟用 Thinking
Claude Code 支援各種旗標與自然語言觸發,以控制其推理深度。
| Command/Trigger | Description |
|---|---|
| claude-code --think | 啟動預設已啟用延伸思考的工作階段。 |
| claude-code --model sonnet-4.5 | 指定最新的前沿模型。 |
| /think <task> | 在 CLI 內以斜線命令呼叫特定的重推理任務。 |
| "ultrathink" | 一個自然語言關鍵字,指示 Claude 使用可能的最大推理預算。 |
提示:
- 在需要代理探索替代實作時,使用
think/think harder。 - 當 Claude Code 執行工具呼叫(跑測試、git 操作)時,若 CLI/代理返回
thinking區塊,請加以保留;否則代理可能在步驟之間失去脈絡。
交錯思考與區塊保留的好處
對於進階的代理式工作流程,Claude 4.5 引入兩個顯著增強多輪互動與工具使用的測試版功能:Interleaved Thinking 與 Thinking Block Preservation。
Interleaved Thinking(測試版)
標準推理在輸出前只進行一次。Interleaved Thinking(透過 interleaved-thinking-2025-05-14 標頭啟用)允許 Claude 在工具呼叫之間「思考」。
想像 Claude 正在除錯一台伺服器:
- Think:「我應該先查看日誌。」
- 工具呼叫:
read_file(logs.txt) - Think:「日誌顯示資料庫逾時。現在我需要檢查連線池設定。」
- 工具呼叫:
read_file(db_config.yml)
這種「持續反思」確保模型會根據工具返回的資料調整策略,而非遵循僵硬、預先定義的計畫。
思考區塊保留
在多輪對話中,尤其涉及工具使用時,將先前的 thinking 區塊傳回 API 至關重要。
- **推理延續性:**藉由接收先前的思考,Claude 能維持其邏輯脈絡。
- **Opus 4.5 最佳化:**在 Claude Opus 4.5 中,此行為已自動化。模型會預設在其上下文中保留所有先前的思考區塊,確保即使在長達 30+ 小時的工作階段中,模型也不會「忘記」為何在十輪前做出某些架構決策。
在 Claude 4.5 中使用 THINKING 模式的實務建議
為任務選擇合適的模型與預算:
在程式與代理工作流程中使用 Sonnet 4.5,它提供速度、成本與強大程式能力的最佳取捨;在需要最深層推理與最大上下文視窗,或計畫進行長時間自主工作階段時,使用 Opus 4.5。兩者皆支援延伸思考。根據任務複雜度設定 budget_tokens(先以小預算試驗;僅在確實觀察到品質明顯改善時提高預算)。
監控與控制成本與延遲
系統會對 Claude 產生的全部思考代幣收費,而非僅對你收到的摘要輸出收費。這代表即使你只看到簡短摘要,長時間的內部思考仍會提高成本。追蹤代幣使用並考慮逐步調整(例如:2k → 8k → 32k),在從探索走向生產時進行調校。
僅在必要時保留思考區塊
思考區塊可進行密鑰簽署並保留,供日後驗證與交錯工具使用。除非你的工作流程需要模型保留其先前的內部思考(例如代理將重跑步驟且需要保留的理由),否則避免在每次後續請求中回傳思考區塊。持續保留思考會增加上下文容量並複雜化代幣記帳。
何時向使用者串流思考
串流思考非常適合開發者工具與教育型 UI(在模型思考時顯示「進行中」)。在面向一般消費者的生產應用中,未經安全與遮蔽考量,不要串流原始思考:摘要化思考正是為此而生。若要串流,請提供能標示內部推理的 UI(例如「助理推理——內部」),並控制最終使用者看到的是摘要或完整推理。
工具使用與交錯
將思考與工具(程式執行、網頁擷取、本地流程)結合時,當你需要模型在同一輪中選擇工具、執行並基於結果推理,請使用「交錯思考」設計。交錯會增加複雜度(且可能需要功能旗標),但對代理式自動化非常強大。明確界定你要保留哪些思考,並測試模型在啟用思考時的工具選擇行為。
實務疑難排解與運維注意事項
常見錯誤與意義
- 無效思考 + 強制工具選擇:若你要求思考同時強制特定的工具使用模式,而該模式與思考不相容,API 會返回錯誤——不要將
tool_choice: {"type":"tool","name":"..."}與思考混用。 - Budget > max_tokens:對交錯思考情境,實際代幣規則不同——平台文件解釋了在何種情況下
budget_tokens可超過max_tokens。在測試大型預算前請仔細閱讀「交錯思考」章節。 - 簽章驗證:若你保留思考區塊以供後續呼叫,請包含返回的
signature,以便 API 驗證其來自 Claude;此舉能防止竄改並維持可驗證的鏈路。
可觀測性與監測
記錄:(1) model 選擇、(2) thinking.budget_tokens、(3) 實際思考代幣消耗(你會被計費)、(4) 串流延遲(第一個 thinking_delta 的時間)、(5) 最終文字代幣。使用這些指標來建立預算與使用者面向流程的 SLO。
漸進式發布與人為審核
在功能旗標後發布啟用思考的模型。先從一定比例的開發者或內部流量開始,收集失敗或遮蔽案例,並迭代提示與預算。對敏感領域,對包含大量內部推理的輸出在發布前要求人為審核。
除錯提示
- 從小開始:先啟用低
budget_tokens並逐步擴大,以理解逐步改善。 - 開啟串流並記錄
content_block_delta/簽章事件,以掌握模型何時產生思考區塊。 - 若使用 Claude Code:檢查
/config與專案層級設定;若行為與預期預設不符,請參考 Claude Code 的變更日誌。
結論:
Claude 4.5 結合 Extended Thinking 與 Claude Code CLI 的力量,代表自 IDE 發明以來在開發者生產力上的最重大飛躍。藉由允許模型「展示其過程」並對複雜問題進行深思,Anthropic 已超越「聊天機器人」時代,邁入「代理式」時代。
無論你是將 Messages API 整合至自訂開發工具,或使用 Claude Code 管理每日 PR,熟練掌握 Thinking Mode 都至關重要。它提供建立信任所需的透明度,與達成卓越所需的推理深度。
開發者可透過 CometAPI 存取 Claude 4.5(Claude Sonnet 4.5、Claude Haiku 4.5、Claude Opus 4.5)模型。開始之前,請在 CometAPI 的 Playground 探索模型能力,並參考 API 指南取得詳細操作說明。存取前請先登入 CometAPI 並取得 API 金鑰。CometAPI 提供遠低於官方價格的方案,協助你整合。
Ready to Go?→ Free trial of Claude 4.5!
