主题
02.7 反模式清单
20 个让效果变差的常见写法,以及每一个的修复方案。
读完你能做什么:拿自己的提示词对照一遍,通常能立刻改掉 3-5 处。
A 类 · 指令模糊
AP-01 用形容词代替标准
text
❌ 写得专业一点
✅ 使用被动语态描述系统行为;术语首次出现时给出英文原文;不使用第二人称根因:形容词的映射空间太大,模型只能取训练分布中的"平均专业"。
AP-02 只说不要,不说要什么
text
❌ 不要写得太长
✅ 每个回答不超过 200 字,直接给结论,不写开场白根因:负向指令需要模型先激活再抑制,是更弱的操作。见 02.1 不变量 3。
AP-03 一个提示词里塞多个不相关任务
text
❌ 帮我看下这段代码有没有 bug,顺便优化下性能,另外给我写个测试,
再解释下这个设计模式,最后帮我想个更好的函数名
✅ 分四轮,每轮一件事根因:多目标会让模型在每个目标上都投入不足,而且它会试图在同一个输出里满足所有目标,导致每部分都很浅。
AP-04 隐含前提没说出来
text
❌ 这个查询太慢了,帮我优化
(没说:数据量多大?慢是多慢?可接受的目标是多少?能不能改表结构?)
✅ 这个查询在 500 万行的表上耗时 8 秒,目标是 200ms 以内。
可以加索引,但不能改表结构(有其他系统依赖)。AP-05 用"等等"结尾
text
❌ 检查空指针、越界、类型错误等等
✅ 检查以下五项:空指针、数组越界、类型不匹配、资源未释放、并发竞争根因:「等等」把补全责任交给模型,它会补出它认为典型的项,未必是你要的。
B 类 · 结构问题
AP-06 散文式长提示词
text
❌ 500 字一整段,背景、任务、约束、格式全混在一起
✅ 用 XML 标签分块,见 02.2AP-07 关键约束埋在中间
text
❌ ……(300 字背景)……另外记住金额一定要用 BigDecimal……(200 字其他要求)……
✅ 把最关键的约束放在 <constraints> 块内,并在提示词末尾重申一遍根因:上下文中段的注意力权重最低。见 03.2。
AP-08 长文档放在提问之后
text
❌ 请总结这份报告的三个核心结论:
{80 页报告}
✅ <document>
{80 页报告}
</document>
请总结这份报告的三个核心结论。根因:长内容放前面,问题放后面(贴近生成位置),显著提升长文档任务的表现。
AP-09 标签不闭合或命名不一致
text
❌ <task>... (忘了 </task>)
❌ 同一份提示词里既用 <constraint> 又用 <constraints>
✅ 建立自己的固定标签表并严格遵守AP-10 在极短提问上套复杂模板
text
❌ 为了问「Python 里怎么读 CSV」写了一个带 6 个 XML 标签的模板
✅ 直接问根因:结构化的收益来自于抑制干扰。没有干扰时,结构只剩噪音。
C 类 · 示例问题
AP-11 示例格式过度一致
text
❌ 三个示例都是「3 条要点 + 一句总结」
→ 模型认为必须是 3 条
✅ 让示例的条数、长度故意不同(2 条、5 条、1 条)AP-12 只给正例不给反例
text
❌ 只演示"好的输出长什么样"
✅ 加一个 <bad_output> + <why_bad> 的对照AP-13 示例主题与任务主题过于接近
text
❌ 演示「怎么写 commit message」时三个示例全是支付模块的
→ 输出可能带上支付主题的痕迹
✅ 示例主题分散AP-14 没有"信息不足"的示例
text
❌ 所有示例都是"输入完整 → 给出答案"
→ 遇到信息不足时,模型倾向于硬编一个答案
✅ 加一个示例演示"信息不足时该说什么"D 类 · 事实与幻觉
AP-15 没有给"我不知道"留出口
text
❌ 分析这份文档里关于 XX 的内容
(如果文档里根本没有 XX,模型可能编一段)
✅ 分析这份文档里关于 XX 的内容。
如果文档中没有涉及 XX,直接回答「文档中未涉及 XX」,不要推测或补充通用知识。这是降低幻觉最高性价比的一条。 见 04.3。
AP-16 问事实但不要求引用
text
❌ 这份合同的违约金条款是怎么规定的?
✅ 这份合同的违约金条款是怎么规定的?
先逐字摘录相关原文(标注条款编号),再基于摘录作答。AP-17 假设模型知道时效性信息
text
❌ 现在 React 最新版本是多少?最佳实践是什么?
✅ 先用网页搜索确认 React 的当前最新稳定版本和发布日期,
引用你查到的来源,然后再回答最佳实践。根因:训练数据有截止日期。任何"当前""最新""现在"类问题都必须先查证。
AP-18 让它凭空生成需要执行才知道的结果
text
❌ 这段代码的输出是什么?
(它会模拟执行,可能出错)
✅ 运行这段代码,把实际输出贴给我。
(在 Claude Code 中,让它真的执行)E 类 · 会话管理
AP-19 在被污染的上下文里继续加约束
text
❌ 前面 20 轮走错了方向,你再补一句"忘掉刚才的,重新来"
→ 错误内容仍在上下文里持续施加影响
✅ 用 [Edit] (编辑) 回到分叉点重新提问,或 /clear 重开根因:「忘掉刚才的」这条指令本身也只是上下文中的一句话,它无法真正删除已有内容的影响。
AP-20 用 [Retry] (重新生成) 代替改提示词
text
❌ 输出不满意 → 点重新生成 → 还是不满意 → 再点 → ……
✅ 输出不满意 → 分析是哪条约束缺失 → 补上 → 重新提交根因:重试只是重新采样。如果问题出在提示词的约束不足,重试 10 次仍然会落在同一个不满意的分布里。
例外:如果你判断这次输出只是"运气不好"(格式对、方向对,只是某个细节没做好),重试是合理的。
快速自检表
打印出来贴在显示器旁:
text
□ 每条约束都能被验证吗?(不能就说明太模糊)
□ 有没有用形容词代替标准?
□ 负向指令是否都配了正向替代?
□ 长文档是否在提问前面?
□ 最关键的约束是否在末尾重申?
□ 是否给了"我不知道"的出口?
□ 涉及事实的部分是否要求了引用?
□ 涉及时效性的部分是否要求了查证?
□ 示例是否包含边界情况与拒绝情况?
□ 示例格式是否故意不完全一致?
□ 一个提示词是否只有一个主任务?
□ 上下文是否干净(没有被前面的错误方向污染)?延伸阅读
- 02.1 提示词的第一性原理 —— 所有反模式的理论根源
- 04.3 幻觉的成因与锁死方案
- 04.5 性能压榨 Checklist