发现模型遗漏关键要求,不能只检查答案是否通顺,而要把原任务拆成可逐项核对的约束,确认每条要求在输出中都有明确落点。交叉约束还可能同时影响多个部分,需要额外检查它是否被一致执行。OpenAI 提醒使用者从可靠来源核实重要信息,并在依赖结果前审查生成的代码、输出和假设。
先把任务改写成约束清单
一句任务往往不只包含一个要求。可以先按以下类别拆开:
- 对象条件:输出面向谁,在什么场景使用。
- 必做内容:必须回答、保留或处理什么。
- 输出形式:长度、结构、语言和呈现方式。
- 禁止项与边界:不能增加什么,不能作出什么承诺。
- 条件关系:什么情况下必须满足另一项要求。
- 证据要求:哪些信息需要来源,哪些只能标为待确认。
- 隐含假设:模型是否自行补充了任务没有给出的条件。
每条约束都应再写出三个问题:它应该出现在哪一部分?看到什么才算完成?它还影响哪些其他部分?
例如,“面向新手、保留来源、不作结果承诺”并不只是三个并列要求:它们会同时限制解释方式、事实依据和结论措辞。只检查答案末尾有没有一句提醒,可能仍然遗漏了正文中的无依据断言。
用覆盖表定位遗漏
把原要求与模型输出逐项对应,比单纯让模型回答“我已经全部考虑”更可靠。
| 原约束 | 应检查的输出位置 | 常见问题 |
|---|---|---|
| 同时满足条件 A 和条件 B | 两个条件对应的段落或项目 | 只完成其中一个 |
| 如果出现 A,就必须执行 B | 涉及条件 A 的全部内容 | 把 B 错写成无条件要求 |
| 只能使用指定材料 | 事实、结论和引用 | 暗中加入外部信息或自行推断 |
| 每项重要信息都要有依据 | 每一项事实性表述 | 来源存在,但并未支持对应结论 |
| 不得作结果承诺 | 标题、结论和措辞 | 建议性表达被写成确定性保证 |
状态可以明确分成“已覆盖”“遗漏”“冲突”和“待核实”。没有对应内容的约束先记为遗漏;与另一条要求不一致的,记为冲突;无法从可靠材料确认的,记为待核实。
还可以直接要求模型先做结构化检查:
先列出你识别到的全部约束,标出相互影响的项目和你自行补充的假设;再把每项约束映射到答案中的具体位置。无法确认的内容请写“未查到”,不要补全。
这只是建立待核查清单,不代表模型的自检已经构成证明。关键内容仍要回到原任务和原始材料逐项复核。
交叉约束要检查三个方向
一是检查单个部分内部是否冲突。例如,任务同时要求内容全面和篇幅很短时,模型可能通过删除关键条件来满足篇幅,却没有说明取舍。
二是检查不同部分之间是否一致。某项限制如果适用于背景、主体和结论,就不能只在其中一个部分出现。
三是检查条件边界是否被误解。对于“如果 A,则 B”这类要求,应确认模型有没有在 A 未成立时也强行执行 B;对于“A 与 B 必须同时成立”,则要分别找到两项要求的对应证据。
如果模型没有说明某项内容来自任务原文,还是自行补充的假设,就先不要把后者当成任务条件。
最后按三层顺序核对
先做任务覆盖核对:每个“必须”“不得”“仅限”和条件关系是否都有对应内容。
再做输出一致性核对:不同部分是否遵守同一限制,标题、表格、示例和结论之间有没有冲突。
最后做外部证据核对:OpenAI 建议以批判性态度看待生成结果,从可靠来源核实重要信息;其数据分析说明也明确提醒,在依赖结果前审查生成的代码、输出和假设。对没有可靠依据的内容,保留“未查到”比自行补全更稳妥。
判断遗漏时,不要只看模型是否单独设置了一个小节。约束可能分散在多段内容中,但只要能够在输出中找到对应落实,就可以标为已覆盖;找不到明确落实,就应继续核查,而不是被流畅的措辞掩盖过去。