为什么用正向指令
正向指令是直接说明希望模型做什么,而不是罗列一串「不要……」。原因很实际:模型不是靠“不做某事”运行的,它只能做另一件事,禁止项如果不配替代动作,模型就没有可执行的目标。另一个副作用是注意力——一长串被禁止的概念本身会频繁出现在提示里,反而提高了它们被提及的概率。所以改写方法是给每条「不要 X」补一句「改为做 Y」。
改写原则
| 原则 | 给出目标行为,而非只点名禁止项 |
|---|---|
| 改写法 | 每条「不要 X」补一句「改为做 Y」,让要求可执行 |
| 优先保 | 合规硬边界(如不得输出个人隐私数据)需显式保留 |
| 可验收 | 替代动作要能判断做到没有,如字数、取值集合、字段清单 |
| 位置 | 正向要求放前部,少量硬性禁止放后面并成组出现 |
典型使用场景
- 输出风格约束:与其写不要用术语,不如写术语首次出现时用一句话解释
- 长度控制:与其写不要写太长,不如写不超过 3 条、每条 40 字内
- 结论口径:与其写不要模棱两可,不如写从三选一中给出其一
- 格式约束:与其写不要加解释,不如写仅输出 JSON 本体
- 安全边界:对外输出场景保留一条明确的不得输出内容,并配合程序过滤
改写对照
改写对照
改前:不要用专业术语,不要写太长,不要给模棱两可的结论。
改后:用日常词汇解释(首次出现的术语用一句话说明);
正文控制在 120 字内;结论从「可行 / 不可行 / 待验证」中三选一给出。
# 每条禁止项都换成了可判断是否做到的具体动作常见禁止项改写
| 否定写法 | 问题 | 正向写法 |
|---|---|---|
| 不要啰嗦 | 啰嗦没有判据 | 控制在 3 条要点,每条不超过 40 字 |
| 不要编造 | 模型不知边界在哪 | 只使用 <data> 中的信息;缺依据时写「资料未提及」 |
| 不要用英文 | 专业名词与代码标识符怎么办未说明 | 正文用中文;专有名词与代码标识符保留英文原文 |
| 不要跑题 | 跑题的定义不明确 | 只回答与本次工单相关的问题,其余归入「其他问题」 |
模型无法「不做某件事」,它只能做另一件事;把禁止项翻译成具体替代动作才可执行。