让 AI 输出 JSON 总翻车,最常见的原因不是它“不懂 JSON”,而是你给的目标太宽、字段太松、容错又没补。模型可以学会按结构说话,但它不是天然可靠的序列化程序。你只要求“请返回 JSON”,却不限制字段、类型和缺失值处理,最后多一段解释、少一个引号、字段名忽然改写,都是高频结果。
常见翻车点 usually 出在这里
| 问题 | 表面现象 | 更可能的根源 |
|---|---|---|
| 多输出说明文字 | JSON 前后多了自然语言 | 你没明确只允许返回结构体 |
| 字段忽多忽少 | 有时缺键,有时换名称 | 字段定义和必填规则不清 |
| 类型不稳定 | 数字变字符串,数组变单值 | 没有约束类型和空值策略 |
| 内容看似合法但不能用 | 格式对了,值却脏 | 缺少业务校验和重试 |
更稳的做法不是一句提示词,而是一小套约束
- 先把字段收窄,只保留真正要用的键,不要一上来让模型生成十几层嵌套对象。
- 每个字段都写清类型、是否必填、缺失时填什么,比如空字符串、空数组还是 null。
- 明确告诉模型:只返回 JSON,不要解释,不要 markdown,不要代码块。
- 在接入侧做一次解析校验,失败就把报错信息喂回去,让它按错误重试,而不是直接信第一次结果。
别把“能输出 JSON”误当成“数据已经可靠”
结构正确,只说明壳子像 JSON;真正决定能不能上线的是字段有没有漏、值是不是脏、含义有没有跑偏。对自动化流程来说,提示词只是第一层,后面还要有 schema 校验、默认值策略和失败重试。想让 AI 变稳,关键不是催它“再仔细一点”,而是把格式约束和程序校验一起补上。