AI 结构化输出怎么做?让模型稳定返回 JSON 的指南
为什么 AI 输出经常不是合法 JSON?讲清结构化输出、JSON Schema、字段校验与重试策略,让模型结果能可靠接入数据库和自动化流程。
编辑部 ·
让 AI 写一段文案可以接受自由发挥;让它驱动数据库、表单或自动化流程时,“差不多像 JSON”远远不够。字段缺失、类型错误、多写一句解释,都可能让后续程序失败。
结构化输出的目标是把模型的自然语言能力装进明确的数据契约:它必须返回哪些字段、字段是什么类型、可取哪些值。
从“请返回 JSON”到 Schema
只在提示词里说“返回 JSON”很脆弱。更可靠的方式是定义 Schema,例如:
{
"priority": "high | medium | low",
"summary": "string",
"needs_human_review": "boolean"
}
支持结构化输出的 API 可以根据 Schema 约束响应;即使接口不支持,也应在代码侧验证解析结果,而非直接相信模型。
一个稳健的处理流程
- 给模型清楚的字段定义和示例。
- 解析后用 Schema 校验必填项、类型和枚举值。
- 校验失败时,将具体错误反馈给模型进行有限次数修复。
- 仍失败则进入人工队列或安全降级,不要猜字段含义。
关键动作还要有业务规则:模型说 priority: high 不代表它就能自动退款或发邮件。结构化输出解决格式问题,不替代权限与审批。
和 Function Calling 的关系
Function Calling让模型选择工具并填写参数;结构化输出让它按指定结构返回数据。两者本质上都在把自然语言转换成程序可验证的数据,只是一个偏“调用动作”,一个偏“返回结果”。
常见误区
- 只用正则从自然语言里硬抠 JSON
- 允许字段随意增删,后端却假定格式永远不变
- 把模型生成的字符串直接拼进 SQL 或命令
- 忽略空值、未知类别和版本升级后的兼容性
总结
结构化输出是让 AI 从聊天框走进业务系统的基础。用 Schema 定义契约、在程序侧验证、对失败有限重试、对高风险动作加规则和人工确认,才能让模型输出既灵活又可靠。