加载中

为Claude构建工具需要解决几个不太明显的挑战。当您希望Claude为未来的日期设置提醒时,您很快会发现,尽管Claude知道当前日期,但它并不总是知道确切的时间,在复杂的日期运算方面也有困难,而且没有内置的方式来实际设置提醒。

解决方案是创建自定义工具来处理这些特定任务。对于一个提醒系统,您需要三个独立的工具:一个用于获取当前日期和时间,另一个用于向日期添加时长,第三个用于实际设置提醒。

为什么这具有挑战性

在处理基于时间的任务时,Claude存在一些局限性:

  • Claude可能知道当前日期,但不知道确切的时间
  • Claude在处理基于时间的加法运算时表现不佳,尤其是在展望未来许多天时
  • Claude不知道如何设置提醒

您需要的工具

为了解决这些问题,您将创建三个专用工具:

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

工具函数的工作原理

工具系统在您的服务器和Claude之间遵循特定的流程。您编写的函数可供Claude在需要额外信息时调用,Claude接收结果以帮助形成其响应。

这个过程涉及几个步骤:编写工具函数、创建JSON schema规范、使用该schema调用Claude、在Claude请求时运行工具,以及将结果返回给Claude。

编写工具函数

工具函数是普通的Python函数,当Claude判断需要额外信息来帮助用户时会被执行。以下是有效编写它们的方法:

最佳实践

  • 使用命名良好、描述清晰的参数(这在后面会变得很重要)
  • 验证输入,如果验证失败则抛出错误
  • 返回有意义的错误信息 - 如果Claude遇到错误,它会尝试第二次调用您的函数

创建您的第一个工具

让我们从最简单的工具开始——获取当前日期和时间。这个函数接受一个日期格式参数,并返回当前时间戳:

python
from datetime import datetime, timedelta

def get_current_datetime(date_format="%Y-%m-%d %H:%M:%S"):
    return datetime.now().strftime(date_format)

这个函数很简单,但遵循了关键原则:它有一个描述性的名称,接受一个命名良好且具有合理默认值的参数,并且准确返回它所承诺的内容。

JSON Schema规范

一旦您编写好函数,您需要编写一个JSON Schema来向Claude描述它。这个schema告诉Claude该函数需要哪些参数,并帮助它理解何时以及如何使用该工具。

JSON Schema有两个用途:它帮助Claude理解您的函数需要哪些参数,而且它不仅仅是一个LLM概念——JSON Schema在许多编程场景中都被广泛用于数据验证。有很多在线工具可以帮助您生成schema。

Schema最佳实践

  • 解释该工具的作用、何时使用以及它返回什么
  • 描述内容力求控制在3到4句话
  • 为参数提供详细的描述

编写好工具函数并定义好schema后,您就可以将其与Claude集成,并开始构建更复杂的AI交互,以处理诸如设置提醒之类的实际任务。