在使用AI工具时,为结构化数据提取编写详细的JSON模式可能是一个真正的痛点。有一个巧妙的变通方法,可以让您直接在提示中指定所需的数据结构,而不必创建复杂的模式。
灵活模式方法
您可以创建一个名为to_json的通用工具,该工具接受任何对象结构,而不是为每个数据提取任务编写详细的模式。关键是将输入模式设置为允许附加属性,然后在提示本身中指定您的确切要求。

这种方法消除了一个主要痛点——不断编写和管理大型JSON模式。结果不会像专用模式那样好,但您仍然可以以更少的设置工作获得高质量的JSON输出。
工作原理
这个过程很简单:
- 创建一个接受任何对象结构的单一灵活模式
- 在您的提示中,准确指定您想要的数据结构
- 告诉Claude使用您指定的结构调用
to_json工具 - 使用
tool_choice强制Claude使用您的工具
设置提示
在编写提示时,要非常明确地说明您想要的结构。以下是如何构建您的请求的示例:
Analyze the article below and extract key data. Then call the to_json tool.
<article_text>
{result["text"]}
</article_text>
When you call to_json, pass in the following structure:
{{
"title": str # title of the article,
"author": str # author of the article,
"topics": List[str] # List of topics mentioned in the article
}}进行API调用
API调用使用灵活模式并强制使用工具:
python
flexible_result = chat(messages, tools=[to_json_schema], tool_choice="to_json")轻松更改结构
当您需要修改数据结构时,真正的优势就变得明显了。您只需更新提示,而不必重写整个模式。想要添加一个表示主题数量的字段?只需添加一行:
python
"num_topics": int # Number of topics mentioned就是这样——无需修改模式。
何时使用每种方法
灵活模式方法非常适合:
- 快速原型设计和实验
- 简单的数据提取任务
- 需要频繁更改数据要求的情况
对于以下情况,请坚持使用专用模式:
- 关键的生产数据提取任务
- 复杂的嵌套数据结构
- 当您需要尽可能高的准确性时
灵活方法以10%的设置工作量为您提供约90%的质量,使其非常适合大多数需要结构化数据提取而无需模式管理开销的用例。