當 Claude 請求工具呼叫後,您需要執行該函式並將結果傳回。這透過向 Claude 提供其所請求的資訊,完成了工具使用的工作流程。
執行工具函式
當 Claude 以工具使用區塊回應時,您需要提取輸入參數並呼叫您的函式。以下是存取工具參數的方法:
python
# 存取工具使用區塊
tool_use_block = response.content[1]
# 取得輸入參數
input_params = tool_use_block.input
# 使用參數呼叫您的函式
result = get_current_datetime(**input_params)雙星號(**)會將字典解包為您函式所需的關鍵字引數。
工具結果區塊
執行工具後,您需要使用工具結果區塊將結果傳回給 Claude。此區塊有幾個重要的屬性:

- tool_use_id - 必須與原始工具使用區塊中的 ID 相符
- content - 您工具函式的輸出,轉換為字串
- is_error - 如果執行過程中發生錯誤,則設為 true
處理多個工具呼叫
Claude 可以在單次回應中請求多個工具呼叫。例如,如果使用者問「10 + 10 是多少,30 + 30 又是多少?」,Claude 可能會發送兩個獨立的工具使用區塊:

每個工具使用區塊都會獲得一個唯一的 ID,您在傳回結果時必須匹配這些 ID:

這個 ID 系統確保 Claude 能夠正確地將每個結果與其對應的請求匹配,即使結果以不同的順序到達也是如此。
發送後續請求
您向 Claude 發送的後續請求必須包含完整的對話歷史記錄以及新的工具結果:
python
messages.append({
"role": "user",
"content": [{
"type": "tool_result",
"tool_use_id": response.content[1].id,
"content": result,
"is_error": False
}]
})對話流程如下所示:

請記得在後續請求中包含工具結構定義,即使 Claude 可能不需要再次呼叫工具。Claude 需要該結構定義來理解對話歷史記錄中的工具參照。
完整工作流程
以下是完整的流程:
- 使用者提出需要使用工具的問題
- Claude 以工具使用區塊回應
- 您執行所請求的工具函式
- 您發送包含工具結果的後續請求
- Claude 使用工具輸出提供最終答案
最終請求包含您完整的訊息歷史記錄、工具結果區塊以及工具結構定義。然後 Claude 會以一般文字訊息回應,其中融入了您工具執行所得的資訊。