JSON 结构化输出单独使用已经很有用,但在复杂任务里,和信息抽取提示词组合起来效果更好。本文给出一套可以直接照做的组合流程。

两个技能各自负责什么

  • 结构化输出:结构化输出是让 AI 按照固定的字段和格式返回结果,例如 JSON、表格或固定标题的清单。
  • 信息抽取:信息抽取是让 AI 从非结构化的文字中找出特定信息,例如从合同中提取金额和期限,从聊天记录中提取待办事项,从简历中提取工作经历。

结构化输出有效是因为自由文本每次结构都不同,后续整理很费时;预先定义字段相当于给 AI 一张要填的表,结果更一致,也更容易检查遗漏;信息抽取有效则是因为 AI 擅长理解不同说法表达的同一含义,比如“下周三前”“30 号之前”都是截止时间,这让它比关键词搜索更适合从自然语言中提取信息。两者叠加,正好互补。

组合流程

  1. (结构化输出)先确定你需要哪些字段,以及每个字段的类型和含义。
  2. (结构化输出)说明缺失值怎么处理,例如找不到就填 null 或“未提及”
  3. (信息抽取)说明找不到时怎么处理,例如填“未提及”
  4. (信息抽取)先用一两份材料测试,检查是否有漏提或错提。
  5. (收尾)如果通过接口调用,优先使用平台提供的结构化输出或 JSON 模式等功能,并在程序里做格式校验。

组合模板

以编辑的场景为例,先用下面的模板完成结构化输出部分:

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

然后再按信息抽取的思路补一轮,例如:对日期类字段,要求统一格式并保留原文表述。

示例

以下为虚构示例:

示例输出(虚构): {“主题”:“活动报名系统上线”,“负责人”:“王某”,“截止日期”:“2026-11-05”,“风险点”:[“短信通道额度不足”],“需要决策的事项”:[“是否延长报名时间”]}

组合之后,信息抽取这一环的价值在于:抽取任务最怕的是“看起来合理的错误”。

组合使用时的注意事项

  • 结构化输出与少样本示例结合,给一个填好的样例,格式错误会更少。
  • 不说清提取标准。应对方法:给每个字段下定义,比如“行动事项必须有明确动作”
  • 两个技能叠加会让提示词变长,先确认单独使用时各自有效,再组合。

提示词技巧的共同点是把你脑子里的隐含要求说出来。AI 不知道你的读者是谁、标准是什么,写得越具体,它越少猜测。

什么时候不必组合

任务简单、一次就能得到满意结果时,单独用结构化输出就够了。组合的意义在于解决单一技能处理不好的问题,比如结果不稳定、需要多轮加工或要交给他人复用。先确认问题出在哪,再决定加哪一项技能。

相关阅读