加载中

Using multiple tools

第 28 课7 分钟

一旦您具备了核心的工具处理基础设施,为您的Claude实现添加多个工具就会变得简单直接。本教程展示了如何通过遵循一个简单的模式来集成额外的工具。

我们要添加的工具

我们的提醒系统需要三个主要功能:

  • 获取当前日期时间 - Claude需要知道当前的日期和时间
  • 为日期时间添加时长 - Claude在日期时间加法运算上并不完美
  • 设置提醒 - 需要一种设置提醒的方式

好消息是大部分实现工作已经完成。add_duration_to_datetime 函数和 set_reminder 函数已经提供,以及它们对应的模式(schema)。

向对话中添加工具

首先,更新 run_conversation 函数,将新的工具模式添加到工具列表中:

python
response = chat(messages, tools=[
    get_current_datetime_schema,
    add_duration_to_datetime_schema,
    set_reminder_schema
])

这会告诉Claude在对话过程中可以使用的所有三个可用工具。

更新工具路由器

接下来,修改 run_tool 函数以处理新的工具调用。为每个新工具添加elif分支:

python
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)

这个模式很简单:检查工具名称,使用提供的输入调用相应的函数,并返回结果。

测试多工具使用

要测试该系统,请尝试一个需要多个工具的请求:"为我的医生预约设置一个提醒。它是在2050年1月1日之后的177天。"

这个请求迫使Claude:

  1. 计算日期(使用 add_duration_to_datetime)
  2. 设置提醒(使用 set_reminder)

Claude通过首先解释它需要做什么,然后按顺序进行相应的工具调用来处理这个问题。对话显示Claude计算出2050年6月27日作为目标日期,然后为该日期设置提醒。

理解消息流

当您检查对话历史时,您会看到完整的消息结构:

  • 包含请求的用户消息
  • 包含文本和工具使用块的助手消息
  • 工具结果消息
  • 后续的助手消息

这展示了Claude如何在单个消息中包含多个块——将解释性文本与工具使用请求结合起来。

添加工具的简单模式

一旦您拥有了核心工具基础设施,添加新工具就遵循以下模式:

  1. 创建工具函数实现
  2. 定义工具模式
  3. 将模式添加到 run_conversation 中的工具列表
  4. 在 run_tool 中为该工具添加一个分支

这种模块化方法使您能够轻松扩展AI助手的能力,而无需重构现有代码。每个新工具都能与现有的对话流程和工具处理逻辑无缝集成。