长 Prompt 反而变差——怎么改 Prompt 结构

Prompt 写得很详细,回答却变得泛、跑题、或像在复述你的指令。

你花了 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 个输出形态一致。

如果还是没修好

  1. 再压——目标是”还能产出正确答案的最短 prompt”,不是”含全部细节的最长 prompt”。
  2. 拆成多轮:1 轮规划、2 轮执行、3 轮验证。
  3. 从 chat UI 切到带结构化输出的 API(JSON schema 强制、tool use)。
  4. 上下文真的不能再短就换长上下文注意力更强的模型。

预防建议

  • 不是必要参考时 prompt 控在 600 字内。
  • 默认模板:任务先、上下文次、输出格式末。
  • 超 200 字用分块标题。
  • 重复性工作存模板,不要每次现编。
  • 每季度审一次 prompt——长寿 prompt 会累积过时约束。
  • 发送前回读前 3 行;陌生人要能知道要做什么。

相关阅读

标签: #排查 #Prompt #Prompt 质量 #长 Prompt