刚接触 JSON 结构化输出的人,问得最多的往往是下面这几个问题。

Q1:结构化输出到底是什么?

结构化输出是让 AI 按照固定的字段和格式返回结果,例如 JSON、表格或固定标题的清单。这样结果可以直接粘贴进表格、导入系统,或被程序自动处理。

Q2:为什么它有效?和自由文本回答有什么不同?

自由文本每次结构都不同,后续整理很费时;预先定义字段相当于给 AI 一张要填的表,结果更一致,也更容易检查遗漏。自由文本可读性好但格式不稳定;结构化输出牺牲一点流畅度,换来可以直接复制、导入和自动处理的稳定结果。

Q3:哪些场景最值得用?

最典型的是两类:一是需要把结果导入表格或数据库;二是写程序调用 AI 接口,需要稳定解析结果。以运维工程师为例,处理“把发布流水线的构建时间缩短约三分之一”这类工作时就很适合尝试。

Q4:具体怎么开始?

建议按这三步起步:

  1. 先确定你需要哪些字段,以及每个字段的类型和含义。
  2. 把字段定义写进提示词,最好直接给出一个空的 JSON 或表头。
  3. 说明缺失值怎么处理,例如找不到就填 null 或“未提及”

熟练之后再养成一个习惯:如果通过接口调用,优先使用平台提供的结构化输出或 JSON 模式等功能,并在程序里做格式校验。

Q5:有没有现成的模板?

有,下面这个可以直接复制,按需替换方括号内容:

你是数据抽取程序,必须严格遵守以下 JSON Schema:
{"type":"object","required":["items"],
 "properties":{"items":{"type":"array","items":{"type":"object",
   "required":["name","category","amount"],
   "properties":{"name":{"type":"string"},
     "category":{"type":"string","enum":["办公","差旅","餐饮","其他"]},
     "amount":{"type":"number"}}}}}}
规则:金额统一为数字(不带单位);无法判断类别时用“其他”;输出前自检是否为合法 JSON。

Q6:表格和 JSON 怎么选?

给人看选表格,给程序处理选 JSON;两者都要时,可以先输出 JSON,再让 AI 转成表格。

Q7:AI 偶尔输出不合法的 JSON 怎么办?

在程序中加格式校验,失败时把错误信息连同原输出发回给 AI 修正,并保留人工兜底。

Q8:一次能处理多少条数据?

取决于工具的上下文长度和稳定性,建议每次几条到十几条,批量更大时用脚本分批调用。

举个例子

举个虚构的例子:一位 HR 收到 30 份简历,需要统计候选人的工作年限、技能和期望城市。逐份阅读要花一下午;定义好字段后让 AI 逐份输出 JSON,再合并成表格,HR 只需抽查几份核对,把时间用在面试判断上。

补充:最容易踩的坑和用好的诀窍

  • 要求 JSON 却允许附带解释。改进:写明“只输出 JSON”,程序解析时才不会因为多余文字报错。
  • 一次提取的字段过多。改进:字段太多时拆成两次,先提取核心字段,再补充次要字段。
  • 表格形式适合人看,JSON 适合程序处理,按用途选择。
  • 批量处理时保持字段顺序不变,方便后续合并。

延伸学习

结构化输出和少样本提示、调用大模型 API 关系密切。建议先把结构化输出在一个真实任务里用熟,再逐个尝试相关技能,而不是一次学很多。

相关阅读