结构化输出是强制语言模型以预定义格式(如JSON)返回数据的一种方法。 它不同于自由形式文本,在于它强制严格的字段名称、数据类型和架构,下游工具可以毫不费力地处理。
以下是JSON格式的结构化输出的简单示例:
{
"task": "summarize",
"title": "Quick AI Guide",
"summary": "This article explains structured output and JSON mode.",
"key_points": ["JSON enforces format", "Reduces parsing errors", "Enables automation"],
"audience_level": "intermediate",
"confidence": 0.95
}什么是结构化输出
📍 In One Sentence
结构化输出是指要求模型遵循固定的架构——列表、表格,或带有字段名与类型的 JSON——使下游工具无需人工清洗即可处理结果。
💬 In Plain Terms
自由文本适合人读,却让程序很难处理。有了架构,回答就变成数据库可以直接接收的东西,而不是每次都要靠字符串匹配去拆解的一段文字。
结构化输出意味着要求模型遵循固定的架构,例如列表、表格或JSON。 而不是自由形式的段落,您定义字段、类型和允许的值。
结构化输出可以采用多种形式:
- 具有固定项数的项目符号列表。
- 具有特定列的Markdown表格。
- 简单属性的键值对。
- 具有预定义键的完整JSON对象或数组。
目标始终是相同的:将模糊的描述转换为可预测的形式。
什么是JSON模式
JSON模式是结构化输出的更严格变体,其中模型被指示或配置为仅返回有效的JSON。 在JSON模式中,模型输出的所有内容都应该可以解析为JSON而无需额外的清理。
典型的JSON架构可能如下所示:
{
"title": "string",
"summary": "string",
"tags": ["string"],
"priority": "low | medium | high"
}您在提示词中反映该架构,然后要求模型填充它。某些平台也提供强制仅JSON响应的特殊设置或API。
为什么结构化输出和JSON模式很重要
结构化输出和JSON模式很重要,因为它们使您能够将语言模型转变为更大系统的组件,而不仅仅是聊天助手。 当输出是可预测的时,您可以:
- 直接将结果提供给数据库、CRM或分析工具。
- 基于模型输出字段(优先级、状态、信心)触发自动化。
- 构建显示卡片、表格或仪表板中模型结果的用户界面。
它们还让提示词更容易调试。如果结构出错,你就知道问题出在提示词或架构上,而不是某个含糊的"质量"维度。
JSON模式与函数调用与架构提示词
存在三种从LLM获取结构化输出的方法。每种都有不同的优缺点。
- JSON模式 : 模型仅输出有效的JSON。最佳用途:数据提取、分类、摘要。
- 函数调用 : 模型选择要调用的函数并以JSON提供参数。最佳用途:API集成、工具使用、代理工作流。
- 架构提示词 : 显式指令+要求模型遵循架构的示例。最佳用途:灵活性、开源模型、自定义格式。
示例:自由文本与结构化JSON
当您比较免费文本提示词和结构化JSON提示词完成相同任务时,差异变得明显。 在这里,我们对客户电子邮件进行分类和汇总。
错误的提示词
"阅读此客户电子邮件并总结他们想要什么。"
正确的提示词 - JSON模式
"您是一名客户支持助理。"
"正确"版本定义架构、有效值和仅JSON要求。
结构化输出和JSON模式的最佳做法
要获得可靠的结构化输出,您在提示词中需要明确、一致和严格。 当抽取的数据不能离开自有基础设施时,同样的 JSON 模式模式也可以直接对接本地向量存储——要查看符合 GDPR 的部署模板,请参阅面向企业数据的本地 RAG。
- 显示您期望的确切架构。
- 声明仅应返回JSON或结构。
- 使用简短、明确的键名称。
- 当任务复杂或敏感时添加有效输出的示例。
- 对于嵌套结构,逐步构建并使用真实输入进行测试。
如果仍然出现格式问题,可以加一条简单的指令,例如"如果不确定,请把该字段留为空字符串,不要猜测。"结构化输出与RAG(检索增强生成)结合使用效果最好,可用于核查抽取出的数据。当抽取的数据必须留在自有基础设施内时,同样的JSON模式可以直接对接本地部署的向量存储——符合GDPR的部署模板请参阅面向企业数据的本地RAG。
模型比较:按提供商的JSON合规性
不同的模型对原生JSON模式支持的级别不同。 截至2026年4月,以下是主要提供商的排名:
模型 | 原生JSON模式 | 仅提示词合规 | 备注 |
|---|---|---|---|
| OpenAI GPT-5.6 | 是(强制) | 不需要 | JSON模式的行业标准。 |
| Anthropic Claude Sonnet 5 | 是(强制) | 不需要 | JSON合规性优秀。 |
| Google Gemini 2.0 | 是(强制) | 不需要 | 原生JSON支持。 |
| Meta Llama 3.3(70B) | 部分 | 强烈推荐 | 开源。 |
| Mistral Large | 部分 | 推荐 | JSON行为良好。 |
| 旧GPT-3.5、Claude 2 | 否 | 必需 | 需要强大的工程。 |
| 小型开源模型(<13B) | 否 | 示例需要 | 需要详细的架构。 |
受监管环境中的结构化输出
结构化输出在受监管行业中尤其有价值,因为它能强制实现一致的数据抽取、审计轨迹和合规文档。 不同地区的要求各不相同:
- 欧盟(GDPR、AI Act):结构化输出支持系统化的数据分类和被遗忘权追踪。JSON模式让你可以标记哪些字段包含个人数据,便于开展DPIA(数据保护影响评估)和合规审计。
- 日本(METI人工智能指南、APPI):带有明确架构定义的结构化抽取满足透明度和问责要求。日本的合规通常要求记录数据如何被处理——结构化输出提供了清晰的审计轨迹。
- 中国(网信办规定、数据安全法):结构化输出有助于内容审核和数据驻留日志记录。JSON模式可对敏感内容(金融数据、个人信息)进行系统化分类,以符合网信办的相关标准。
常见错误
在实施结构化输出和JSON模式时,请避免以下常见错误:
- 架构含糊:只说"抽取要点"而不定义架构,会导致输出不一致。务必指定确切的字段名、类型和约束。
- 缺少示例:只给架构描述而不给示例,会带来20–30%的失败率。务必展示1–3个有效输出的示例。
- 不校验输出:假定模型总会返回有效JSON,会在生产环境引发解析错误。务必校验,并妥善处理解析失败。
- 不处理边界情况:可能缺失、含糊或超出范围的字段,必须定义好回退行为(null、空字符串或默认值)。
- 只用简单输入测试:真实数据是杂乱的。请用边界情况测试你的架构:不完整的邮件、特殊字符、多语言混排、超长输入。
何时使用JSON模式而非其他方案
当你需要严格的架构约束和确定性输出时,选择JSON模式。当创造性和开放式推理更重要时,请避免使用它。
- ✓ 使用JSON模式:需要严格架构、自动化流水线、API集成、数据抽取、分类任务、确定性输出、需要校验的生产系统。
- ✗ 避免JSON模式:创意写作、开放式推理、头脑风暴、议论文、代码生成(function calling更合适)、哲学问题、叙事内容。
- 替代方案:function calling —— 当你需要工具集成和智能体式工作流时使用(由模型选择调用哪个函数)。
- 替代方案:架构提示词 —— 当你需要灵活性、使用开源模型,或不需要API级别的保证时使用。
什么时候应该使用结构化输出
结构化输出主要在三种场景中大放异彩。当你需要确定性的、机器可读的结果时就用它:
- API与集成:把LLM的输出直接接入下游系统(数据库、CRM、仪表板)。结构化输出可避免解析错误和人工清洗。示例:从邮件中抽取客户数据并写入CRM。
- 自动化与工作流:根据模型输出的字段(优先级、紧急程度、类别)触发动作。JSON模式确保字段抽取可靠,可供条件逻辑使用。示例:按紧急程度分派支持工单。
- 数据流水线:大规模处理批量数据(文档、邮件、日志)。一致的架构使批处理、校验和错误处理成为可能。示例:从1万篇研究论文中抽取元数据,存入可检索的数据库。
如何使用结构化输出和JSON模式
- 1对于数据抽取和机器可读输出,请使用JSON模式(OpenAI GPT-5.6、Anthropic Claude、Google Gemini等均已提供)。 这可确保模型返回有效的JSON,而不是散文。示例:把产品信息抽取为JSON,键为name、price、description、rating。
- 2明确定义你的JSON架构,包括字段名、数据类型和约束。 示例:{ "name": string, "price": number (≥ 0), "in_stock": boolean, "tags": array of strings }。
- 3提供你想要的确切JSON结构的示例。 示例:{ "issue": "memory leak", "severity": "critical", "suggested_fix": "...", "code_snippet": "..." }。示例比架构描述更有效。
- 4对于嵌套结构(数组中的对象),请明确说明层级关系。 提供一个完整的JSON示例,包含嵌套数组。参见下方示例。
- 5在下游系统中使用之前,请先校验JSON输出。 解析返回的JSON并检查:(1)JSON语法是否有效;(2)所有必填字段是否齐全;(3)数据类型是否符合预期。妥善处理解析错误。
下面是一个包含嵌套数组的完整JSON示例,展示了正确的层级结构:
{
"articles": [
{
"title": "string",
"author": "string",
"citations": [
{
"title": "string",
"year": "number"
}
]
}
]
}相关阅读
常见问题
结构化输出和JSON模式之间有什么区别?
结构化输出是更广泛的类别。JSON模式是更严格的变体。
所有LLM都支持JSON模式吗?
否。OpenAI GPT-5.6、Anthropic Claude Sonnet 5和Google Gemini支持。
在没有原生JSON模式的情况下如何强制仅JSON响应?
使用提示词工程:明确声明"仅输出有效JSON"。
如果模型返回无效JSON会发生什么?
在您的一方验证。失败时重试或回到手动方法。
我可以将结构化输出用于复杂文档吗?
是的。将复杂任务分解成步骤。
我如何处理缺失或模糊的数据?
在架构中定义后备行为。
JSON模式是否受监管合规性影响?
JSON本身是中立的。但结构化输出有益于合规性。
我如何测试JSON模式提示词?
使用不同的输入进行测试。在部署前达到95%的成功率。
我可以跨不同模型重复使用架构吗?
可以,但要谨慎。定义、测试和记录差异。
JSON模式的性能成本是什么?
最少。原生JSON模式影响可以忽略不计。
来源
- OpenAI JSON模式文档 — 官方指南。
- Anthropic指南 — 文档。
- Google Gemini API — 原生JSON支持。
- JSON架构规范 — 标准规范。
