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

上图展示了我们将要实现的三个基本工具:获取当前日期/时间、为日期添加时长,以及设置提醒。让我们从第一个开始。
什么是工具函数?
工具函数是一个普通的Python函数,当Claude判断需要额外信息来完成任务时,它会自动被执行。例如,如果用户问"现在几点了?",Claude会调用您的日期/时间工具来获取当前时间。

这是一个天气工具函数的示例。请注意它是如何验证输入并提供清晰的错误消息的——这些都是我们将遵循的关键最佳实践。
工具函数的最佳实践
编写工具函数时,请牢记以下准则:
- 使用描述性名称: 您的函数名称和参数名称都应清楚地表明其用途
- 验证输入: 始终检查所需参数是否存在且有效
- 提供有意义的错误消息: 如果Claude遇到错误,它可能会尝试使用修正后的参数再次调用您的函数
错误处理尤为重要,因为Claude可以从失败中学习。如果您返回一个清晰的错误消息,比如"位置不能为空",Claude可能会使用正确的位置值重试该函数调用。
构建您的第一个工具函数
让我们创建一个获取当前日期和时间的函数。该函数将接受一个格式字符串来控制日期的显示方式:
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)默认的格式字符串"%Y-%m-%d %H:%M:%S"会产生类似"2024-03-15 14:30:45"的输出。您可以通过传递不同的格式字符串来自定义此输出:
# 仅获取时间
get_current_datetime("%H:%M") # Returns "14:30"
# 获取不同的日期格式
get_current_datetime("%B %d, %Y") # Returns "March 15, 2024"输入验证
验证检查if not date_format:确保我们不会尝试用空字符串来格式化日期。虽然Claude很少犯这种错误,但提供清晰的错误消息有助于AI理解出了什么问题以及如何修复它。
当Claude遇到错误时,它会看到确切的错误消息。这种反馈循环使Claude能够调整其方法,并使用修正后的参数再次尝试。
后续步骤
这个工具函数只是第一步。接下来,您需要创建一个JSON模式(schema)来向Claude描述这个函数,然后将其集成到您的聊天系统中。函数本身是简单直接的Python代码——复杂之处在于如何正确地将其连接到Claude的工具调用系统。