首页/AI/提示词工程速查/输出格式约束写法

输出格式约束写法

明确字段名、字段顺序、空值表示、数字单位与日期格式,让输出能直接进入下游程序;格式要求缺失时模型会自行选择样式。

提示词工程速查AI更新于 2026-10-13

输出格式约束是什么

输出格式约束是把「结果长什么样」写进提示:字段名、类型、顺序、空值表示、单位、日期格式、是否允许额外字段、是否允许解释文字。不写这些约定时,模型会自行选择样式,第一次可能是 {"temp": 36.5},第二次变成 "温度 36.5 摄氏度",程序侧就得为每种写法都写一遍容错。格式要求写清后,输出可以直接进入下游程序,改动时也有明确的契约。

提示词约束与平台校验的分工

提示词负责表达期望,平台负责强制。支持结构化输出的接口(JSON Schema、函数调用参数)会在解码阶段限制可用取值,比纯提示更严格;只有提示词约束时,模型仍可能加解释、加围栏、漏字段。所以工程上的正确做法是两层一起用:提示里写清字段约定,程序侧用 schema 校验兜底,校验失败走重试或兜底路径。

必须写清的六件事

字段名与类型英文小写下划线;数字与字符串分开,不要混用
字段顺序下游按顺序解析时顺序即契约,明确写出
空值约定想清楚「没有此项」与「没抽到」是 null 还是省略
单位与时区温度摄氏度、金额币种、日期时区都要落到字段说明里
额外字段说明是否允许模型自行增添字段,通常写「不要新增字段」
输出边界是否包围栏、是否允许解释、是否允许多段输出

典型使用场景

  • 票据与工单抽取:字段直接入库,字段名与类型必须固定
  • 系统间数据对接:上游模型输出要当接口返回值用,需要稳定的结构
  • 批处理流水线:同一模板每天跑上千次,字段漂移会放大成批量失败
  • 需要人工复核的输出:固定字段让复核人按列核对,而不是读整段文字
  • 多语言场景:字段名用英文,值用目标语言,避免解析依赖中文键名

字段级约定示例

字段级约定示例
用 JSON 输出,字段固定为:
{
  "device": "设备名(字符串,必填)",
  "temp_c": 0,             # 摄氏度,保留 1 位小数,无值填 null
  "updated": "YYYY-MM-DD", # 日期,时区 UTC+8
  "tags": []                # 字符串数组,可为空数组,不要填 null
}
要求:仅输出 JSON 本体,不加解释、不加 markdown 代码围栏。

输出逐项检查

检查项正常写法常见异常
字段名device、temp_c 一律小写下划线Device、tempC 混用,跨批次不一致
数字36.5 不带单位、不带千分位1,234.50 元 让后续计算报错
布尔true / false 小写是/否、True、Y 混用
空值按约定填 null 或空数组用 无、N/A、- 等多种写法
外层包装仅 JSON 本体被代码围栏或解释句包住,解析前要剥离
支持结构化输出或函数调用的平台,优先用 Schema 声明字段而不是在提示里描述,参数的类型与必填由平台校验,错误率更低。
字段名与含义的对应关系要落在文档里:换人维护提示时,只看提示很难知道 temp_c 的口径是摄氏度还是华氏度。

易错点

  • 只说「输出 JSON」不给字段清单,字段名会逐次漂移,下游解析随机失败
  • 未写明「仅输出 JSON」时,模型常附带解释或代码围栏,解析前需要剥离反而更容易出错
  • 字段单位不写清(摄氏度还是华氏度、元还是万元),数据入库后错误很隐蔽
  • 用中文或有空格的键名定义字段,程序侧取值与建表都要额外处理
  • 只依赖提示词约束、不做 schema 校验,模型偶发加字段或漏字段时无法及时发现
  • 字段约定只写在提示里没同步给下游开发,字段改名后解析端未跟进,批量任务集体失败
  • 漏写「不要新增字段」这条,模型偶尔多返回一个解释字段,严格校验的解析器直接报错中断
  • 字段顺序依赖提示文字来固定而不是靠字段名取值,模型顺序一变解析就取到错列,且不报错

数据来源与参考

  • OpenAI 文档:Structured Outputs 与 JSON mode(platform.openai.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌