提示工程提示工程JSON结构化输出速答 · 约 5 分钟更新 2026-09-19

怎么让大模型稳定输出 JSON?JSON Mode 和 Schema 约束怎么做

一句话结论

三层手段约束递增:提示词给 Schema 和示例,JSON Mode 保证语法合法,Schema 约束强制结构正确;内容对不对仍要自己校验重试。

先这样答

稳定输出 JSON 有三层手段,约束强度递增。第一层是提示词:在提示里给出目标 JSON 结构和示例,让模型照着写,简单但没有任何保证。第二层是 JSON Mode:接口层面强制输出是合法 JSON,语法一定对,但字段和类型可能不符合要求。第三层是 Schema 约束:把 JSON Schema 交给接口,解码时只允许生成符合结构的 Token,字段、类型、必填项都成了硬约束。

即使用了硬约束,校验也不能省。结构合法不等于内容正确:数字可能越界,枚举外的取值、字段之间的逻辑矛盾都可能出现。工程做法是解析后跑一遍业务校验,失败就把错误信息拼回提示里重试,重试仍失败再走降级路径。Schema 本身也要克制:层级浅、字段少、能用枚举表达的就用枚举,结构越复杂,填充质量越差。

总结一句:结构靠解码约束,语义靠校验和重试,两层各管一段,少一层都会在线上出问题。

面试官会怎么追问

  • 「JSON Mode 和 Schema 约束差在哪?」 JSON Mode 只保证语法合法,字段缺失、类型错误都不管;Schema 约束在解码层按结构限定每个位置的取值,字段结构是强制的。前者防语法错,后者连结构一起锁死。
  • 「Schema 里该写什么?」 字段类型、是否必填、枚举取值,加上每个字段的含义说明。说明文字直接影响模型的填充质量,写得越具体取值越稳,这部分和提示词工程是同一件事。
  • 「解析失败怎么兜底?」 分两级:先做修复重试,把解析错误贴回去让模型改;重试仍失败就走降级路径,比如转人工或记失败单。永远不要假设一定解析得出来。

回答的坑

  • 把「合法 JSON」当成「符合业务结构」。JSON Mode 只锁语法,拿它当最终保障会在线上翻车。
  • Schema 设计得过深过散。嵌套层级多、可选字段泛滥,模型填充质量明显下降,能用扁平结构和枚举就别绕弯。
—— 本题完 ——