← 返回题目列表

为什么只写负向指令效果通常不好?

中等 第 21 / 25 题 更新于 2026/09/18
提示工程负向指令输出契约指令遵循

简化版

“不要啰嗦、不要编造”只描述禁区,没有告诉模型遇到信息不足时该输出什么,也难以覆盖禁区的所有表达。更稳的方法是给正向目标、可观察约束、优先级和替代行为,例如“仅依据证据;缺失时返回 insufficient_evidence;答案最多三点并附来源”。负向项只保留少量真正边界,并用程序校验能确定的格式。

详细版

负向指令的问题包括语义含糊、开放集合难枚举、多个“不要”互相挤占注意力,以及没有提供合法路径。模型也可能复述被禁止内容,或为避免犯错过度拒答。把每条禁令转换为“触发条件—期望动作—输出形式”,再提供一个正例和一个边界例,通常更可执行。

比如把“不要猜”改为:答案必须由给定证据支持;若证据没有所问字段,输出固定状态并列出缺少的信息。评测同时看违规率、任务成功和过拒率。安全、权限、schema 等确定性约束应由策略或约束解码强制,不能只靠 Prompt 的否定句。

模糊禁令:不要编造
可执行契约:有证据 -> 回答+引用;无证据 -> insufficient_evidence+缺口

完整版教学

一、禁令只画边界,不给路线

模型需要生成下一个 Token。告诉它不能走哪些路,并没有给出应该走的路;禁区又通常无限,例如“不要不专业”无法枚举所有不专业表达。正向目标缩小合法输出空间,选择更明确。

用户问缺少证据的问题时,“不要猜”可能导致空白、道歉、拒绝或仍然猜测。若定义固定缺证据状态,模型和调用方都知道下一步。可操作性来自替代行为,而不是否定语气的强度。

二、把负向要求改成可观察约束

“不要太长”改成“最多 3 个要点、每点 1 句”;“不要改变原意”改成“数字、实体和否定词必须原样保留”;“不要输出 Markdown”改成 JSON Schema。可观察约束能自动测试,也减少评审分歧。

负向写法正向契约
不要啰嗦先结论,最多 120 字
不要编造仅用 source_id 支持的事实
不要泄露隐私对指定字段输出 [REDACTED]
不要漏字段按 schema 输出全部 required
不要回答越权内容返回 permission_denied

记忆钩子:把“别做错”翻译成“什么条件下做什么正确动作”,Prompt 才从警告变成协议。

三、为什么提到禁词可能反而激活它

Prompt 中列出大量禁止示例,会把这些 Token 和概念放入上下文。模型未必照做,但在复述、转换或边界理解时可能生成它们。尤其“不要输出 X”同时又完整提供 X,给了模型一个强表面模式。

这不是简单的心理学“不要想白熊”,而是上下文条件分布问题。敏感秘密根本不应进入 Prompt;禁用词可由输出过滤器检查。必须给反例时,用占位符和错因说明,并控制数量。

四、负向列表为何容易冲突

“不要太短”“不要太长”“不要省略细节”“不要超过 100 字”可能无法同时满足。规则越多,隐式优先级越模糊。应先合并为一个输出契约,并声明冲突时准确性、安全、完整性和风格的顺序。

可把规则转换成 decision table:证据充分且有权限时回答;证据不足时请求补充;无权限时拒绝;高风险时转人工。状态互斥后,比十几条散落的禁止项更稳定,也便于业务代码执行。

五、安全边界为什么不能只做正向改写

不是所有负向规则都应删除。法律、隐私和安全禁区需要明确表达,但不能止于 Prompt。应用层先不提供超权限数据,工具调用检查 ACL,输出过滤敏感模式,高风险动作需确认。Prompt 负责解释边界和生成安全替代。

模型建议 -> policy(action, user, resource) -> allow / deny / confirm

即使模型忽略“禁止外发”,策略层仍拒绝调用。负向指令是一道软防线,不是安全控制的最终执行者。

六、替代行为怎样减少过度拒答

模型面对严格禁令可能为保险拒绝正常请求。给出允许范围和安全完成方式,例如“可以解释公开的安全原理,但不要提供可直接利用的目标化步骤”,能帮助区分教育内容与恶意执行。边界示例应同时包含允许和拒绝,避免只训练拒绝。

对缺信息任务,替代可以是提出一个澄清问题、返回部分有证据字段或调用工具。选择要与产品流程一致。固定错误码让上层决定后续,不要让模型自由编写十种道歉文案。

七、如何做对照实验

建立三版:仅负向、正向契约、正向契约加少量边界禁令。测试正常、边界和攻击样本,测任务成功、违规、过拒、格式与长度。多次采样评估稳定性,不要只挑一次好结果。

假设仅负向版违规 4%、过拒 20%,正向版违规 6%、过拒 5%,组合版违规 2%、过拒 7%。组合更均衡,但安全仍需执行层门禁。分析每种失败,而不是只用加权总分遮盖严重违规。

八、常见误区与追问

  • 误区:负向词越多,模型越安全。 列表会冲突、激活敏感模式,也无法强制工具权限。
  • 误区:所有“不要”都应该删除。 关键边界可保留,但要配正向路径和系统控制。
  • 误区:强调“绝对禁止”能保证遵循。 强调词不提供可验证执行机制。
  • 追问:如何改写“不要幻觉”? 限定证据源,要求引用,并定义证据不足的结构化返回。
  • 追问:反例是否有用? 有,但应少量、脱敏、说明错因,并与正确替代配对。
  • 追问:怎么测过拒? 构造明确允许的邻近边界请求,统计不必要拒绝和任务完成率。

九、加强记忆

负向指令可记成“禁区不等于路线”。把每条“不要”改写为触发条件、正确动作与可解析输出,只保留必要边界,并同时测违规与过拒。权限、敏感数据和格式能由代码控制的就下沉;Prompt 的最佳角色是告诉模型怎样安全完成,而不是不断提高警告音量。