4.Tool schemas
此文档由 学习AI的1000天 翻译制作(抖音,B站,YouTube)
邮箱: szqshan@gmail.com | 微信: szqshan
网址: www.xueai.org
==================================================
编写完工具函数后,下一步是创建一个JSON模式,告诉Claude你的函数期望什么参数以及如何使用它。这个模式充当文档,Claude通过阅读它来理解何时以及如何调用你的工具。
理解JSON Schema
JSON Schema并非专门针对AI或工具调用 - 它是一个广泛使用的数据验证规范,已经存在多年。AI社区采用它是因为它是描述函数参数和验证数据的便捷方式。

完整的工具规范包含三个主要部分:
- name - 为你的工具提供一个清晰、描述性的名称(如"get_weather")
- description - 工具的功能、使用时机以及返回内容
- input_schema - 描述函数参数的实际JSON schema
编写有效的描述
你的工具描述对于帮助Claude理解何时使用你的函数至关重要。最佳实践包括:
- 用3-4句话解释工具的功能
- 描述Claude何时应该使用它
- 解释它返回什么类型的数据
- 为每个参数提供详细描述

生成Schema的简便方法
与其从零开始编写JSON schema,你可以使用Claude本身来生成它们。具体流程如下:
- 复制你的工具函数代码
- 前往Claude并要求它为工具调用编写JSON schema
- 将Anthropic关于工具使用的文档作为上下文包含进去
- 让Claude按照最佳实践生成格式正确的schema
提示词应该类似于:"为这个函数编写一个用于工具调用的有效JSON schema规范。请遵循附加文档中列出的最佳实践。"

在代码中实现Schema
一旦Claude生成了你的schema,将其复制到你的代码文件中。以下是一个推荐的命名模式:
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)
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": "一个指定返回日期时间格式的字符串。使用Python的strftime格式代码。",
"default": "%Y-%m-%d %H:%M:%S"
}
},
"required": []
}
}
使用function_name后跟function_name_schema的模式来保持你的模式组织有序,并便于与相应的函数匹配。
Adding Type Safety
为了更好的类型检查,从Anthropic库中导入并使用ToolParam类型:
from anthropic.types import ToolParam
get_current_datetime_schema = ToolParam({
"name": "get_current_datetime",
"description": "返回按指定格式格式化的当前日期和时间",
# ... 模式的其余部分
})
虽然这对功能来说并非严格必要,但这可以防止在使用 Claude API 时出现类型错误,并使您的代码更加健壮。
==================================================
此文档由 学习AI的1000天 翻译制作(抖音,B站,YouTube)
邮箱: szqshan@gmail.com | 微信: szqshan
网址: www.xueai.org