仅靠prompt工程就可以超过强化学习?
是的,没错。来自UC Berkeley、斯坦福大学等机构的研究者们提出了一篇论文:《GEPA: REFLECTIVE PROMPT EVOLUTION CAN OUTPERFORM REINFORCEMENT LEARNING》。该研究的核心观点是:与从稀疏、单一的标量奖励中学习相比,语言本身可以为大型语言模型提供一个远为丰富的学习媒介。

-
论文标题:GEPA: REFLECTIVE PROMPT EVOLUTION CAN OUTPERFORM REINFORCEMENT LEARNING -
论文链接:https://arxiv.org/pdf/2507.19457
作者引入了一种名为 GEPA (Genetic-Pareto) 的新型提示优化器。GEPA巧妙地将基于自然语言的反思机制与多目标演进搜索相结合,通过从反复试验的错误和成功中学习高级规则来优化提示。研究结果表明,GEPA在多个任务上不仅显著优于GRPO这样的强化学习方法,而且所需样本量减少了高达35倍。同时,它也超越了当前领先的提示优化器MIPROv2。
国外网友的反应:

下面我们来解读一下GEPA的原理、方法、实验结果。
背景知识
在深入GEPA的核心机制之前,我们首先需要理解它所面向的优化对象以及当前主流优化方法的局限性。
什么是复合型AI系统(Compound AI Systems)?
GEPA优化的目标并非单一的LLM调用,而是复合型AI系统。这是一个更广泛和实际的概念,指的是由一个或多个语言模型调用模块组成的、可能与外部工具(如搜索引擎、代码解释器)交互、并通过任意控制流(如循环、条件判断)进行编排的模块化系统。
我们今天所熟知的许多高级AI应用,如AI智能体(Agents)、多智能体系统(Multi-agent Systems)以及像ReAct(Reason+Act)这样的通用框架,都属于复合型AI系统的范畴。
形式上,论文将一个复合型AI系统定义为 ,其中:
-
是语言模型模块的集合。每个模块 包含其系统提示 、模型权重 等。 -
是控制流逻辑,负责调度和调用这些模块。 -
和 分别是系统的全局输入和输出模式。
下游任务适配的两条路径
为了让一个通用的复合型AI系统在特定任务(如多跳问答、代码生成)上表现更佳,我们需要对其进行“优化”或“适配”。
1. 强化学习(Reinforcement Learning)
RL方法将系统适配问题看作是一个策略优化问题。系统(Agent)在环境中执行一次完整的任务(一次rollout),并在结束时获得一个标量奖励(reward),通常是一个简单的成功/失败信号(例如,F1得分高于阈值为1,否则为0)。通过大量rollouts,RL算法(如GRPO)利用这些奖励信号来估算策略梯度,并据此更新模型的权重(通常是通过LoRA等参数高效微调技术),从而提升系统的平均表现。
-
优势:能够直接优化不可微的、由黑盒环境提供的奖励指标。 -
核心挑战:样本效率极低。由于奖励信号是稀疏且信息量不足的(例如,只知道“失败了”,但不知道“为什么失败”以及“哪里失败了”),模型需要成千上万次的尝试才能学习到有效的策略。这在部署成本高昂的场景下是难以接受的。
2. 提示优化(Prompt Optimization)
提示优化则另辟蹊径,它固定模型的权重,专注于寻找最优的系统提示 。这些方法通过不同的搜索策略(如贝叶斯优化、模拟退火)来探索提示空间,并根据系统在验证集上的表现来迭代地改进提示。
-
优势:比权重微调更轻量,不需要训练基础设施。 -
当前现状:许多方法如MIPROv2会同时优化指令(instruction)和少量示例(few-shot examples)。然而,这些方法可能仍然需要数千次部署才能收敛。
问题的形式化定义
基于以上背景,我们可以更清晰地定义GEPA所要解决的问题。给定一个复合型AI系统 ,其可学习的参数是提示集合 和权重集合 。优化的目标是找到最优参数 ,使得系统在任务分布 上的期望度量 最大化:
其中, 是一个任务实例, 是评估指标(如精确匹配率、F1得分等)。
而GEPA关注的是样本高效的优化问题,即在有限的部署预算 内,找到最优的提示 (权重 固定):
这个预算限制 正是激励GEPA从每一次部署中榨取最大学习信号的核心动机。
GEPA核心方法详解
GEPA (Genetic-Pareto) 是一个为复合型AI系统设计的、样本高效的优化器。它的设计基于三个核心原则:基因式提示演进、基于自然语言反馈的反思 和 基于帕累托的候选者选择。
我们可以通过下面的流程图来理解GEPA的整体工作流程。

GEPA的工作流程可以概括为:
-
初始化:从一个或多个基础的提示方案开始,构成一个“候选池” 。 -
迭代循环:在部署预算用尽之前,不断重复以下步骤:
a. 选择:从候选池中,通过一种精巧的策略(帕累托选择)挑选出一个有潜力的候选者进行优化。
b. 变异/交叉:对选定的候选者进行修改,生成一个新的候选者。修改的方式主要是“反思性提示突变”。
c. 评估:在少量样本(minibatch)上快速评估新候选者的性能。
d. 更新:如果性能相较其“父代”有所提升,则在更大数据集上进行全面评估,并将其加入候选池,以备后续的迭代。 -
返回最优:预算耗尽后,返回在整个优化过程中表现最好的候选者。
接下来,我们将深入探讨支撑这一流程的三大核心原则。
原则一:基因式提示演进(Genetic Prompt Evolution)
GEPA的整体框架借鉴了演化算法的思想。它将每个完整的提示配置(即系统中所有模块的提示集合)看作一个“个体”或“候选者”。优化过程就是一个种群(候选池 )不断演化的过程。
-
候选池(Candidate Pool):维护一组多样的、有竞争力的提示方案。 -
演化操作:通过“突变”(Mutation)和“交叉”(Crossover)来产生新的后代。 -
突变:在GEPA中,这对应着核心的反思性提示突变,即对单个候选者的某个模块提示进行深度优化。 -
交叉:对应着系统感知合并(System Aware Merge),即从两个优秀的父代中挑选出各自最好的模块,组合成一个更强的后代。
-
-
选择(Selection):决定哪些个体有机会繁衍后代。GEPA采用的是基于帕累托的候选者选择策略,以保证种群的多样性,避免过早陷入局部最优。
通过这种方式,GEPA能够追踪每个候选者的“血缘关系”,使得优秀的“基因”(即有效的提示片段或策略)能够在演化过程中被继承和累积,从而逐步逼近全局最优解。
原则二:基于自然语言反馈的反思(Reflection using Natural Language Feedback)
这是GEPA实现高样本效率的关键所在。传统RL方法将一次部署的输出压缩成一个单一的数值奖励,丢弃了大量的过程信息。GEPA则反其道而行之,认为这些过程信息——以自然语言形式存在的轨迹——是极其宝贵的学习信号。
1. 丰富的诊断信号来源
GEPA利用了两种丰富的文本反馈来源:
-
系统执行轨迹(Execution Traces):一次部署会产生一连串的文本记录,包括:
-
每个模块接收到的输入提示。 -
LLM模块内部的思维链(Chain-of-Thought)推理过程。 -
对外部工具的调用指令和参数。 -
外部工具返回的结果。
-
-
评估过程轨迹(Evaluation Traces):评估指标 的计算过程本身也能产生丰富的文本反馈。例如,在代码优化任务中,评估器不仅仅是返回“通过/失败”,它还会提供详细的编译器错误信息、单元测试失败日志或性能分析报告。
论文将这种能返回文本反馈的评估函数定义为一个特殊的反馈函数 ,它不仅返回一个分数,还返回一个 feedback_text
字符串。
2. 反思性提示突变(Reflective Prompt Mutation)
GEPA利用强大的LLM自身具备的反思能力来实现提示的自我改进。具体流程如下:
-
收集数据:选定一个候选提示和一个目标模块,在少量训练样本(minibatch)上运行系统,收集其成功和失败的执行/评估轨迹。
-
构建元提示(Meta-Prompt):GEPA将收集到的信息整合成一个“元提示”,喂给一个高级的LLM(如GPT-4)。这个元提示的结构大致如下(详见论文附录图B):
我给一个助手提供了以下指令来执行一个任务:
<当前模块的指令>
以下是该助手在不同输入下的表现,以及关于其表现可以如何改进的一些反馈:
<输入、输出和反馈的样本集合>
你的任务是为这个助手写一个新的、改进后的指令。
-
生成新提示:高级LLM在阅读了当前指令、具体案例及其反馈后,会“反思”现有指令的不足之处(例如,指令不够清晰、缺少对边界情况的处理、策略有误等),然后生成一个经过改进的新版本指令。
-
创建新候选者:用这个新生成的指令替换掉原候选者中对应模块的指令,从而创造出一个新的候选者(后代)。
通过这种方式,GEPA将底层的、基于梯度的学习(如RL)替换为一种高层次的、基于自然语言符号推理的学习。它充分利用了LLM强大的语言理解和生成能力,使得每一次部署(即使是失败的部署)都能提供丰富的、可操作的改进方向,从而仅用少量样本就能实现提示质量的大幅提升。
下面是一个GEPA为多跳问答系统中“第二跳查询生成”模块优化出的提示片段,可以直观地感受到其指令的细致和深刻。

原则三:基于帕累托的候选者选择(Pareto-based Candidate Selection)
如果每次都只选择当前平均分最高的候选者进行突变,优化过程很容易陷入局部最优。比如,优化器可能会发现一个在70%的情况下都有效的“通用”策略,然后花费大量预算去微调这个策略,试图将其性能从70%提升到71%,却忽视了可能存在另一种在另外30%的情况下表现优异的“特化”策略。
为了解决这个问题,GEPA引入了基于帕累托的“启发式(illumination)”选择策略。
1. 帕累托前沿(Pareto Frontier)
GEPA的视角从“哪个候选者平均分最高?”转变为“对于每一个具体的测试问题,哪个候选者表现最好?”。
-
定义:一个候选者被称为帕累托最优的,如果没有其他任何候选者能在所有问题上都比它好或一样好,并且至少在一个问题上比它更好。在GEPA的语境下,它维护了一个“精英集合”,包含了所有那些“至少在一个问题上取得了最高分”的候选者。 -
目的:这个精英集合保留了所有被发现的“致胜策略”,即使某个策略只在极少数难题上有效,它也会被保留下来,从而保证了种群的多样性。
2. 选择过程
GEPA的选择算法(Algorithm 2)如下:
-
构建帕累托集合:对于验证集 D_pareto
中的每一个任务实例 ,找出所有在该实例上取得最高分的候选者,形成集合 。 -
筛选精英:将所有这些集合 合并,并去除重复,得到一个包含所有“冠军”候选者的精英池 。 -
剪枝(可选):去除被严格支配的候选者。例如,如果候选者A在问题1和2上是冠军,而候选者B只在问题1上是冠军,那么B就被A支配,可以被移除。 -
随机采样:从精英池 中随机抽取一个候选者进行下一轮的突变。抽样的概率与该候选者“成为冠军的次数”(即在多少个任务实例上取得了最高分)成正比。
这种选择机制完美地平衡了探索(Exploration)和利用(Exploitation):
-
探索:所有“致胜策略”都有机会被选中,即使是那些只适用于特定难题的策略。 -
利用:那些在更多问题上表现优异的、更具泛化性的策略,被选中的概率更高。
论文中的图6直观地展示了该策略的优势。朴素的“选择最优”策略的搜索树非常狭窄,很快就停止了改进;而基于帕reto的选择策略则生成了一个更平衡、更广阔的搜索树,最终找到了性能更好的解决方案。
实验设置与结果分析
为了验证GEPA的有效性,研究者们进行了一系列严谨的实验。
实验设置
-
基准测试(Benchmarks):涵盖了四个不同类型的复杂任务,以检验GEPA的泛化能力。
-
HotpotQA:需要进行多步推理和信息检索的问答任务。 -
HoVer:多跳事实核查任务。 -
IFBench:评估LLM遵循复杂指令(尤其是输出格式约束)能力的基准。 -
PUPA:一个隐私保护任务,要求在不泄露个人可识别信息(PII)的前提下,改写用户查询。
-
-
模型(Models):实验在两种代表性的模型上进行,以证明方法的普适性。
-
Qwen3 8B:一款强大的开源模型。 -
GPT-4.1 Mini:一款顶尖的商业闭源模型。
-
-
对比方法(Baselines):
-
Baseline:未经任何优化的初始系统。 -
MIPROv2:一个SOTA级别的提示优化器,它使用贝叶斯优化来同时优化指令和少量示例。 -
GRPO:一种专为复合型AI系统设计的强化学习算法,使用LoRA进行权重更新。
-
-
公平比较:为了保证比较的公平性,GEPA的部署预算在每个基准上都与MIPROv2对齐。而GRPO则被给予了固定的24,000次部署预算,这是一个相对充足的训练量。
结果分析
实验结果清晰地展示了GEPA的优势,论文将其总结为五个核心观察。

观察1:反思性提示演进具有高样本效率,并能超越强化学习
这是论文最核心的发现。
-
性能超越:从上表可以看出,GEPA在几乎所有任务和模型上都取得了最佳性能。与使用24,000次部署的GRPO相比,GEPA在Qwen3 8B上的性能平均高出10%,在某些任务上甚至高出19%(如HotpotQA)。 -
样本效率:更关键的是,GEPA达到或超过GRPO最终性能所需的部署次数要少得多。例如,在HotpotQA上,GEPA仅用6,438次部署就超越了GRPO,样本效率提升了约3.7倍。论文指出,如果只考虑用于产生学习信号的训练集部署(不包括用于候选者选择的验证集部署),GEPA达到最优性能实际仅需数百次部署,比GRPO的24,000次少了高达35倍。
下图的性能-部署曲线直观地展示了GEPA学习速度之快,它在非常早期的阶段就超越了GRPO和MIPROv2。

观察2:仅指令优化即可超越指令与少量示例的联合优化
-
对比MIPROv2:GEPA只优化提示中的指令部分,而MIPROv2同时优化指令和少量示例。实验结果(Table 1)显示,GEPA的性能增益(+12.44% on Qwen3, +14.29% on GPT-4.1 mini)远超MIPROv2(+6.26% on Qwen3, +7.04% on GPT-4.1 mini),增益幅度达到了后者的两倍以上。 -
启示:这一发现暗示,随着现代LLM指令遵循能力的不断增强,精心设计的、高质量的指令本身的重要性可能已经超过了提供少量示例。通过反思和演进创造出详尽、深刻的指令,可能是比搜索最佳示例组合更有效的优化路径。
观察3:候选者选择策略对优化轨迹和最终性能有显著影响
-
消融实验:研究者们进行了一项消融实验,将GEPA的帕累托选择策略替换为朴素的“总是选择最佳”(SelectBestCandidate)策略。 -
结果:如下表所示,使用帕累托选择的GEPA在聚合性能上比朴素策略高出6.4%,证明了该策略在避免局部最优和提升最终性能上的关键作用。

观察4:指令优化的提示在计算上更经济,泛化性更好
-
提示长度:MIPROv2由于优化了多个少量示例,其最终生成的提示通常非常长。相比之下,GEPA只生成指令,提示长度要短得多。如下图所示,GEPA生成的提示长度不到MIPROv2的三分之一,在某些情况下甚至短9.2倍。

-
实际优势:更短的提示意味着: -
更低的API成本:输入Token数直接影响费用。 -
更低的延迟:处理更少的Token速度更快。 -
更高的系统效率:对LLM服务系统的内存和计算压力更小。
-
观察5:系统感知的交叉策略能带来额外收益
-
GEPA+Merge:这是GEPA的一个变体,它引入了“交叉”操作。它会识别出在不同模块上各自进化出优秀策略的两个父代,并将它们最优的模块组合起来,创造一个“集两家之长”的后代。 -
结果:Table 1显示,GEPA+Merge在GPT-4.1 Mini上取得了比标准GEPA更高的聚合性能(68.69 vs 66.97)。这表明,当优化预算充足时,探索不同优化路径的组合是-
-一个有价值的方向。不过,研究者也指出,如何动态地分配突变和交叉的预算,是一个值得未来研究的课题。
GEPA的新应用:作为推理时搜索策略
除了作为一种通用的系统适配方法,GEPA还展示了作为一种推理时搜索技术的潜力。
-
应用场景:当面临一个具体且困难的任务实例集合时(例如,为一组特定的PyTorch算子生成最优的CUDA核函数),我们可以将这个固定的任务集合作为GEPA的“训练集”。GEPA会不断迭代,针对这组特定的问题“过拟合”,从而找到专门为它们定制的最优解决方案(提示)。 -
领域知识注入:在这种模式下,反馈函数 的作用尤为突出。它可以被设计用来动态地注入领域知识。例如,当代码生成任务的编译器报错时,可以利用错误信息去检索相关的技术手册或架构文档,并将检索到的内容作为文本反馈提供给GEPA的反思模块。
研究者们在两个极具挑战性的代码生成基准上进行了初步实验:
-
NPUEval:为AMD新推出的XDNA2架构编写底层硬件核函数。 -
KernelBench:为NVIDIA V100 GPU生成高效的CUDA核函数。
结果非常出色。如下图所示,在NPUEval任务上,标准的GPT-4o代理在经过10轮自我修正后,平均向量化利用率仅为4.25%。而当应用GEPA进行推理时搜索后,利用率大幅提升至30.52% 。更值得注意的是,GEPA最终优化出的单个提示,在不进行任何运行时搜索的情况下,就能让标准代理的性能达到26.85%。

点评
GEPA优势很明显,但其核心机制——反思性提示突变——依赖于一个强大的LLM(在论文中是GPT-4级别)来分析轨迹并生成改进的指令。这意味着GEPA的优化效果,其上限被这个“元模型”(Meta-Model)的智能水平所限制。如果“元模型”的反思能力不足,就无法产生高质量的改进,整个优化过程可能会停滞。
往期文章: