掌握了 JSON 结构化输出的基础用法之后,下一步是让效果稳定可复现。理解原理是关键:自由文本每次结构都不同,后续整理很费时;预先定义字段相当于给 AI 一张要填的表,结果更一致,也更容易检查遗漏。

设计字段时要从“下一步怎么用”倒推。如果结果要做数据透视,字段值就要标准化;如果要人工复核,就需要保留原文依据;如果要导入系统,字段名最好与系统字段一致。先想清楚用途,结构化输出才真正省事。

技巧 1:给枚举字段列出可选值

给枚举字段列出可选值,能显著减少同义词混用,比如“高/中/低”这能帮你更快定位问题出在哪个环节。

技巧 2:在 JSON 里加一个“原文依据”字段

在 JSON 里加一个“原文依据”字段,方便人工核对每个值从哪来。做到这一点,结果的稳定性会明显提高。

技巧 3:表格形式适合人看

表格形式适合人看,JSON 适合程序处理,按用途选择。建议先在一个小任务上试用,确认效果后再推广。

技巧 4:批量处理时保持字段顺序不变

批量处理时保持字段顺序不变,方便后续合并。做到这一点,结果的稳定性会明显提高。

技巧 5:结构化输出与少样本示例结合

结构化输出与少样本示例结合,给一个填好的样例,格式错误会更少。适合在任务较复杂或要反复使用时采用。

一个进阶场景

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

中文字段名可以吗? 人看的表格可以用中文;要给程序处理时,建议用英文字段名,减少编码和对接问题。

一份进阶写法

下面的模板综合了以上技巧,可以按行政等不同场景替换内容:

你是数据抽取程序,必须严格遵守以下 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。

进阶使用时仍要避免

  • ✗ 拿到 JSON 不做校验就入库。 ✓ 用程序校验格式和必填字段,抽查内容是否与原文一致。
  • ✗ 一次提取的字段过多。 ✓ 字段太多时拆成两次,先提取核心字段,再补充次要字段。

可以组合的技能

  • 信息抽取:信息抽取是让 AI 从非结构化的文字中找出特定信息,例如从合同中提取金额和期限,从聊天记录中提取待办事项,从简历中提取工作经历。
  • 少样本提示:少样本提示是在提示词里放两三个“输入→理想输出”的示例,让 AI 照着示例的格式、长度和风格处理新的输入。

衡量是否真的进步

一个简单的标准:同类任务需要的修改轮次是否减少,结果是否更稳定。如果答案是肯定的,说明你的结构化输出已经进阶;如果没有,回到基础步骤检查哪里写得不够具体。

相关阅读