规则与示例谁说话更响
提示里有两套信号:规则是抽象描述,示例是具体可模仿的样子。两者冲突时模型倾向模仿示例——规则写「金额保留 2 位小数」而示例写 12.3,输出大概率是 1 位小数。所以改规则之后必须检索并更新全部示例,把一致性当作评审清单里的固定检查项,而不是靠记性。
基本信息
| 冲突时的表现 | 模型倾向模仿示例,而非遵守抽象规则 |
|---|---|
| 检查时机 | 每次修改规则或字段表之后立即全量检索示例 |
| 检查范围 | 数值格式、空值写法、日期格式、引号与布尔写法 |
| 制度化 | 写入提示评审清单,避免只改一半 |
典型使用场景
- few-shot 示例与输出格式规则一起改:字段名一变,示例必须同步
- 结构化输出模板与真实示例对齐:键名、引号、null 与空数组写法
- 代码生成提示:风格规则(缩进、命名、异常处理)要与示例代码一致
- 术语表更新后回查示例里的旧译名,防止模型继续输出废弃叫法
- 提示评审:把一致性做成清单项,逐条打勾后再合并上线
不一致与修正对照
不一致与修正对照
规则:金额一律保留 2 位小数。
示例输出:{"amount": 12.3} # 与规则冲突,模型很可能照抄 1 位小数
修正后示例:{"amount": 12.30} # 与规则逐字对齐才叫一致
# 检查项 1:数值格式(小数位、千分位、百分号写法)
# 检查项 2:结构与空值(键名、引号、null 与空数组)
# 检查项 3:日期时间(2026-10-13 与 2026/10/13 不能混用)
# 检查项 4:布尔与枚举(true 与 True、已处理 与 处理完成)常见不一致点
| 位置 | 不一致表现 | 后果 |
|---|---|---|
| 数值 | 规则写 2 位小数,示例是 1 位 | 输出小数位随机,下游汇总口径混乱 |
| 空值 | 规则写 null,示例写 "" 或 N/A | 解析分支漏判,空值被当字符串入库 |
| 日期 | 规则写 YYYY-MM-DD,示例用斜杠 | 时间解析失败或按错误时区处理 |
| 语言 | 规则要求中文,示例含英文片段 | 输出语言随示例漂移,需二次翻译 |
| 键名 | 字段表列了 5 个键,示例只有 4 个 | 必填键缺失,校验层直接报错 |
示例之间互相不一致(有的 2 位小数、有的 1 位)时,模型会随机取一种;示例集自身要先做一遍一致性自检再进提示。
示例的信号强度常高于抽象规则:想让格式稳定,修示例通常比再加一句「必须」更有效。