當 Claude 請求工具呼叫後,您需要執行該函式並將結果傳送回去。這會透過向 Claude 提供其所請求的資訊,完成工具使用工作流程。
執行工具函式
當 Claude 以工具使用區塊回應時,您需要提取輸入參數並呼叫您的函式。以下是存取工具參數的方法:
python
response.content[1].input這會給您一個字典,其中包含 Claude 想要傳遞給您函式的引數。由於您的函式期望的是關鍵字引數而非字典,因此您需要使用 Python 的解包語法:
python
get_current_datetime(**response.content[1].input)
工具結果區塊
執行工具函式後,您需要使用工具結果區塊將結果傳送回 Claude。此區塊位於使用者訊息內,並告知 Claude 您執行該工具時發生了什麼事。

工具結果區塊有幾個重要的屬性:
- tool_use_id - 必須與此 ToolResult 所對應的 ToolUse 區塊的 id 相符
- content - 執行您的工具所產生的輸出,序列化為字串
- is_error - 若發生錯誤則為 True
處理多個工具呼叫
Claude 可以在單次回應中請求多個工具呼叫。例如,如果使用者詢問「10 + 10 是多少,30 + 30 又是多少?」,Claude 可能會以兩個獨立的 ToolUse 區塊回應。

每個工具呼叫都會獲得一個唯一的 ID,而您在傳送結果時必須比對這些 ID。這可確保 Claude 知道哪個結果對應於哪個請求,即使結果以不同的順序到達也是如此。

建構後續請求
您向 Claude 發出的後續請求必須包含完整的對話歷史記錄,再加上新的工具結果。以下是其結構:
python
messages.append({
"role": "user",
"content": [{
"type": "tool_result",
"tool_use_id": response.content[1].id,
"content": "15:04:22",
"is_error": False
}]
})完整的訊息歷史記錄現在包含:
- 原始使用者訊息
- 帶有工具使用區塊的助理訊息
- 帶有工具結果區塊的使用者訊息
發出最終請求
傳送後續請求時,即使您並不期望 Claude 再次進行工具呼叫,您仍必須包含工具結構定義(schema)。Claude 需要此結構定義來理解您對話歷史記錄中所提及的工具。
python
client.messages.create(
model=model,
max_tokens=1000,
messages=messages,
tools=[get_current_datetime_schema]
)
接著,Claude 將以一則最終訊息回應,該訊息會將工具結果融入為對使用者的自然回應。工具使用工作流程現已完成——您已成功讓 Claude 能夠透過您的自訂函式存取即時資訊。