11.Tools for structured data
此文档由 学习AI的1000天 翻译制作(抖音,B站,YouTube)
邮箱: szqshan@gmail.com | 微信: szqshan
网址: www.xueai.org
==================================================
当您需要从Claude获取结构化数据时,有两种主要方法:使用消息预填充和停止序列的提示技术,或者使用工具的更稳健方法。虽然基于提示的方法设置更简单,但工具能够提供更可靠的输出,代价是增加了额外的复杂性。
用于结构化数据的工具
基于工具的方法通过创建JSON模式来工作,该模式定义了您想要提取的数据的确切结构。您不再需要希望Claude正确格式化其响应,而是本质上给Claude提供了一个函数来调用,该函数具有与您期望的输出结构匹配的特定参数。

以下是该过程的工作原理:
- 编写一个描述您要查找的数据结构的模式
- 使用tool_choice参数强制Claude使用工具
- 从工具使用响应中提取结构化数据
- 无需提供后续响应 - 一旦获得数据就完成了
例如,如果您想从报表中提取财务余额和关键见解,您的模式将分别将这些定义为整数和字符串数组。
控制工具使用
这种技术的关键部分是确保Claude实际调用你的工具。你可以使用tool_choice参数来控制这种行为:

- {"type": "auto"} - 模型决定是否需要使用工具(默认)
- {"type": "any"} - 模型必须使用工具,但可以选择使用哪一个
- {"type": "tool", "name": "TOOL_NAME"} - 模型必须使用指定的工具
对于结构化数据提取,你通常会希望使用第三个选项来保证Claude调用你的特定schema工具。
实现示例
假设你想要从一篇文章中提取标题、作者和关键见解。首先,你需要创建一个工具schema:
article_summary_schema = {
"name": "article_summary",
"description": "从文章中提取结构化数据",
"input_schema": {
"type": "object",
"properties": {
"title": {"type": "string"},
"author": {"type": "string"},
"key_insights": {
"type": "array",
"items": {"type": "string"}
}
}
}
}
然后你可以调用Claude并强制使用该工具:
response = chat(
messages,
tools=[article_summary_schema],
tool_choice={"type": "tool", "name": "article_summary"}
)
响应将包含一个工具使用块,其中结构化数据位于input字段中。你可以直接访问它:
structured_data = response.content[0].input
何时使用每种方法
当你需要快速简单的解决方案时,选择基于提示的结构化输出。当你需要保证可靠性并且能够处理额外的设置复杂性时,使用工具。这两种技术都很有价值,具体取决于你的特定用例和需求。
==================================================
此文档由 学习AI的1000天 翻译制作(抖音,B站,YouTube)
邮箱: szqshan@gmail.com | 微信: szqshan
网址: www.xueai.org