你花了 45 分钟写完美 prompt,1400 字,覆盖语气、受众、约束、边界、避雷、3 段参考、checklist。输出回来 200 字的稀粥。同一天早上用 60 字版本问同样的事,回答又准又锋。继续加字没用:大约过了 500 字后,每多一句都是稀释优先级而不是澄清。长 prompt 让模型变差,不是因为读不下来,而是因为读不出”哪几句最关键”。没有清晰的层级,模型就平均,平均就平庸。
本文讲长 prompt 变成差输出的结构性原因,以及怎么改 prompt 形状——保留必要细节但让任务清晰。
常见原因
1. 目标埋在中间
第一句祈使决定回答的框架。你的祈使句在第 4 段时,模型在读到之前就已经锁错框架了。
如何判断:搜 prompt 里的交付动词(写、产出、返回、决定)。在第 5 行之后才出现就是埋了。
2. 隐性约束冲突
“全面又简洁”。“覆盖所有情况又 ≤200 字”。长 prompt 会无声累积这些。模型平均后两边都不满足。
如何判断:所有约束列在一张纸,找方向相反的形容词对。
3. 背景占 80%
1400 字里 1100 字是背景、只有 300 字是任务/约束/输出规范,模型把 prompt 解读成”对这段背景做点什么”而不是”产出 X”。
如何判断:每节字数对比。背景 vs 任务超 3:1 就埋了。
4. 没输出格式
长 prompt 没 schema。模型默认 5 段散文,因为训练分布里”认真长答案”长这样。即使你顺嘴提了格式,没 schema 块也落不下。
如何判断:你要 JSON / 表 / bullet,但每次回来散文。
5. 重复强调失效
“特别重要”写 5 次,没一次感觉重要。模型把重复解析为”这是文体”而不是”这里要更注意”。
如何判断:数 prompt 里出现了多少次”重要”、“关键”、“必须”、“特别”。超 5 次强调就扁了。
6. Prompt 是一面 prose 墙
没标题、没标签、没空行。模型自己推断结构。长输入上推断不稳。
如何判断:没有 ## 背景、## 约束、## 输出 这类标签。
动手前先确认
- 把当前 prompt 和差输出并排存好。
- 用早上能用的 60 字版本再跑一次——还能用吗?(区分 prompt 形状问题 vs 模型问题。)
- 数每节字数:任务 vs 背景 vs 约束 vs 输出规范。
- 不回读 prompt,用一句话写出真实交付物。
- 哪几段背景删掉答案不会变?
需要收集的信息
- 完整 prompt + 每节字数。
- 拿到的输出 vs 想要的输出。
- 模型 + 当时生效的 system prompt 或 project 指令。
- 这 prompt 上一次能用是什么时候——模型换过吗?
- 重复 prompt 时的方差:偶尔能产出好答案吗?
最短修复路径
Step 1:把目标提到第 1 行
任务:决定下列负载下从 Postgres 迁到 DynamoDB 是否值得。
二选一。3 句话辩护。
[上下文紧接]
第一句祈使决定一切。确保它正确。
Step 2:正文分块
## 任务
<一句话>
## 上下文
<bulleted,只放承重事实>
## 约束
- <一条一行>
- <若冲突,写明谁赢>
## 输出格式
{
"decision": "postgres | dynamodb",
"reason": "<≤60 字>"
}
标签对长输入解析帮助巨大。
Step 3:剪冗余约束
每条约束都问:“审稿人真的会检查这条吗?“不会就删。软偏好打架硬规则;删掉软的反而让硬的更强。
Step 4:加正例,删 3 句规则
一个”正确输出”样本抵 300 字规则。如果你有”输出应该长什么样”的描述,换成一个示例。
Step 5:输出 schema 放最后
prompt 最后 = 最高近期权重。这个位置留给结构规范:
[其他内容]
输出(只返回这个):
\`\`\`json
{ "decision": "...", "reason": "..." }
\`\`\`
Step 6:大块参考挪到侧边
800 字参考材料用 <reference> 圈起来,让模型当输入数据,不当指令:
<reference>
... 800 字政策 ...
</reference>
任务:<放在 reference 之上更好>
怎么确认已经修好
- 陌生人读前 3 行能正确指出交付物。
- “重要 / 关键 / 必须”出现 ≤3 次。
- 背景段不超过 任务+约束 段的 2 倍。
- 输出匹配你的 schema,不是泛散文。
- 同 prompt 跑 3 次,3 个输出形态一致。
如果还是没修好
- 再压——目标是”还能产出正确答案的最短 prompt”,不是”含全部细节的最长 prompt”。
- 拆成多轮:1 轮规划、2 轮执行、3 轮验证。
- 从 chat UI 切到带结构化输出的 API(JSON schema 强制、tool use)。
- 上下文真的不能再短就换长上下文注意力更强的模型。
预防建议
- 不是必要参考时 prompt 控在 600 字内。
- 默认模板:任务先、上下文次、输出格式末。
- 超 200 字用分块标题。
- 重复性工作存模板,不要每次现编。
- 每季度审一次 prompt——长寿 prompt 会累积过时约束。
- 发送前回读前 3 行;陌生人要能知道要做什么。