你让它做一个客户账户的季度活动总结。你给了登录日期和工单数。模型回了一篇齐整总结,里面有”Q3 的续约日期”、“该公司的主联系人”、“营收影响约 4.2 万美元”。这些你都没给。听起来都对,全是编的。模型把”写一份季度总结”解读成”产出一份看上去完整的季度总结”,而按训练分布的”完整”=要有续约日期和联系人,于是它填上。
本文讲为什么模型默认填空,以及怎么让”我没有这条信息”成为一类合法的输出状态。
常见原因
1. Prompt 要”完整”、“全面”、“comprehensive”
这些词的意思就是”不留空”。模型按字面执行,把空填上。
如何判断:你的动词或形容词暗示完整性。
2. Schema 有必填字段但无缺失数据路径
如果 schema 是 { "renewal_date": string } 没有 null 选项,模型只能往里塞字符串,真假不重要。
如何判断:schema 没有显式 null / unknown 处理。
3. 没”未知怎么办”的规则
你没告诉模型不知道时该怎么办。默认行为:产出一个听着合理的东西。
如何判断:prompt 里没有 if unknown: 规则。
4. 常识填空
非常常见的模式(员工名、日期、地址),模型从训练时”这类记录应该长什么样”的先验里填。不是随机——是统计先验。
如何判断:编出来的细节合理且符合常见模式(续约填”Q3”、联系人填”张伟”)。
5. 输出格式鼓励完整
特别是表格:空格看着不对,模型就填。bullet 也是——半个 bullet 列表读起来不完整。
如何判断:格式是表、结构化列表或 schema 驱动。
动手前先确认
- 标出输出里你从未提供的细节。
- 保存被编造的输出做对比。
- 决定政策:缺失数据应该是
UNKNOWN、null、空,还是直接报错? - 检查 schema 里必填字段是否有缺失数据路径。
- 决定工作流真的需要这些数据,还是只标缺失就够了。
需要收集的信息
- 原始输入数据(你真给了什么)。
- 模型输出。
- 具体被编造的细节,标注出来。
- Schema(如果有)+ 必填字段。
- 模型 + temperature。
最短修复路径
Step 1:显式”未知规则”
缺失数据规则:
- 输入里没提供的必填项,输出 "UNKNOWN"。
- 不要推断。不要估算。
- 没有数字证据时不许用 "大约"、"差不多"、"估计"。
- 超过 3 个字段会是 UNKNOWN 时,停下来反问缺什么。
这一块单独就能解决 70% 的填空。
Step 2:Schema 显式 null 处理
Schema:
{
"renewal_date": "<ISO 日期 OR null>",
"primary_contact": "<姓名 OR null>",
"revenue_impact_usd": "<数字 OR null>",
"data_gaps": ["<被设 null 的字段名和原因>"]
}
null 选项 + data_gaps 数组让”缺失”成为一类合法输出。
Step 3:让模型先列假设再答
Step 1:列出产生完整答案需要的所有假设。编号。
Step 2:每条标注:输入是否支持(YES)还是会是编造(NO)。
Step 3:只用 YES 假设产生答案。NO 假设的字段写 UNKNOWN。
把隐式编造翻成显式可审计步骤。
Step 4:few-shot 示例里包含 UNKNOWN
让模型看见”我不知道”的合法形态:
示例 1:
输入:只有登录日期
输出:
{
"renewal_date": null,
"primary_contact": null,
"revenue_impact_usd": null,
"data_gaps": ["renewal_date(输入未提供)", "primary_contact(输入未提供)", "revenue_impact_usd(输入未提供)"]
}
现在为以下输入产出:<真实输入>
Step 5:禁用填充词
禁用短语(输入无证据时不许用):
- "大约"、"差不多"、"估计"、"可能"、"约"
- "按行业惯例"
- "典型"、"平均"、"标准"
这些短语是填空的语言指纹。禁用后模型要么给证据要么说 UNKNOWN。
Step 6:让模型自我核对
末尾加:
产出后,逐条列出非 UNKNOWN 的论断,并标注支持它的输入原文行。
找不到支持原文的论断必须改回 UNKNOWN。
核对步骤兜底。
怎么确认已经修好
- 抽 5 个输出:每个具体论断在输入里有支持原文行。
- 输入部分缺时
data_gaps非空。 - 该出现 “UNKNOWN” 的地方都有 UNKNOWN。
- 填充词出现次数 0。
- 同事审输出时找不到”等等这是哪来的”的细节。
如果还是没修好
- 严格事实性可能需要 temperature 0——降一下。
- 切到结构化输出模式(JSON schema、tool use)——schema 强制能挡掉编造字段。
- 加独立验证步骤:prompt 1 产出、prompt 2 逐条对照输入。
- 高风险工作用检索(RAG)让模型有显式来源;要求每条论断附引文。
预防建议
- 每个 prompt 默认规则:“不知道就输出 UNKNOWN。不要推断。”
- Schema 里标必填 vs 选填;必填缺失要显式 UNKNOWN。
- 事实性重要的 prompt 全面禁用填充词。
- 每月审一次生产输出里的”被编的具体”。
- 重复工作流把验证步骤嵌进流水线。
- “完整性”和”正确性”分开看——有时不完整的输出才是对的输出。
相关阅读
标签: #排查 #Prompt #Prompt 质量 #幻觉