Claude Platform Docs
  • Messages
  • 託管代理
  • 管理

Search...
⌘K
第一步
Claude 簡介快速入門
使用 Claude 進行建構
功能概覽使用 Messages API停止原因與備援拒絕與備援備援額度
模型能力
擴展思考自適應思考Effort任務預算(測試版)快速模式(研究預覽)結構化輸出引用串流 Messages批次處理搜尋結果串流拒絕多語言支援嵌入
工具
概覽工具使用的運作方式教學:建構使用工具的代理定義工具處理工具呼叫平行工具使用Tool Runner (SDK)嚴格工具使用伺服器工具網頁搜尋工具網頁擷取工具程式碼執行工具顧問工具工具搜尋工具記憶工具Bash 工具文字編輯器工具電腦使用工具疑難排解
工具基礎架構
工具參考管理工具上下文工具組合工具使用與提示快取程式化工具呼叫細粒度工具串流
上下文管理
上下文視窗壓縮上下文編輯提示快取對話中系統訊息建構協調模式快取診斷(測試版)Token 計數
處理檔案
Files APIPDF 支援
技能
概覽快速入門最佳實踐企業技能API 中的技能
MCP
遠端 MCP 伺服器MCP 連接器
雲端平台上的 Claude
Amazon BedrockAmazon Bedrock(舊版)AWS 上的 Claude PlatformGoogle CloudMicrosoft Foundry

Log in
Tool Runner (SDK)
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Claude Platform Docs

Solutions

  • AI agents
  • Code modernization
  • Coding
  • Customer support
  • Education
  • Financial services
  • Government
  • Life sciences

Partners

  • Claude on AWS
  • Claude on Google Cloud

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Company

  • Anthropic
  • Careers
  • Economic Futures
  • Research
  • News
  • Responsible Scaling Policy
  • Security and compliance
  • Transparency

Learn

  • Blog
  • Courses
  • Use cases
  • Connectors
  • Customer stories
  • Engineering at Anthropic
  • Events
  • Powered by Claude
  • Service partners
  • Startups program

Help and security

  • Availability
  • Status
  • Support
  • Discord

Terms and policies

  • Privacy policy
  • Responsible disclosure policy
  • Terms of service: Commercial
  • Terms of service: Consumer
  • Usage policy
Messages/工具

Tool Runner(SDK)

使用 SDK 的 tool runner 自動處理代理迴圈、錯誤封裝和型別安全。

「Tool runner」(工具執行器)會處理代理迴圈、錯誤封裝和型別安全,讓您無需自行處理。當您需要人工審核(human-in-the-loop)、自訂日誌記錄或條件式執行時,請改用手動迴圈。

Tool runner 會自動執行以下操作,而無需手動處理工具呼叫、工具結果和對話管理:

  • 在 Claude 呼叫工具時執行工具
  • 處理請求/回應週期
  • 管理對話狀態
  • 提供型別安全和驗證


Tool runner 目前為 beta 版本,可在 Python SDK、TypeScript SDK、C# SDK、Go SDK、Java SDK、PHP SDK 和 Ruby SDK 中使用。

基本用法

使用 SDK 輔助函式定義工具,然後使用 tool runner 執行它們。

根據 SDK 的工具簽章,工具會以字串或內容區塊(文字、圖片或文件區塊)的形式回傳結果,因此工具可以回傳多模態結果。回傳的字串會成為單一文字內容區塊。若要回傳結構化資料(例如 JSON 物件或數字),請先將其編碼為字串。

迭代 tool runner

Tool runner 是一個可迭代物件,會產出來自 Claude 的訊息。在每次迭代中,runner 會檢查 Claude 是否請求了工具使用。如果是,它會執行工具並自動將結果傳回給 Claude,然後產出 Claude 的下一則訊息以繼續您的迴圈。

您可以在任何迭代中使用 break 陳述式結束迴圈。Runner 會持續迴圈,直到 Claude 回傳不含工具使用的訊息,或達到您設定的 max_iterations 為止。

如果您不需要中間訊息,可以直接取得最終訊息:

進階用法

在迴圈內,您可以讀取每個回應訊息,並在下一次 API 呼叫之前修改 runner 的狀態。每次迭代遵循以下生命週期:

  1. Runner 以其目前狀態向 Messages API 發送請求。
  2. Runner 將回應訊息產出給您的迴圈主體。
  3. 您的迴圈主體執行。您可以讀取訊息並選擇性地修改 runner 的狀態。
  4. 當您的迴圈主體返回時,runner 會檢查您是否修改了其訊息歷史記錄。
    • 如果您未修改訊息歷史記錄: Runner 會將助理訊息附加到其狀態。如果訊息包含工具呼叫,runner 會執行它們並附加結果。如果沒有工具呼叫,迴圈結束。
    • 如果您修改了訊息歷史記錄: Runner 會跳過其自動附加步驟,並原封不動地使用您的狀態。請參閱接管訊息歷史記錄。

接管訊息歷史記錄

預設情況下,runner 會為您管理對話狀態:在每個回合之後,它會將助理訊息和任何工具結果附加到自己的訊息歷史記錄中。當您想要重試某個回合(捨棄回應並重新發送)、插入後續訊息或自行建構工具結果時,您可以接管訊息歷史記錄。

您可以透過在迴圈主體內修改 runner 的訊息來接管。確切的方法取決於 SDK。請參閱後續各語言的分頁。

當您接管某次迭代時,runner 不會附加該回合的助理訊息或工具結果。您需要負責保持對話的有效性:自行附加助理訊息和工具結果(如果您希望該回合被計入)、有條件地修改狀態以便在沒有工具呼叫時迴圈仍能結束,並傳遞 max_iterations 以限制迴圈次數。所有七個 SDK 都支援 max_iterations。

自動上下文管理

對於長時間執行的代理任務,Python、TypeScript 和 Ruby 的 tool runner 支援自動壓縮(compaction),當 token 使用量超過閾值時會產生摘要,使對話能夠超越「context window」(上下文視窗)限制繼續進行。這三個 SDK 都已棄用此客戶端選項,改為使用伺服器端的上下文編輯,後者在每個 SDK 中都可使用。Go、Java、C# 和 PHP 的 tool runner 不包含客戶端壓縮功能。

偵錯工具執行

當工具拋出例外時,tool runner 會捕捉它並將錯誤以 is_error: true 的工具結果形式回傳給 Claude。工具結果包含例外的訊息(在 Python 中為其型別和訊息),而非完整的堆疊追蹤。

SDK 記錄的內容因語言而異。每當工具引發未處理的例外時,Python SDK 會透過標準 logging 模組記錄完整的例外(包括其堆疊追蹤)。Python、TypeScript 和 Java SDK 會讀取 ANTHROPIC_LOG 環境變數以開啟 SDK 的日誌記錄,其中包含請求和回應的詳細資訊:

# 以 info 層級記錄
export ANTHROPIC_LOG=info

# 以 debug 層級記錄以取得更詳細的輸出
export ANTHROPIC_LOG=debug

Go、Ruby、C# 和 PHP SDK 不會讀取 ANTHROPIC_LOG。除了 Python 之外,沒有 SDK 會記錄失敗的工具:若要查看工具失敗的原因,請在工具函式內捕捉並記錄例外,然後再回傳或重新拋出它。

攔截工具錯誤

預設情況下,工具錯誤會傳回給 Claude,Claude 可以據此做出適當的回應。然而,您可能希望偵測錯誤並以不同方式處理它們,例如提早停止執行或實作自訂錯誤處理。

在 Python 和 TypeScript SDK 中,使用工具回應方法(Python 中的 generate_tool_call_response()、TypeScript 中的 generateToolResponse())在工具結果發送給 Claude 之前攔截並檢查錯誤。其他 SDK 不提供該掛鉤。它們的分頁描述了最接近的替代方案:

修改工具結果

您可以在工具結果發送回 Claude 之前修改它們。這對於新增中繼資料(例如 cache_control)以在工具結果上啟用提示快取,或轉換工具輸出非常有用。

在 Python 和 TypeScript SDK 中,使用工具回應方法取得工具結果,然後在 runner 繼續之前修改它。您是明確附加修改後的結果還是就地變更它,取決於 SDK。請參閱每個分頁中的程式碼註解。



當工具回傳大量資料(例如文件搜尋結果)且您希望在後續 API 呼叫中快取這些資料時,在工具結果上新增 cache_control 特別有用。請參閱提示快取以了解更多快取策略的詳細資訊。

串流

啟用「streaming」(串流)以逐步處理每個回合的回應。每次迭代會產出一個串流物件,您可以迭代它以取得事件。

後續步驟


嚴格工具使用

透過語法約束取樣,強制 Claude 的工具輸入符合 JSON Schema。

處理工具呼叫

解析 tool_use 區塊、格式化 tool_result 回應,並使用 is_error 處理錯誤。

平行工具使用

啟用並格式化平行工具呼叫,包含訊息歷史記錄指引和疑難排解。

定義工具

指定工具 schema、撰寫有效的描述,並控制 Claude 何時呼叫您的工具。

Was this page helpful?

  • 基本用法
  • 迭代 tool runner
  • 進階用法
  • 接管訊息歷史記錄
  • 自動上下文管理
  • 偵錯工具執行
  • 攔截工具錯誤
  • 修改工具結果
  • 串流
  • 後續步驟