负向约束写得太虚:4 个原因 + 对症修复

"不要太通用"只说了别做什么,没说要做什么——模型会换近义词绕开禁词、行为照旧。本文讲为什么纯负向约束必败,以及怎么把每条不要翻成可执行的正向引导。

你在 prompt 里加了”不要太通用”,因为上次输出很通用。新输出确实没出现”通用”这个字,改用了”普适”。它依然通用。你又加”不要写大段文字”——模型给了 bullet,把大段文字拆成了 8 行。光靠负向约束不管用,因为它只说不做什么,没说要做什么。模型回避字面短语,用别的措辞重现底层行为。修法不是加更多”不要”,是给每条”不要”配一个具体的”要”。

本文讲为什么”只负向”约束必败,以及怎么把它们翻成模型能执行的正向引导。

常见原因

1. 负向写成价值判断而不是行为

“不要通用”是价值判断。“通用”在评审眼里,不对应任何具体输出特征。模型没法对照检查。

如何判断:你的负向是形容词或价值词,不是具体 token/结构/模式。

2. 没正向目标

只禁止时模型没方向可去。它选下一个最可能的产物,常常就是下一个最通用的。

如何判断:你的 prompt 有”不要 X”但没配”要 Y”。

3. 模型换说法绕开

禁词它就用近义词。禁模式它用稍微变形。表面禁不挡行为,会被钻空子。

如何判断:禁词没了,底层行为没变。

4. 禁词单太长

20 个禁词稀释注意力。模型当背景噪音处理。短而具体的清单会被遵守;长清单不会。

如何判断:你的”不要”清单 15+ 项。

5. 禁令和其他 prompt 内容矛盾

“不要用行话” + 技术任务无术语表 = 模型只能选”不准确”或”违反规则”。它通常无声违反。

如何判断:禁令在任务下不可行。

动手前先确认

  • 列出 prompt 里每条”不要”。
  • 每条对应你真正想要的行为(配对的”要”)。
  • 每条禁令是具体(可测)还是含糊(要解读)。
  • 决定哪些禁令值得保留、哪些砍掉。
  • 给每条留下来的禁令规划一个正向锚(示例、schema 或规则)。

需要收集的信息

  • 当前 prompt 里全部负向约束清单。
  • 绕开禁令的输出。
  • 你实际想要的行为。
  • 模型是换说法绕开还是真的漏了禁令。
  • 模型 + temperature。

最短修复路径

Step 1:每条”不要”配一条”要”

差:  "不要通用。"
好:  "不要通用。
       要:每段至少 2 个具体数字 + 1 个命名工具。"

差:  "不要写大段文字。"
好:  "不要写大段文字。
       要:最多 4 句、每句 ≤20 字。用编号列表。"

“要”给目标。“不要”现在变冗余——遵循”要”自然不违反”不要”。

Step 2:模糊负向翻成具体禁词

差:  "不要用企业语言。"
好:  "禁词:leverage、utilize、synergize、going forward、
       归根到底、整体、稳健、可扩展。"

具体 token 禁可强制执行。vibe 禁不能。

Step 3:限制禁词单长度

5-10 条高度具体的项目。再长稀释注意力。多了就拆 prompt 或用多轮工作流。

Step 4:给正例

替代”不要”最强的方式:展示你想要的输出:

像这样:
"我们上了 Stripe Connect 处理 marketplace 结算。日交易 4.2 万美元,
T+2 到账。替换了之前 PayPal 集成,那个有 18% 的拒付处理摩擦。"

不要这样:
"我们利用了稳健的支付方案优化结算流程。"

对比让两个方向都清晰。

Step 5:末尾加自检

写完后核对:
- 用过禁词吗?列出来。
- 每段是否至少 2 个具体数字或命名工具?
- 任何一项失败就重写。

强制模型自审来抓绕开。

Step 6:常用禁令锁进 project / system prompt

如果”不用企业行话”是全工作流的长期规则,挪到 project 指令,不占每个 prompt 空间,也躲开近期漂移。

怎么确认已经修好

  • 新输出无禁词。
  • 新输出包含你要求的具体正向特征。
  • 故意输入差的内容也不回到旧行为。
  • 同事看输出说不出你用了哪些禁令——只看到好输出。

如果还是没修好

  1. “要”配得太软——把正向变可测。
  2. 加 1-2 个 pass/fail 示例。
  3. 切到结构化输出(JSON、schema)——结构让部分禁令不必要。
  4. 复杂禁令让模型先规划再写;在规划阶段就能挡掉问题。

预防建议

  • 默认规则:永远不写孤立”不要”。
  • 每个工作流保留稳定的短禁词单(最多 5-10 条)。
  • 解读性禁令一定配示例做正向锚。
  • 每季度审一次累积的无配对”不要”。
  • 团队工作流把禁词单当配置文件,不当临时 message 文本。
  • 自己写一段故意差的输出测禁令;模型产出像你的差例时就说明禁令没打中。

相关阅读

标签: #排查 #Prompt #Prompt 质量 #Prompt 工程