AI 输出一会JSON一会纯文本?一招锁死格式
😭 胖虎拍桌:"给我搞个自动报价系统!价格、型号、库存,JSON格式返回!错一个字段扣你工资!"
大雄写了个 prompt:"请用 JSON 返回"——AI 开心地回了一段散文夹杂半个 JSON,后端直接崩了。
误区 vs 真相:
❌ 小白以为:在 prompt 里写"请输出 JSON"就够了
✅ 技术真相:LLM 是逐 token 生成的,没有硬约束照样会跑偏
静香歪头:"能不能像填表一样,把格式框死,AI 只能往里填内容?"
胖虎:"明天上线!格式错一条罚 1000!"
🔧 哆啦A梦掏出【万能模具印章】:"不管你倒什么面糊进去,出来的形状永远一样!Structured Output 就是给 AI 的输出套模具——用 JSON Schema 定义字段名、类型、是否必填,模型被强制约束只能生成符合 schema 的 token。"
大白话:普通 prompt 是"请画个圆"(可能画成椭圆),Structured Output 是直接给你一个圆形模具,倒进去就是圆。
三步法:
🧩 定 Schema → 写 JSON Schema:字段名+类型+required
🔒 开约束 → API 参数设置 response_format: json_schema
✅ 零修补 → 输出 100% 通过 JSON 校验,下游直接用
小夫掏出手机炫耀:"我用 GPT 输出 JSON,准确率 90%!花了 ¥5000 调 prompt!"
哆啦A梦微笑:"Structured Output 准确率 100%,0 元 prompt 工程费。你那 10% 错误够后端修一周了。"
小夫手机掉地上。
实战场景:
✅ API 响应 → 100% 合法 JSON,前端无需 try-catch
✅ 数据提取 → 简历/发票/合同字段一个不漏
✅ Agent 调度 → 工具调用参数格式永远正确
✅ 批量标注 → 输出格式统一,直接进数据库
反转:大雄给 Schema 加了 50 个 required 字段,AI 老实填了 50 个——其中"女朋友名字"填了"null",胖虎看到暴怒:"你连 AI 都没女朋友!"
📌 课后总结:Structured Output = JSON Schema 模具 + 受限解码,让 LLM 输出从"大概率对"变成"100% 格式合规"。
💬 互动时间:你最头疼 AI 输出格式的哪个场景?
A. JSON 格式偶尔崩
B. 字段名大小写乱飘
C. 嵌套结构层级对不上
D. 输出一半 JSON 一半自然语言
夜雨聆风