第 45 页 / 共 100 页 / 飞书修订版 6

10.The batch tool

此文档由 学习AI的1000天 翻译制作(抖音,B站,YouTube)

邮箱: szqshan@gmail.com | 微信: szqshan
网址: www.xueai.org

==================================================

在使用Claude的工具调用功能时,你可能会注意到Claude可以在单个助手消息中包含多个工具使用块。这使得Claude能够并行运行多个工具,而不是为每个工具单独发送请求。然而,在实际应用中,让Claude始终如一地这样做可能具有挑战性。

image1.png

例如,如果你要求Claude为同一日期设置两个提醒,理想情况下它应该返回一个包含两个工具使用块的单一响应。但通常情况下,Claude会先进行第一个工具调用,等待你的响应,然后在单独的往返中进行第二个工具调用。

image2.png

当这些操作本可以同时执行时,这就造成了不必要的来回通信。解决方案是实现一个批处理工具,鼓励Claude一次性请求多个工具调用。

批处理工具的工作原理

批处理工具是一个额外的工具,它接受对其他工具的调用列表。Claude不是直接调用多个工具,而是调用批处理工具并提供描述它想要运行哪些工具的参数。

image3.png

批处理工具接收一个调用列表,其中每个调用指定:

  • 要调用的工具名称
  • 传递给该工具的参数

当你收到批处理工具调用时,你的代码会遍历调用列表并执行每个请求的工具调用。

实现批处理工具模式

首先,您需要定义批处理工具的模式。以下是其结构:

batch_tool_schema = {

"name": "batch_tool",

"description": "Invoke multiple other tool calls simultaneously",

"input_schema": {

"type": "object",

"properties": {

"invocations": {

"type": "array",

"description": "The tool calls to invoke",

"items": {

"type": "object",

"properties": {

"name": {

"type": "string",

"description": "要调用的工具名称"

},

"arguments": {

"type": "object",

"description": "传递给工具的参数"

}

}

}

}

}

}

}

实现批处理函数

接下来,你需要创建处理批量工具调用的函数:

def run_batch(invocations=[]):

batch_output = []

for invocation in invocations:

name = invocation["name"]

args = json.loads(invocation["arguments"])

tool_output = run_tool(name, args)

batch_output.append({

"tool_name": name,

"output": tool_output

})

return batch_output

This function:

  1. 遍历列表中的每个调用
  2. 提取工具名称和参数
  3. 使用您现有的 run_tool 函数调用相应的工具
  4. 将所有结果收集到批处理输出列表中

您还需要更新主要的工具路由函数来处理批处理工具:

def run_tool(tool_name, tool_input):

if tool_name == "get_current_datetime":

return get_current_datetime(**tool_input)

elif tool_name == "add_duration_to_datetime":

return add_duration_to_datetime(**tool_input)

elif tool_name == "set_reminder":

return set_reminder(**tool_input)

elif tool_name == "batch_tool":

return run_batch(**tool_input)

Results

一旦实现后,当Claude识别到多个操作可以并行执行时,它将更倾向于使用批处理工具。Claude不会发起单独的请求,而是会调用批处理工具,并传入它想要执行的所有操作的列表。

批处理工具本质上是一个变通方案,为Claude提供了并行工具执行的更高级抽象。虽然这种方法可能看起来不太寻常,但它是鼓励Claude将相关操作批量处理的有效技术,减少了API往返次数并提高了整体效率。

==================================================



此文档由 学习AI的1000天 翻译制作(抖音,B站,YouTube)
邮箱: szqshan@gmail.com | 微信: szqshan
网址: www.xueai.org