AgentGrad:多智能体的提示词优化,凭什么又快又准?

同一套系统里,好几个大语言模型各司其职,一个负责检索资料,一个负责核对事实,一个负责写最终答案。它们靠分工协作,把单打独斗时答不出的难题拆成了能一步步吃掉的小块。可这条分工流水线的总成绩,却系在每一环那句看不见的 prompt 上:哪个 agent 该提醒自己先查证、哪个该保守一点别瞎编,全都写死在提示词里。手调跟不上,系统一升级 prompt 就崩;自动调,又不知从哪个 agent、哪一句开始改。

这就是 2026 年 9 月挂到 arXiv 的论文《AgentGrad: Intervention-guided Prompt Optimization for Multi Agent Systems》要回答的问题。它把多智能体系统的提示词优化拆成两件事:先搞清楚该改谁的 prompt(梯度提取),再把几十条改法合成一次真正的改动(梯度聚合)。而它的答案,是在这两件事上各补一刀,换来五个基准全 SOTA、平均提速 2.5 倍的成绩。

多智能体越强,为什么反而越难调教?

多智能体系统越强,越难调教,两头都出在分工上。强,是因为分工:检索的 agent 负责检索、推理的负责推理、校验的负责校验,每个 agent 专注自己那一环,合起来能拆掉单打独斗啃不动的难题,能力不是来自某个特别聪明的 agent,而是来自协作本身。难,也因为它:每多一个 agent,就多一条要写对人、写稳定的 prompt。AutoGen、MetaGPT、ChatDev 这些框架默认给每个 agent 配了一版提示词,团队能否发挥潜力,相当程度取决于这些默认配置写得好不好。论文里的一张基准表把这个差距摆得很清楚:同一套系统、同一批 agent,只靠默认 prompt 时,HotpotQA 多跳问答只有 46.33 分,PUPA 隐私改写 84.74 分、IFBench 指令跟随 73.07 分;一旦让优化方法把 prompt 调过一轮,成绩能涨十来个点 AgentGrad。

系统越大、分工越细,能靠手调维持的窗口就越窄;自动调,又不知从哪个 agent、哪一句开始改。这正是中心问题所在:AgentGrad 如何让多智能体 prompt 的自动调优既可定位又可聚合?它的答案是两板斧:先搞清楚该改谁的 prompt,也就是梯度提取;再把几十条改法合成一次真正的改动,也就是梯度聚合。自动提示词优化(APO)于是成了众人惦记的事。

把“批评”当梯度的优化法,为什么在多智能体上失灵?

自动调 prompt 最受追捧的一支,叫文本梯度(textual gradient)。它借用了数值梯度下降的直觉:训练时模型算出梯度,指导参数该往哪个方向挪一步。文本梯度把这句话“翻译”成了用语言说:对失败样本写一句自然语言批评,就当它是一次失败样本在“梯度方向”上给出的修正意见,再让另一个大模型沿相反方向改 prompt。批评当梯度,编辑当反向传播。

这套做法的源头在 ProTeGi。它的闭环是:从当前 prompt 跑出预测,用一段“反馈 prompt”把失败和预测批评成一句梯度的话,再用一段“编辑 prompt”把这句话反向改回到 prompt 上,生成几个候选,挑一个最好的进入下一轮。批评当梯度、编辑当反向传播,就是这套范式的原始骨架 ProTeGi。

这里有个明显的坑,也是后面一切矛盾的源头:数值梯度只是数字,而语言批评这玩意儿,没有数值梯度那么听话。它可能会推荐好几条互不相干的改动,也可能根本不知道这条批评到底指向流水线里的哪一个环节。后来的 TextGrad 把这套范式系统化成 PyTorch 式的自动微分框架,理论上可以作用在任何 compound AI system 的任意组件上;OPRO 走了另一条路,让大模型看过去解的得分轨迹自己生成新解。谱系很热闹,但都绕不开一个多智能体特有的死结 TextGrad。

AgentGrad 的作者在论文里给这套既有范式画了一张解剖图,把死结拆成了两个具体漏洞。第一,梯度提取时,没人验证“改这条 prompt 真的能修好这个失败”,只是胡乱选个目标就下手,更没有盯着目标 agent 的中间输出去看;第二,梯度聚合时,把互不相干的好几条失败修正随机拼在一个批次里,不同失败模式互相污染,生成的 prompt 自然难迁移。下图这张 2×2 对比,就是 AgentGrad 全篇的作战图。

既有方法与 AgentGrad 的两阶段对比

图注:论文 Figure 1。左列是既有文本梯度方法:上面随机选目标 prompt、不做任何中间监督(a),下面把梯度随机分组、混杂无关信号(c);右列是 AgentGrad 的解法:上面用顺序干预锁定真正修好失败的 agent、用干预后的输出当监督(b),下面按共同语义聚类并抽成一条广义梯度(d)。图的上下两行,对应正文接下来两章要补的两个洞 AgentGrad。

不知道改哪个 agent?一次只改一个,改完当场验证

第一个洞是不知道改谁。多智能体的失败往往是最后那个 agent 兜不住,但真正该修的可能是上游某一步坏了,把错误一路传下来。只看最终结果猜“谁背锅”,基本靠蒙。

AgentGrad 的做法是把“猜”换成“实验”,这套机制叫顺序干预。过程是这样的:先在训练集上跑一遍当前的所有 prompt,把答错的样本收进一个失败集 F。然后按执行顺序的反向,一个 agent 一个 agent 地试探。试探的办法,是在这个 agent 的 prompt 末尾临时注入一段提示(原文叫 hint),提示内容由标准答案或最终输出必须满足的约束,加上任务、系统、角色的描述拼成,比如“最终答案必须不泄露任何可识别个人的信息”。注入之后重新跑这个样本,看它是不是被修好了。

如果注入到某个 agent 时样本从失败变成成功,这个 agent 就被锁定为该样本的目标 agent,样本归入“修复子集” Tⁿ;要是没修好,就放走这个失败,让它流向下一个 agent 继续试,逐层往下,直到把失败集分完。全部分完还修不好的,记为 hard case,本轮先搁置,但每轮都会用更新后的 prompt 重建失败集,所以它们不会被永久丢掉。注意一个关键设定:hint 只在训练时用,推理时部署的、优化完的 prompt 并不带它。下图就是这把“一次只改一个、改了看结果”的漏斗 AgentGrad。

顺序干预定位目标 agent

图注:论文 Figure 2。失败样本集自上而下流过按反执行顺序排列的 agent 链(π^N → … → π^1),在每一层,凡注入该 agent 的 hint 后能修好的样本被分进绿色子集 Tⁿ(标为目标),修不好的红色剩余失败 Fⁿ 继续流向下一层。这是“改了能不能修好”这一实验判据的可视化 AgentGrad。

锁定目标只是第一步。要产出真正的修正意见,光知道“该改这个 agent”还不够,还得知道“它这一步差在哪”。AgentGrad 在这里做了一件既有方法都没做的事:既然 hint 把样本修好了,那就对比同一个输入下,这个 agent 在失败时的中间输出和注入 hint 后的中间输出。注入 hint 后那个正确的中间输出,就成了这个 agent 的“智能体级伪标签”——一个无需显式损失函数、粒度精细到中间输出的监督信号。把失败输出、修正后输出连同 prompt 一起喂给一个“梯度提取”大模型,就能生成一句指向本 agent 具体错误的细粒度修正意见。

这里的细节值得多说一句:这条修正不是凭空生成的,而是从“hint 注入前后”这个对比里长出来的。对比天然隔离了 hint 带来的行为变化,所以批评落点很准,不会把锅甩到别的 agent 头上。这跟过去那种盯着最终答案批评一通的做法,是完全不同的监督颗粒度。

几十条修正意见怎么合成一条?按语义归堆,再把整堆压成一条

第二个洞是不知道怎么合。锁定了目标、产出了几十条修正意见之后,直接把它们拼成一大段 prompt 改动就行了吗?不行。几十条意见往往指向好几个互不相干的问题,硬拼等于让 prompt 同时修好几个方向,结果是哪个方向都没修好,还污染了原本没问题的地方。

AgentGrad 的解法是给“聚合”这步装上一个语义筛,叫语义文本梯度抽象。它让一个聚合大模型在同一次调用里做两件事:先把同一个 agent 的所有修正意见按语义聚类,把指向同一种错误模式的凑成一堆,再把每一堆抽象成一条能迁移到新样本的通用修正规则。聚类的深度还有个周期:簇大小在 5、3、1 之间轮换,强迫模型交替产出“覆盖面广”和“粒度细”两种修正模式,防止只盯着某一种局部最优。

论文里给出的隐私改写(PUPA)一例最直观。目标 agent 被要求重写用户的隐私查询、把敏感信息用占位符替换。四个失败样本里,前三个分别因为泄露了组织名“PTV News”、地理位置“Warsaw, Poland”、虚构身份标识“Mishaali Kapoor”而失败,是三件表面不同、骨子里一回事的错。这三个样本各自的修正意见被聚进同一堆,抽象成一条规则:任何可能识别个人、组织、地点的实体,都视为敏感。第四条失败样本的修正方向跟这三条不一样,被挡在簇外,不参与这条规则的生成。

语义抽象:三个修正折成一条通用规则

图注:论文 Figure 5。四行对应四个 PUPA 失败样本,各展示失败输出、干预后的修正输出、样本级修正意见,以及是否入簇。前三个样本分别因组织名、地理位置、虚构身份标识泄露而失败,被聚进同一簇并抽象成底部那条通用规则“任何可识别个人、组织、地点的实体都视为敏感”;第四条因修正方向不同而被排除在簇外 AgentGrad。

同样在想办法“避免局部最优”的还有 GEPA,但路线完全不同。GEPA 靠帕累托采样保证候选多样性:在每个任务上保留最高分的候选,过滤掉被严格压制的,再按胜场加权随机挑父代去变异,属于“用评估信号筛父代”的一派 GEPA。AgentGrad 的多样性不靠筛选候选,而靠语义聚类本身——把相干的捏成一条、不相干的踢出去。一种是概率/评估信号驱动的多样性,一种是语义一致性驱动的多样性,这是两条不同哲学。

五个基准全 SOTA、平均提速 2.5 倍,这两笔账怎么读?

到这里,AgentGrad 的三块机制拼成了一条完整流水线:跑出失败集 → 顺序干预锁定目标 agent 并提取样本级修正 → 语义聚合成通用规则 → 对每条规则生成候选 prompt → 验证。最后的验证环节很讲究:候选 prompt 先在它对应的那批样本上验证,确实改好了样本才让它在完整的验证集上再验一遍,两层都过才真正替换掉旧 prompt。

这个“先小批、后全量、两层都过了才换”的设计,是整篇论文提速的秘密所在。与其给每一个候选都花整套的评估钱,不如只在候选确实在小批样本上变好了的时候,才投入完整评估的开销。论文报了几个数字来说明它有多“值”:候选更新在小批样本上真的带来改善的比例,AgentGrad 是 0.72,TextGrad 是 0.44,GEPA 只有 0.28;验证后又能进一步涨的比例,三者是 0.27、0.21、0.14。验证只在改善发生时触发,这意味着 AgentGrad 把推理预算花在了刀刃上 AgentGrad。

先把最重的两个数字摆出来。在 GPT-5-mini 这个骨干模型上,AgentGrad 在全部五个基准都刷到最高,平均比基线高 11.76 分;在 Qwen3-8B 这个开源骨干上,十项指标里赢了九项,平均高 9.67 分。逐基准和各家方法对比如下(数字为论文三份种子的均值):

基准BaselineMIPROv2TextGradGEPAAgentGrad
HotpotQA46.3359.0067.8968.3373.89
HoVer58.1162.8963.2263.1164.78
PUPA84.7488.3389.7291.8795.17
IFBench73.0773.7073.0775.2376.08
MATH76.4883.1376.4886.3787.62

(GPT-5-mini 骨干,均值±标准误见原文 Table 1。数字来源 AgentGrad。)

这份通吃看着漂亮,但也不是整张表都毫无悬念。在 Qwen3-8B 上,唯一没拿第一的是 IFBench,而且那一栏相当接近:TextGrad 得 42.52,AgentGrad 得 41.42,只差 1.10 分,两者分数非常接近,这一栏谈不上谁碾压谁。

第二笔账是速度。论文把各方法跑完一轮优化的端到端分钟数摆在一起(GPT-5-mini)。其中走贝叶斯代理建模拟合候选组合的 MIPROv2 是最慢的一档,平均烧掉 608 分钟;但论文的 2.5× 提速是相对次快基线 GEPA 平均 337 分钟算出的(AgentGrad 平均 136 分钟),608 分钟不在这个比值里 MIPRO:

方法HotpotQAHoVerPUPAIFBenchMATH平均
MIPROv25011226304581431608
TextGrad8991553325332126647
GEPA346390319269360337
AgentGrad1092441519088136

(端到端分钟数,来源 AgentGrad。)

逐基准看,AgentGrad 相对次快基线分别快 3.2×、1.6×、2.0×、3.0×、1.4×(最慢的一档只有 1.4×);论文报的 2.5× 是按平均口径算的,对应 AgentGrad 平均 136 分钟对 GEPA 平均 337 分钟。你得连口径一起读,别把它当成“处处快两倍半”。此外,它的成果还能跨到没训练过的新基准:同领域内五个没见过的新目标基准上全部最高,比如从 HotpotQA 上优化的 prompt 直接挪到多跳问答的 2WikiMultiHopQA,得 51.22,比 GEPA 的 44.89 高了 6.33 分。这一迁移结果支持其修正方向可能具有跨任务适用性。

把“诊断谁错了”升级成“训练信号”:AgentGrad 的边界与下一步

AgentGrad 最值得写进笔记的那一步,不是任何单个数字,而是一个视角转换:它把“失败分析”从一种给人看的诊断报告,变成了一种喂给优化器的监督信号。

这个背景要从 Who&When 说起。那是头一个把多智能体失败归因当作独立问题来做的研究,它给出了一套自动归因的 benchmark 和一张概念地图:系统跑完、留下失败日志,你可以让人工去翻(贵、费专家),也可以让模型自动归因,输出到底是哪个 agent 该负责、哪一步是关键错误 Who&When。难度相当高:即便用最好的方法,自动归因到“哪个 agent 出错”的准确率也只有约 53.5%,“出在哪一步”更是只有约 14.2%。但这个成绩要按 Who&When 自己的口径读,它是归因 benchmark 的成绩,不是 AgentGrad 的成绩。

自动失败归因的概念地图

图注:Who&When 提出的两条归因路线示意。上方多智能体系统跑结果、留下失败日志,随后分成人工归因(贵、需专家)与自动归因(高效、免专家)两路,底部示意两类目标输出:失败的负责任 agent,以及带编号的关键错误步。图中示意性图示不应被当成统计结果 Who&When。

AgentGrad 跟 Who&When 的“干预式归因”思路同源——都是“改了这步看能不能把失败修好”当核心判据。区别只有一个,却决定了整个工作的性质:Who&When 停在“输出一份报告给人看”,AgentGrad 把这同一个判据产出成 prompt 优化器的输入,直接拿去改 prompt。同一颗种子,一个结出诊断,一个结出监督信号。这正是把“失败分析”从分析工具升级为训练信号的那一步转换。

这个升级的代价也要一起算。第一,顺序干预依赖 hint 的质量,而论文没公开 hint 的具体 prompt 模板,只说了它由标准答案、输出约束、任务和角色描述拼成,想独立复现得自己搭。第二,干预是逐个 agent 试的,一个失败样本最多要补测 N 次干预,agent 一多、成本随之放大(论文未公布具体的 rollout 预算数字),这限制了它往超大系统的推广。第三,那 2.5× 提速是按平均口径报出的(AgentGrad 平均 136 分钟 vs GEPA 平均 337 分钟),其中逐基准最低的只有 1.4×,而且在开源骨干上的提升幅度偏小。最后,这篇只是 v1 预印本,没注明被哪个会议接收,也还没有放出代码仓库。离工业部署还有一段路,把这一步想清楚再动手更稳妥。

往长了看,AgentGrad 把“谁错了”这个曾经只能用来写复盘报告的问题,变成了模型自己能消费、能用来变强的信号。顺着这条线,失败的归因可以被喂回 prompt 优化,agent 级的监督还可以扩展到会用工具的 agent、会自我修正的场景。多智能体的分工让它变强,而 AgentGrad 在这些基准上展示的,是一条减少手工试错的自动调优路径。至于这条路能铺多远,仍受 hint 质量与系统规模的制约。

想深入可以读原文:AgentGrad: Intervention-guided Prompt Optimization for Multi Agent Systems — arXiv:2609.08572

参考文献

AgentGrad:多智能体的提示词优化,凭什么又快又准?