让 AI 生成结构化数据(JSON)是做自动化、写 Agent 时最常见的需求,也是翻车率最高的环节——要么字段名不统一,要么多一段解释文字,要么直接给你 Python dict 而不是 JSON。我踩了不少坑,总结出 3 个稳的办法。
第 1 招:把格式要求写进 Prompt 末尾,并给一个完整示例。 很多人只在 Prompt 里写一句「输出 JSON」,AI 就自由发挥了。正确做法是给一个目标样例:{"title": "标题", "tags": ["a","b"], "summary": "一句话"},并明确「只输出 JSON,不要任何解释、不要 markdown 代码块」。给样例比说一百遍「严格」都管用,因为模型本质是在模仿你给的格式。
第 2 招:用接口自带的「结构化输出」参数,而不是靠 Prompt 硬憋。 现在主流模型接口基本都支持 response_format / json_schema 这类参数,让模型在生成时就被约束在 schema 里——字段只多不少、类型不跑偏,几乎不会再出现缺字段或夹带文字的情况。这是最省事、最稳的一招,能上就上。
第 3 招:拿到结果先做字段校验,不合格就自动重试。 哪怕前两招都做了,偶发还是会出问题。所以我一定加一层兜底:解析失败就带着错误信息重试一次,第二次基本都能过。别让一个坏 JSON 直接流进下游,把整个流程搞挂。
三招组合下来,我的自动化里结构化输出成功率从七成提到了接近 100%。顺序建议:能上结构化参数就上(第2招),不行再靠样例约束(第1招),最后一定加校验重试兜底(第3招)。