Prompt 迭代中的“局部最大值”陷阱:如何判断你调错了地方
在一个严肃的 LLM 项目进行到第六周时,总会有那么一个时刻,Prompt 迭代日志开始变得像一本心理治疗日志。每一次微调都是在用一种失败模式交换另一种。增加一个更严格的 “do not”(不要)条款,模型在以前能处理的情况下就开始回避。放软语气,另一类幻觉又回来了。评测得分板在三四个点的范围内徘徊,拒绝突破。有人说,“让我再试一次重新排序,”于是又是半天时间烟消云散。
这就是局部最优陷阱(local-maximum trap)。团队正在爬山,但这山头已经到顶了。残忍的是,这座山是真的——每一次 Prompt 的改动确实会在某些案例子集上产生可衡量的变化,而这正是让每个人持续微调的信号。被忽略的是:上方的天花板根本不是 Prompt 的天花板。
在早期阶段,Prompt 迭代的投资回报率(ROI)高得离谱。一个已发表的案例研究报告称,仅靠 Prompt 最佳实践就能在单轮中提高 9 个百分点的准确率,然后在十次专注的迭代中再提高 3 个百分点,接着就是一条平线。这最后一条平线正是大多数团队烧掉预算的地方。一个每周投入 20 小时进行 Prompt 调优的团队,按全额计算的工程师费率,每年可能在一个不再有衡量性改进的单一 Agent 上花费 25 万美元。这项工作感觉很有成效,因为每一个改动都有据可查,而且就个体而言确实如此。但总合起来,这不过是披着进步外衣的拖延。
出路不是靠重新措辞的英雄主义尝试。而是一项诊断,告诉你你实际上撞到了哪块天花板,因为至少有五块截然不同的天花板,而打破每块天花板的杠杆都不同。
五块天花板,以及为什么混淆它们会浪费数季度的资源
大多数团队将“模型错了”视为单一的失败类别,并伸手去修改 Prompt,因为那是触手可及的杠杆。但潜在的缺陷往往属于五个类别之一,而治疗错误类别的代价是数月的忙碌却毫无进展。
Prompt 天花板 是你真正通过修改 Prompt 解决的问题。模型拥有知识,输入格式良好,任务规定明确,但指令模糊,格式提示较弱,或者 few-shot 示例没有覆盖失败面。症状很清晰:一个明确的 Prompt 改动能推动一整簇案例。
检索(Retrieval)天花板 出现在模型被要求了解它不知道的事情,或者对它从未接收到的上下文进行推理时。经典的信号是:对于任何拿着相关文档的人来说,答案都是显而易见的,再多的“请更仔细”指令也没用。RAG,当它是正确的杠杆时,通常能在知识密集型任务 中获得 5–8 个百分点的收益——但前提是知识确实是限制因素。
模型能力天花板 是结构性的。你面前的前沿模型无法在这个任务上、这么多的上下文中如此可靠地完成任务,到此为止。特征是:你升级到更强大的模型,分数就会变化;你回去重新措辞 Prompt,分数却不会变。
任务定义(Task-specification)天花板 是最阴险的一个,因为它看起来像模型失败。模型对你字面上提出的问题给出了一个完全合理的答案,而评测(eval)却是针对团队中没人写下来的另一个问题进行打分。每一次 Prompt 微调只是让模型从一个合理的答案跳到另一个合理的答案,而评测结果跳动是因为评测本身是定义不清的部分。
数据质量天花板 是指评测集本身就是虚构的。标签存在噪点,边缘案例被错误标注,预留集与训练时的示例重复,或者标准答案(gold answers)是由一个与用户心理模型不同的标注员编写的。当 3 个百分点的差距仅仅是标签噪点时,你可能永远也追不上这 3 分。
诊断的纪律是:在命名是哪块天花板之前,拒绝进行微调。大多数迭代了数周的团队如果被追问,都会承认他们从未明确做出过选择。
你处于平台期而非坡道的信号
有一些具体的信号表明,下一次 Prompt 修改救不了你。你越早相信它们,就能收回越多的周数。
在近乎等效的 Prompt 之间反复横跳。 团队在过去两周内轮换了三四个变体,每个变体修复了两个失 败案例却破坏了另外两个。没有单调递增的进展,因为没有潜在的梯度——你只是在一个平面上随机采样。
之前修复过的案例出现回归。 在第 11 次迭代中变绿的评测行,在第 14 次中变红,在第 15 次中又变绿。案例 A 的“修复”在结构上与案例 B 的“修复”相冲突。这是一个信号,表明你的 Prompt 被要求编码一个它没有能力稳健编码的决策边界。
对不应产生影响的表面形式变化高度敏感。 关于 Prompt 脆弱性的研究表明,保留语义内容的变化(如空格、选项顺序、演示位置)可能会导致数十个准确点的波动。一项研究发现,仅靠格式就能让 13B 级别的模型产生高达 76 个点的差异;另一项研究显示,将未改动的演示块从 Prompt 开头移动到结尾可能会导致约 20 个点的准确率波动,并翻转近一半的预测。如果你的评测得分在空格上的变化比在内容上的变化还大,那么你测量的不是任务质量。你测量的是噪声。
一个没人能辩护其每一行内容的“获胜”Prompt。 当系统 Prompt 的最后 30% 是一堆堆积而成的 “不要说 X”、“始终包含 Y”、“对 Z 要特别小心”等条款(每个都是为了应对单一的评测失败而添加的)时,这个 Prompt 已经变成了一个 Bug 列表,而不是一个规范。下一个条款会修复一个案例,同时产生另一个。
评审员对“正确”输出存在分歧。 如果两名工程师盯着一个失败的案例,却对正确答案应该是什么意见不一,那么你遇到的不是 Prompt 天花板。你遇到的是任务定义天花板。当你都不知道什么是正确时,模型不可能正确。
跃进 vs. 迭代决策矩阵
一旦你发现了瓶颈信号,问题就变成了:是继续调优,还是推倒重构?在压力下能够站得住脚的框架是:针对每一个上限,询问打破该上限的最廉价行动是什么。
如果诊断结果是提示词上限 (prompt ceiling),那就继续迭代,但要增加结构化流程:建立一个不用于调优的留出评估集 (held-out eval set)、一套带有统计显著性门槛的 A/B 测试机制,并限定你在宣布达到上限之前愿意投入的循环次数。10 次专注的迭代是合理的预算;30 次则不是。
如果诊断结果是检索上限 (retrieval ceiling),请停止修改提示词,开始对检索进行检测。哪些文档被召回了?排名如何?分数是多少?大多数“模型幻觉”故障实际上是“检索器没有返回任何相关内容,而提示词又没有要求拒绝回答”。修复检索契约——拒绝语言、相关性阈值、引用要求——提示词自然就会变得简单。
如果诊断结果是任务规范上限 (task-specification ceiling),工作重心应从提示词转向规范。与负责评估打分的人坐下来,编写评分准则 (rubric)。首先裁定那些模糊的案例,因为这些案例是产生大部分表观偏差的根源。没有书面的评分准则,你测量的就不是模型质量,而是标注者的心情。
如果诊断结果是数据质量上限 (data-quality ceiling),请手动审计一部分失败案例。标注错误的样本、不同拆分集中的重复项,以及随时间推移的标注偏移,在仪表盘上都会显示为“模型正在变差”。在数据集上花几个小时,能省下在模型上耗费的数周时间。
如果诊断结果是模型能力上限 (model-capability ceiling),应对措施是模型升级、微调或任务分解。任务分解通常是最被低估的:将一个复杂的任务拆分为三个更简单的子任务,每个子任务由更小、约束更多的模型处理,这种方案在质量和成本上通常都优于单个巨型提示词。像 ADaPT 这样的框架将分解作为一等公民策略,正是因为对一个大步骤进行暴力提示 (brute-force prompting) 往往会输给仅在需要时进行分解的规划器 (planner)。
跃进并不总是向上——有时是横向跨越到完全不同的架构(RAG、agent 循环、小型专用模型)。关键在于,这种跃进是由诊断驱动的必然选择,而不是因精疲力竭而产生的无奈之举。
工程失败背后的组织失败模式
团队在提示词迭代失去效用后仍坚持不懈,其原因很少是技术性的。而是因为其他替代方案在组织层面上成本高昂,而微调在组织层面上成本极低。
承认模型能力上限意味着需要讨论预算:更昂贵的前沿模型、一次微调运行、或者采购领域数据集的周期。承认任务规范上限意味着要回到产品部门说:“我们实际上并没有就这个功能应该做什么达成一致。”承认数据质量上限意味着停止发版并重新标注。这些行动中的每一个都会面临利益相关者的阻力。
而一个新的系统提示词版本则完全没有这些成本。它可以由一名工程师在一下午的时间内编写、部署并完成“验证”。它产生了一种向前的假象,足以安抚领导层的审查。从严格意义上讲,这是阻力最小的路径。
这就是为什么局部最优陷阱最好被视为一个流程问题,而不是一个巧妙提示词的问题。真正有效的干预是组织层面的:
- 规定一项制度:任何提示词变更在没有冻结黄金集 (frozen golden set) 上的评估增量,且未达到配置的显著性阈值之前,不得发布。
- 设定最大预算——例如 10 次迭代或两周时间——之后,团队必须编写一份单页诊断报告,指明上限所在并提出非提示词的干预措施。
- 作者分离:迭代提示词的工程师与裁定评估准则的工程师不能是同一个人。这打破了反馈循环,防止模糊案例被悄悄重新打分,以偏向当前正在运行的版本。
- 提示词脆弱性的可见性:跟踪评估分数在语义无效扰动(如空格、重新排序)下的方差。如果该方差与你迭代产生的增量在同一范围内,那么你就不再是在测量任何真实的东西。
这些工作并不光鲜。但它们往往决定了一个项目是能在季度内交付真正的能力,还是最终只产生了一个包含 40 条子句的系统提示词和一支疲惫不堪的团队。
走出陷阱
在逃离陷阱的团队中,模式是一致的。他们不再把提示词作为迭代单位,而是把诊断作为迭代单位。每一次平台期都会引发一个书面提问——我们现在处于哪种上限?——答案指向一个特定的、非“再次改写”的干预措施。只有在打破了正确的上限之后,提示词修改才会继续。
这种自律会让人感到不适,因为它要求你在书面上承认,过去六周精妙的措辞调整毫无进展。但这比另一种选择要便宜得多,即再浪费接下来的六周去做同样的事情。
提示词工程的目标是快速找到局部最大值,识别其本质,并从山丘上走下来。那些能够成功交付的团队,是那些在坡度变平缓时愿意停止攀爬的团队。
- https://softcery.com/lab/the-ai-agent-prompt-engineering-trap-diminishing-returns-and-real-solutions
- https://thenewstack.io/prompting-vs-rag-vs-fine-tuning-why-its-not-a-ladder/
- https://arxiv.org/html/2310.11324v2
- https://arxiv.org/html/2502.04134
- https://arxiv.org/html/2603.13285
- https://www.anthropic.com/engineering/demystifying-evals-for-ai-agents
- https://deepeval.com/docs/prompt-optimization-introduction
- https://www.getmaxim.ai/articles/building-a-golden-dataset-for-ai-evaluation-a-step-by-step-guide/
- https://www.evidentlyai.com/llm-guide/llm-evaluation
- https://nexla.com/ai-infrastructure/rag-vs-fine-tuning-vs-prompt-engineering
- https://allenai.github.io/adaptllm/
- https://arxiv.org/html/2510.07772v1
