让 AI 交作业有两种形式:一张填好的表格,或一篇通顺的短文。DeepSeek 做数据接口时用前者,通义千问写汇报时用后者。结构化输出和自然语言输出的分野,本质是下游读者的分野:程序读结构,人读文章。选错的代价是下游返工。
结论先行:下游用途说了算
判断只看一个问题:输出接下来去哪。进表格、进数据库、被程序解析的,用结构化;直接给人阅读、用于沟通表达的,用自然语言。两者都不沾边的中间态,例如自己看完就归档的笔记,选哪种看个人习惯,但建议固定一种,归档才有规律可循。形态还影响提示写法:结构化输出要配字段说明和示例值,自然语言输出则要给风格和篇幅要求,两套写法不同。拿不定时问下游一句:你要什么格式?这一句话省掉的对齐成本,比写十版提示都值。
| 对照项 | 结构化输出 | 自然语言输出 |
|---|---|---|
| 下游读者 | 表格、数据库、程序 | 直接阅读的人 |
| 取值方式 | 按字段取值,不必理解语义 | 靠解析去猜,换个措辞就可能失败 |
| 擅长承载 | 名称、数量、状态、归属 | 语气、过渡、因果铺垫、分寸感 |
| 出错表现 | 字段缺失、类型不对,校验一跑就现形 | 事实和数字藏在通顺的句子里 |
差异一:机器可读性
结构化输出的字段名固定、层级明确,程序按字段取值即可,不需要理解语义。自然语言输出即使内容再规整,程序也得靠解析去猜,换个措辞就可能解析失败。工程场景里这是硬门槛:一次解析失败,整条流水线卡住。给程序的输出,格式要写到字段级,缺省时字段填什么,也要在提示里说死。字段设计也有原则:一个字段一个含义,别让字段里再藏结构,嵌套层级越浅,下游越好处理。字段名要稳定:今天叫 name 明天叫 title,下游代码跟着改,比不输出还麻烦。
差异二:承载的信息量
自然语言能携带结构装不下的东西:语气、过渡、因果铺垫、分寸感,这些在人读的场景里价值很高。结构化输出则擅长表达明确的事实项:名称、数量、状态、归属,一一对应,不含糊。让结构化承载细腻观点,字段会越拆越多,最后谁也维护不动;让自然语言承载数据,数字埋在段落里,查起来费劲。各干各的活,别互相替班。混合形态也存在:结论用结构化字段,理由用一段自然语言,两头的好处都拿到,是报告类任务的常见解。
差异三:出错的表现
结构化输出的错误显性:字段缺失、类型不对,校验程序一跑就现形,修起来方向明确。自然语言输出的错误隐性:事实写错了、数字对不上,藏在通顺的句子里,不读就发现不了。这也是自动化流程偏爱结构化的原因:错误能被机器抓住。人读的场景则要靠人工抽核,重点核对数字和结论部分。自然语言输出也可以半结构化:规定每段开头用固定短语,人工扫读的速度立刻提升。
输出格式和变量模板的配合,见动态提示和静态模板;格式改到头还不满意的出路,看提示调优和模型微调;现成格式模板的来源,参考开源提示库与自己攒;领域专用的输出规范,见通用提示和领域提示。
输出形态速查表
- 进程序用结构化,给人看用自然语言
- 格式写到字段级,缺省值说死
- 结构化的错误机器能抓,自然语言靠人工抽核
- 解释放说明字段,别混进值里
一句话收住:先看下游是谁,再定输出长什么样。
输出形态不是口味问题,是接口问题,接口对了下游才顺。下游要什么就给什么,别让读者替你做格式转换。
结构化输出快问快答三则
- JSON 和表格选哪个?:程序消费用 JSON,人要过目的汇总用表格,两者还能互相转换。
- 结构化输出能带解释吗?:能,加一个说明字段放理由,别把解释混进值里。
- 输出偶尔缺字段怎么办?:提示里写明每个字段必填、缺值时的固定填法,再配程序校验兜底,两头都设,缺字段基本绝迹。


