在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能够通过您的自定义函数访问实时信息。