加载中

在使用Claude构建AI应用程序时,您通常需要让它访问实时信息或执行操作的能力。这就是工具函数发挥作用的地方——它们是Python函数,当Claude需要额外数据来帮助用户时可以调用这些函数。

上图展示了我们将要实现的三个基本工具:获取当前日期/时间、为日期添加时长,以及设置提醒。让我们从第一个开始。

什么是工具函数?

工具函数是一个普通的Python函数,当Claude判断需要额外信息来帮助用户时,它会自动执行。例如,如果有人问"现在几点了?",Claude会调用您的日期/时间工具来获取当前时间。

这是一个天气工具函数的示例。请注意它如何验证输入并提供清晰的错误消息——这些都是重要的最佳实践。

工具函数的最佳实践

编写工具函数时,请遵循以下准则:

  • 使用描述性名称: 您的函数名称和参数名称都应清楚地表明其用途
  • 验证输入: 检查必需的参数是否为空或无效,并在出现这种情况时抛出错误
  • 提供有意义的错误消息: Claude可以看到错误消息,并可能使用修正后的参数重试函数调用

验证尤为重要,因为Claude会从错误中学习。如果您抛出一个清晰的错误,比如"位置不能为空",Claude可能会尝试使用正确的位置值再次调用该函数。

构建您的第一个工具函数

让我们创建一个获取当前日期和时间的函数。这个函数将接受一个日期格式参数,以便Claude可以请求不同格式的时间:

python
def get_current_datetime(date_format="%Y-%m-%d %H:%M:%S"):
    if not date_format:
        raise ValueError("date_format cannot be empty")
    return datetime.now().strftime(date_format)

这个函数使用Python的datetime模块来获取当前时间,并根据提供的格式字符串对其进行格式化。默认格式为我们提供年-月-日 时:分:秒。

您可以使用不同的格式对其进行测试:

python
# 默认格式:"2024-01-15 14:30:25"
get_current_datetime()

# 仅小时和分钟:"14:30"
get_current_datetime("%H:%M")

验证检查确保Claude不能为日期格式传递空字符串。虽然这个特定的错误不太可能发生,但它展示了验证输入并提供有用错误消息的模式,Claude可以从中学习。

后续步骤

创建函数只是第一步。接下来,您需要编写一个JSON模式(schema)来向Claude描述该函数,然后将其集成到您的聊天系统中。这种工具函数方法赋予Claude强大的能力,同时保持您的代码井然有序且易于维护。