本頁涵蓋工具呼叫的生命週期:從 Claude 的回應中讀取 tool_use 區塊、在您的回覆中格式化 tool_result 區塊,以及發出錯誤訊號。如需自動處理這些工作的 SDK 抽象層,請參閱 Tool Runner。
Claude 的回應會根據其使用的是用戶端或伺服器工具而有所不同。
回應將具有 tool_use 的 stop_reason,以及一個或多個 tool_use 內容區塊,其中包含:
id:此特定工具使用區塊的唯一識別碼。稍後將用於比對工具結果。
name:正在使用的工具名稱。
input:一個物件,包含傳遞給工具的輸入,符合工具的 input_schema。
當您收到用戶端工具的工具使用回應時,您應該:
- 從
tool_use 區塊中提取 name、id 和 input。
- 在您的程式碼庫中執行與該工具名稱對應的實際工具,並傳入工具
input。
- 透過傳送一則
role 為 user 的新訊息來繼續對話,其中的 content 區塊包含 tool_result 類型以及以下資訊:
tool_use_id:此結果所對應的工具使用請求的 id。
content(選填):工具的結果,可以是字串(例如 "content": "15 degrees")、巢狀內容區塊的清單(例如 "content": [{"type": "text", "text": "15 degrees"}]),或文件區塊的清單(例如 "content": [{"type": "document", "source": {"type": "text", "media_type": "text/plain", "data": "15 degrees"}}])。這些內容區塊可以使用 text、image、document 或 search_result 類型。
is_error(選填):如果工具執行導致錯誤,請設為 true。
收到工具結果後,Claude 將使用該資訊繼續生成對原始使用者提示的回應。
Claude 會在內部執行工具,並將結果直接納入其回應中,無需額外的使用者互動。
在 Claude 中使用工具時,可能會發生幾種不同類型的錯誤:
處理 Claude 在單一回合中呼叫多個工具的回應。
讓 SDK 為您管理 tool_use 迴圈、結果格式化和重試。
撰寫能引導 Claude 選擇正確工具的結構描述和說明。