加载中

编写完工具函数后,下一步是创建一个 JSON 模式(schema),告诉 Claude 您的函数期望什么参数以及如何使用它。这个模式充当文档,供 Claude 阅读以理解何时以及如何调用您的工具。

理解 JSON Schema

JSON Schema 并非专门用于 AI 或工具调用——它是一种广泛使用的数据验证规范,已经存在多年。AI 社区采用它是因为它是描述函数参数和验证数据的便捷方式。

完整的工具规范有三个主要部分:

  • name - 函数名称(例如 "get_weather")
  • description - 该工具的功能以及何时使用它
  • input_schema - 描述参数的实际 JSON 模式

编写有效的描述

description 字段对于帮助 Claude 理解您的工具至关重要。请遵循以下最佳实践:

  • 解释该工具的功能、何时使用它以及它返回什么
  • 力求 3-4 句话
  • 同样为每个参数提供详细描述

input_schema 部分使用标准 JSON Schema 格式描述您函数的参数,包括类型信息以及每个参数的详细描述。

简便方法:让 Claude 编写您的模式

您可以使用 Claude 本身来生成 JSON 模式,而不必从头编写。以下是具体流程:

  1. 复制您的工具函数
  2. 前往 Claude 并要求它为工具调用编写一个 JSON 模式
  3. 将 Anthropic 关于工具使用的文档作为上下文包含进去
  4. 让 Claude 按照最佳实践生成一个格式正确的模式

提示应该类似于:"为这个函数编写一个用于工具调用的有效 JSON 模式规范。遵循所附文档中列出的最佳实践。"

在代码中实现该模式

一旦 Claude 生成了您的模式,将其复制到您的代码文件中。使用一致的命名模式,例如 function_name_schema,以保持条理清晰:

python
get_current_datetime_schema = {
    "name": "get_current_datetime",
    "description": "Returns the current date and time formatted according to the specified format",
    "input_schema": {
        "type": "object",
        "properties": {
            "date_format": {
                "type": "string",
                "description": "A string specifying the format of the returned datetime. Uses Python's strftime format codes.",
                "default": "%Y-%m-%d %H:%M:%S"
            }
        },
        "required": []
    }
}

添加类型安全

为了更好的类型检查,从 Anthropic 库中导入并使用 ToolParam 类型:

python
from anthropic.types import ToolParam

get_current_datetime_schema = ToolParam({
    # 此处填写您的 schema 字典
})

这对功能而言并非严格必要,但它可以防止您稍后在代码中使用该模式时出现类型错误。

精心编写的工具函数与详细的 JSON 模式相结合,为 Claude 提供了在对话中理解和正确使用您的工具所需的一切。