你写了一份 500 字的 prompt,比 100 字的版本详细 5 倍,结果输出反而更糟。这不是你措辞的问题,而是 transformer 处理长输入时一个可测量的特性。最快的修复方法:把你最重要的那条指令挪到 prompt 的最后一行,把成段的风格描述改成短列表,删掉所有「请认真思考 / 一定要全面」之类的废话。本文讲清长度悖论背后的 4 个机制,并给出 5 条按收益排序的修复路径。
问题是什么
典型场景:
- 从某处复制了一份「超级 prompt 模板」,结果输出比你随手问一句还差
- 给 AI 塞了
详细要求 + 例子 + 禁止事项 + 风格 + 结构 + 评分标准,输出反而更漂浮、更空洞 - 同一个任务,把 prompt 扩到 3 倍长,结果还不如简短的原版
- Claude 或 GPT 给出的回答「看似什么都谈到了,但每一点都浅」
真正的原因(4 个机制)
这不是民间传说。2025 年 7 月,Chroma 的 Context Rot 研究测试了 18 个前沿模型,包括 Claude Opus 4、GPT-4.1、o3 和 Gemini 2.5,发现输出质量会随输入变长而下降,而且是在测试的每一个长度档位上都下降,并不是只在接近上下文上限时才出问题。一个 1M token 的窗口,在几千 token 时就已经开始「退化」。最新一代 4.x/5.x 模型(截至 2026 年 6 月为 Claude Opus 4.7、GPT-5.5、Gemini 3.1 Pro)更稳健一些,但这个效应并没有消失。具体有 4 个机制。
1. 注意力被稀释
模型要在所有上文 token 上分配注意力。prompt 越长,任何一条关键指令实际拿到的「权重」就越低。你写的「最重要的一条规则」要和 200 行风格描述里的随便一句争夺注意力,而模型对两者的处理差不多。
2. 重要指令藏在中段(lost-in-the-middle)
LLM 对输入的开头和结尾最敏感,对中段最弱。最早的 Lost in the Middle 论文(以及之后所有复现)都表明:当关键信息从两端挪到中间时,准确率可以下降超过 30%。核心要求一旦写在 prompt 中段,就会被系统性地低估。
3. 指令互相冲突
prompt 越长,越可能藏着互相矛盾的规则:
写得简洁直接 … 要详细举例每一种可能 … 不要解释你的思路 … 一步步分析
模型只能挑一个执行,而你无法预测它会挑哪个。Chroma 的研究把这一点说得更尖锐:哪怕只有一个 distractor(一条语义相关但偏离目标的指令),输出质量都会被可测量地拉低。而一份长 prompt,就是一座 distractor 工厂。
4. 例子定义了边界,模型只会照着模仿
prompt 里一旦放进 example,它就把风格、长度、结构都定死了,模型会强烈往它靠拢。你给一个 300 字的简略例子,它就只会写出 300 字的简略输出,哪怕你明确要求「详细」。关于「过度提示」的研究(arXiv 2509.13196,2025)发现:例子超过少数几个之后,再加反而会在部分模型上降低准确率。
5 条修复路径
按收益从高到低:
1. 把核心要求放在 prompt 的最末尾
LLM 对结尾最敏感。即使整个 prompt 很长,把「你最看重的那一句」放在最后一行,命中率最高:
[一大段风格 / 背景 / 例子 / 约束]
...
---
最重要的事:输出必须是 markdown 表格,每行 3 列,按时间倒序。
哪怕前面写了 800 字,放在末尾的这句强调依然能被抓住。如果你有两条不可妥协的规则,就把它们都放在末尾,而不是一条放开头、一条放结尾。
2. 把「风格 + 长度 + 结构」分别用 1 句话说清
不要写一段「风格描述」,而是逐条列出:
- 风格:简洁、口语化、不啰嗦
- 长度:每节最多 150 字
- 结构:H2 / H3 / 列表,无引言
短指令清单优于长段描述。同样一个意思,分成三句话写,模型解析得远不如一条 bullet 可靠。
3. 把例子改成「反例」或「对照例」
正例容易让模型死板复制。对照例(「不要这样,要那样」)给的是边界,而不是一个让它照抄的模板:
不要这样写:
"AI 是非常重要的工具,可以帮助你提高效率。"
要这样写:
"用 ChatGPT 在 10 分钟内写完邮件,而不是 30 分钟。"
例子控制在 1-3 个。超过之后你教给模型的就是「死板模仿」,而不是背后的规律。
4. 拆成多轮对话,而不是一次性塞完
任务复杂时,把工作拆到多轮,让每一轮都拿到完整注意力:
- 第 1 轮:让 AI 先复述它对任务的理解,并列出它的假设
- 第 2 轮:确认或修正它的理解
- 第 3 轮:再让它正式输出
这比写一份「完美的」500 字 prompt 效果好得多,因为每一轮都把当前问题放在上下文边缘——也就是注意力最强的位置。它还能在模型动手写整篇草稿之前,就暴露出理解错误。
5. 删掉所有「不可执行」的指令
很多人喜欢加一些「听起来对、但模型其实无从下手」的废话:
- 「请深入思考再回答」——你说得再客气,模型也不会因此多想
- 「保证质量」/「不要犯错」——没有具体定义,就是纯噪音
- 「像专家一样思考」——远不如直接说
按 X 的格式写 - 大量 emoji 或 ALL CAPS ——分散注意力而非聚焦
删掉这些通常能去掉约 30% 的长度,且不损失质量,同时也缓解了机制 1 里的稀释问题。
最短修复路径
30 秒能做的,按顺序:
- 在 prompt 末尾加一行
最重要的事:…—— 立竿见影 - 把长段描述改成清单
- 删掉所有「请认真思考 / 一定要全面」类废话
- 如果有例子,让它的长度和风格与你期望的输出一致
- 复杂任务拆成 2-3 轮对话
怎么确认已经修好
在两个干净的对话里做 A/B 对比,避免前面的对话历史污染结果:
- 在对话 A 粘贴原来的长 prompt,在对话 B 粘贴精简后的版本。
- 两边用同一个模型、同一份输入数据。
- 拿你那条不可妥协的要求(格式、字数上限、禁用词)去对照。精简版应该更稳定地命中它。
如果两个版本都以同样的方式失败,那问题就不在长度——看下一节。
什么时候不是 prompt 长度的问题
- 模型本身做不到(要求 GPT-5.5 画图、要求 Claude 生成音频)
- 任务需要的事实超出模型训练知识或当前上下文
- 用户上传的文件本身有错或无法读取
- 你用的是老模型(GPT-3.5、早期 Claude),差距在能力而不在提示
容易误判的情况
| 你以为 | 实际上 |
|---|---|
| 越复杂的 prompt 越专业 | 最好的 prompt 工程作品往往短而结构紧凑 |
| example 越多越好 | 4 个以上常让输出僵化;1-3 个最稳 |
| system prompt 比 user message 重要 | 都重要,但清晰比位置更重要 |
| 永远要加 step by step | 对推理和数学很好;对创意写作有害,思考过程会泄漏进输出 |
预防清单
写长 prompt 前自检:
- 核心要求是否在最后一行?
- 是否有互相冲突的指令?
- 是否有「模型无法执行」的指令(情绪 / 意志力 / 良心)?
- 长段描述能不能改成 5 个短列表项?
- 例子是否与期望输出的长度和风格匹配?
- 复杂任务能不能拆成多轮?
走完这个清单,prompt 通常能瘦身一半且效果更好。
常见问题(FAQ)
Q:是不是所有任务都该用短 prompt? A:不是。严格格式要求、复杂角色扮演、领域专业内容仍然需要更长的 prompt。但长 prompt 必须结构化(有顺序、分条、关键规则放最后),而不是堆字。
Q:2026 年了,chain-of-thought(「step by step」)还有用吗? A:对推理、数学、多步逻辑,有用。对创意或风格类写作往往拖累,因为模型会把推理过程写进输出。现在的「thinking」模型本来就会内部推理,你很少需要手动让它一步步想。
Q:few-shot 例子放多少最合适? A:1-3 个最稳。过度提示的研究表明,4 个以上会把模型推向死板模仿,并且在部分模型上反而降低准确率。
Q:新模型都有 1M token 上下文了,能不能直接塞一份超长 prompt? A:截至 2026 年 6 月,Claude Opus 4.7、Sonnet 4.6 和 Gemini 3.1 Pro 都带有约 1M token 的上下文,你确实能粘贴很多。但这个窗口里的注意力并不均匀——Chroma 的 Context Rot 研究发现,在远低于上限的每个长度档位上都有退化。大窗口让你「装得下」更多,但不会让中段变得像两端一样可靠。关键指令仍要放在头尾。
Q:怎么判断 prompt 是不是「太长」? A:自己读一遍。如果你读到中段已经忘了开头说了什么,模型也会丢。如果两条指令互相矛盾,模型根本无法同时满足。
Q:这对 system prompt 和 agent 指令也成立吗? A:成立。同样的稀释和 lost-in-the-middle 效应也会打到长 system prompt 和 agent 规则文件上。把硬约束放在开头,并在整段指令的最末尾再重复一遍最重要的那一条。