← 科研空间 首页
arXiv:2507.19457 v2 ICLR 2026 Oral Prompt Evolution / RLVR

GEPA: Reflective Prompt Evolution Can Outperform Reinforcement Learning

一篇把“反思式 prompt 演化”推到可与 GRPO 对比的系统论文:把 rollout 里的自然语言 trace 和 evaluator feedback 当作高带宽学习信号,用 Pareto-front 保留不同实例上的有效策略。

先给结论

GEPA 的核心主张:不要只把 rollout 压成一个 reward 标量。

这篇论文的关键不是“又一个 prompt optimizer”,而是一个更强的训练信号观点:复杂 AI system 的每次 rollout 都会产生大量自然语言中间产物,包括 reasoning、tool call、retrieval 结果、compiler error、rubric failure 等。RLVR/GRPO 通常把这些东西折叠成最终 reward;GEPA 反过来让 LLM 读这些 trace,反思失败原因,再把可泛化的规则写回 prompt。

+6% arXiv abstract 报告:跨 6 个任务,GEPA 平均超过 GRPO 约 6%,最高约 20%。
最高 35x 论文报告在部分任务达到最优测试性能所需 rollout 数可比 GRPO 少最高约 35 倍。
+13.33 GPT-4.1 Mini 主表中,GEPA+Merge 的 aggregate improvement 为 +13.33,高于 MIPROv2 的 +5.64。
一句话读法:GEPA 把“trial-and-error”从参数空间里的梯度学习,改成了语言空间里的经验蒸馏:每次失败都不只是 0/1 reward,而是可以被反思、归纳、合并进 prompt 的经验。
边界先说清楚:“outperform RL”不是说 GEPA 在所有 RL 设置里都更强。论文最强证据来自 Qwen3 8B 上对 GRPO 的对比,以及闭源模型 GPT-4.1 Mini 上对 prompt optimizer 的对比。闭源模型无法直接做同等权重更新,所以这里更准确的结论是:在 rollout 昂贵、反馈有文本结构、或模型权重不可训练时,GEPA 是非常有竞争力的优化路线。
研究动机

问题不是“prompt 要不要优化”,而是“每次昂贵试错到底浪费了多少信息”。

论文把背景放在 compound AI systems:一个真实 agent / RAG / language program 往往不是单次 LLM call,而是多个 language modules、retriever、tool、control flow 组合起来的系统。这样的系统每跑一次,成本可能来自多轮推理、检索、工具调用、代码编译、benchmark evaluation。

RLVR/GRPO 的强项是可以用可验证 reward 训练模型权重,但它的典型使用方式需要大量 rollouts。论文认为,这在复杂工具链里会很贵,而且会丢掉“为什么错”的信息。比如代码任务里 compiler error、profiling log;检索任务里 missing document;instruction following 里没满足哪些约束;privacy delegation 里 quality 和 PII leakage 的分项。这些都比一个最终标量更接近人类 debugging 时真正用的信息。

作者阵容为什么值得注意

作者来自 UC Berkeley、Stanford、Notre Dame、Databricks、MIT 等机构。名单里有 Matei Zaharia、Ion Stoica、Dan Klein、Omar Khattab、Christopher Potts、Alexandros G. Dimakis 等熟悉系统、NLP、DSPy / language program 生态的人。这个背景解释了为什么论文不是只做 prompt trick,而是把 GEPA 写成“系统优化器”:它要优化的是一个带模块、反馈、预算和候选池的 AI workflow。

本文真正解决的痛点
  • rollout 昂贵时,不能靠 24k、100k 次试错硬堆。
  • 闭源强模型无法 finetune 权重,但可以改 prompt。
  • compound system 的错误往往是模块级的,需要可解释 credit assignment。
  • 只追全局最好 prompt 容易早早掉进 local optimum。
GEPA 的路线
  • 把系统执行过程序列化成自然语言 trace。
  • 把 evaluator 的文本诊断抽成 feedback function \(\mu_f\)。
  • 让 reflection LM 改写某个模块 prompt。
  • 用 Pareto selection 保留不同训练实例上的“赢家策略”。
数学表示及建模

GEPA 先把 prompt optimizer、RL finetuning 和 compound system 放进同一个目标函数。

论文定义 compound AI system 为 \(\Phi=(M,C,\mathcal{X},\mathcal{Y})\)。其中 \(M=\langle M_1,\ldots,M_{|M|}\rangle\) 是 language modules,\(C\) 是控制流,\(\mathcal{X},\mathcal{Y}\) 是系统输入输出 schema。每个模块 \(M_i=(\pi_i,\theta_i,\mathcal{X}_i,\mathcal{Y}_i)\),其中 \(\pi_i\) 是 prompt / instruction / demos,\(\theta_i\) 是底层模型权重。

$$\langle \Pi^*,\Theta^* \rangle_\Phi = \arg\max_{\langle \Pi,\Theta\rangle_\Phi} \mathbb{E}_{(x,m)\sim \mathcal{T}} \left[ \mu\big(\Phi(x;\langle \Pi,\Theta\rangle_\Phi),m\big) \right]$$

这个写法故意同时允许优化 prompts \(\Pi_\Phi=\langle\pi_1,\ldots,\pi_{|M|}\rangle\) 和 weights \(\Theta_\Phi=\langle\theta_1,\ldots,\theta_{|M|}\rangle\)。这样 GEPA 与 GRPO 才能在同一个“系统优化”问题下比较:GRPO 主要走 \(\Theta\) 的权重更新;GEPA 固定 \(\Theta_\Phi\),只演化 \(\Pi_\Phi\)。

预算约束

现实问题是 rollout 有预算 \(B\):每次 rollout 是一次系统执行加评价。论文把 sample-efficient optimization 写成:

$$\langle \Pi^*,\Theta^* \rangle_\Phi = \arg\max_{\langle \Pi,\Theta\rangle_\Phi} \mathbb{E}_{(x,m)\sim \mathcal{T}} \left[\mu\big(\Phi(x;\langle \Pi,\Theta\rangle_\Phi),m\big)\right], \quad \text{s.t.}\quad \#\mathrm{rollouts}\le B.$$

反馈函数 \(\mu_f\):GEPA 的“语言梯度”入口

普通 metric \(\mu\) 只输出分数;GEPA 需要的是 \(\mu_f\),它返回分数和文本反馈:

$$\mu_f(\Phi,x,m,\mathrm{trace}) \rightarrow \big(s,\ \mathrm{feedback\_text},\ \mathrm{module\_level\_signals}\big).$$

这里的 \(\mathrm{feedback\_text}\) 可以来自 evaluator 的自然语言解释,也可以来自程序环境的错误信息、检索任务中的 missing documents、rubric 中未满足的 constraints、或多个子指标的 breakdown。我的理解是:GEPA 的效率很大程度来自它没有把这些结构化诊断“压扁”。

算法流程 / 方法

GEPA = reflective mutation + genetic ancestry + Pareto-based illumination。

GEPA optimizer overview diagram
论文中的 GEPA overview:每轮从候选池中选候选,通过 reflective prompt mutation 或 system-aware merge 提出新候选,先在 minibatch 上测,若提升再进入 Pareto 评估。图本身只说明优化流程,不直接证明实验效果。

主循环

输入:系统 Φ、训练集 D_train、metric μ、feedback function μ_f、预算 B
拆分:D_feedback 用于产生反思信号;D_pareto 用于候选选择
初始化:候选池 P = [Φ],记录每个候选在 D_pareto 上的分数 S

while 预算未耗尽:
  1. SelectCandidate(P, S): 从 Pareto front 中抽一个候选 Φ_k
  2. SelectModule(Φ_k): 选一个要更新的模块 prompt π_j
  3. 在 D_feedback 采样 minibatch,运行 Φ_k,收集 trace、score、feedback
  4. reflection LM 读取当前 prompt + I/O trace + feedback,生成新 prompt π'_j
  5. 得到新系统 Φ',在同一 minibatch 比较更新前后分数
  6. 若 Φ' 更好:加入候选池,并在 D_pareto 上评估记录

输出:在 D_pareto 上平均分最高的候选 Φ*

Pareto candidate selection

如果每次只选择全局平均分最高的候选继续变异,就很容易陷入“一个局部策略已经不错,但再也改不动”的状态。GEPA 的选择策略改成按实例保留赢家:

$$s_i^*=\max_k S_{\mathcal{P}[k]}[i],\qquad \mathcal{P}^*[i]=\{\mathcal{P}[k]\mid S_{\mathcal{P}[k]}[i]=s_i^*\}.$$

然后把每个训练实例上的赢家合并成候选集合,删除被严格支配的候选。设 \(f[\Phi]\) 是候选 \(\Phi\) 在多少个实例上处于 non-dominated Pareto winner,GEPA 按 \(f[\Phi]\) 成比例采样下一轮要演化的候选。

1. 不只看平均分
某个 prompt 可能只擅长一类题,但那类题的策略值得保留。
2. 删除被支配候选
如果候选 A 的赢家覆盖被 B 包含,A 就没有继续占预算的价值。
3. 按胜场频率采样
既保留多样性,又把预算集中到有 evidence 的候选。

System-aware Merge

GEPA+Merge 是 crossover:如果两个候选来自共同祖先,但分别优化了不同模块,且都优于祖先,那么可以把它们的模块级 prompt 组合成一个新候选。这个策略很像把两个分支上学到的互补经验合并。论文也承认 Merge 的收益依赖时机和预算分配:GPT-4.1 Mini 上更有帮助,Qwen3 8B 上固定超参会导致部分退化。

Reflection meta-prompt 的本质

附录里的 meta-prompt 并不神秘:它让反思模型看到当前 instruction、若干输入输出和 feedback,并要求它输出新的 instruction。重要的是它明确要求把 minibatch 中暴露的 niche/domain-specific information 和可泛化策略写进新指令。换句话说,GEPA 在做一种“把局部失败经验编译成未来可执行规则”的过程。

实验方法与复现细节

实验覆盖 6 个任务、2 类模型、4 组优化器,并把 rollout budget 尽量对齐。

实验使用标准 train / validation / test split。优化器可以访问 train 的文本和标签;可以监控 validation 分数用于候选选择或 early stopping,但不能直接读取 validation 内容;test 完全 held-out,只在优化后评估。

Benchmark 任务类型 系统 / module 形态 Feedback function 例子 Split
HotpotQA Wikipedia multi-hop QA 修改版 HoVerMultiHop,最后一跳回答问题 提示每阶段还有哪些 relevant docs 未检索 150 / 300 / 300
IFBench 精确指令与输出约束遵循 两阶段:先回答,再 rewrite 以满足 constraints 描述哪些 constraints 满足 / 未满足 150 / 300 / 294
AIME-2025 数学竞赛题 单步 Chain-of-Thought system 基于最终答案格式和正确性 AIME 2022-2024 训练/验证;AIME-2025 测试并重复采样
LiveBench-Math 持续更新数学题 单步 Chain-of-Thought system 数学答案评价 368 题随机等分
HoVer open-domain multi-hop fact verification 最多 3-hop retrieval,query writer 与 summary modules 已检索正确文档 + 仍缺失文档 150 / 300 / 300
PUPA / PAPILLON 隐私保护 delegation trusted rewriter + untrusted model + response rewriter response quality 与 PII leakage breakdown 111 / 111 / 221

模型和推理设置

Qwen3 8B

开源实验和 GRPO 对比使用 Qwen3-8B。论文按官方建议使用 temperature \(0.6\)、top-p \(0.95\)、top-k \(20\),训练和推理一致。

GPT-4.1 Mini

商业闭源模型实验使用 openai/gpt-4.1-mini-2025-04-14,temperature \(1.0\)。所有模型推理 context window 设为最多 16384 tokens。

优化器配置

  • Baseline:不做优化,直接评估初始系统。
  • MIPROv2:DSPy 生态里的 instruction + few-shot optimizer;论文使用 auto=heavy,每模块 18 个 instruction candidates 和 18 组 few-shot sets。
  • Trace / TextGrad:用 Trace 框架实现,同架构、同 initial prompt、同数据,并给它们同样的 metric 与 feedback functions;但 Trace 不支持 GEPA 那种 per-module feedback。
  • GRPO:compound system 训练使用 LoRA,500 training steps,总计 24,000 rollouts;另在 HoVer 单模块设置里补充 full-parameter finetuning 对比。
  • GEPA / GEPA+Merge:minibatch size 为 3;启用 merge 时最多调用 5 次;\(D_\mathrm{feedback}\) 是训练集,\(D_\mathrm{pareto}\) 是验证集。为了和 MIPROv2 公平比较,GEPA 的 rollout budget 按每个 benchmark 对齐 MIPROv2,预算差异控制在约 10.15% 内。
复现实操提醒:论文主实验不是只跑 GitHub README 里的 20 行 quickstart 就能复现;quickstart 能复现 GEPA API 的使用方式,主表还需要 benchmark 数据、compound system 实现、feedback functions、GRPO/MIPRO/Trace baselines 和预算控制。公开 repo 和 artifact 是复现起点,但论文级复现仍然是一个完整实验工程。
实验结果及核心结论

主要结果:GEPA 在 sample efficiency、闭源模型可用性、prompt 长度和跨模型迁移上同时占优。

Qwen3 8B:GEPA 对 GRPO 的核心对比

Qwen3 8B HotpotQA IFBench HoVer PUPA AIME-2025 LiveBench-Math Aggregate Improvement
Baseline 42.33 36.90 35.33 80.82 27.33 48.70 45.23 --
GRPO 43.33 35.88 38.67 86.66 38.00 51.26 48.91 +3.68
MIPROv2 55.33 36.22 47.33 81.55 20.00 46.60 47.84 +2.61
GEPA 62.33 38.61 52.33 91.85 32.00 51.95 54.85 +9.62
GEPA+Merge 64.33 28.23 51.67 86.26 32.00 51.95 52.40 +7.17
GEPA(+Merge) total rollouts 6871 3593 7051 2426 1839 1839 3936 --
GRPO total rollouts 24000 24000 24000 24000 24000 24000 24000 --

这张表支持一个强结论:在 Qwen3 8B 上,GEPA aggregate 54.85,高于 GRPO 48.91;除 AIME-2025 外,GEPA 在另外 5 个任务上超过 GRPO。注意 AIME 是重要例外:这里 GRPO 38.00 明显高于 GEPA 32.00,说明数学题权重更新仍然很强,不能把结论泛化成“prompt evolution 永远胜过 RL”。

HotpotQA Qwen3 8B rollout versus score curve
HotpotQA / Qwen3 8B 的 rollout-score 曲线:图中显示 GEPA 比 GRPO 与 MIPROv2 更快达到更高验证/测试表现。该图只对 HotpotQA 这一任务作证。
IFBench Qwen3 8B rollout versus score curve
IFBench / Qwen3 8B 的 rollout-score 曲线:图中显示 prompt optimizers 较快提升,GEPA 的 test-set star 高于 GRPO。该图只对 IFBench 这一任务作证。

GPT-4.1 Mini:GEPA 对 prompt optimizers 的闭源模型对比

GPT-4.1 Mini HotpotQA IFBench HoVer PUPA AIME-2025 LiveBench-Math Aggregate Improvement
Baseline 38.00 47.79 46.33 78.57 49.33 58.20 53.03 --
Trace (OptoPrime) 60.33 51.19 46.00 74.18 45.33 60.74 56.30 +3.27
MIPROv2-No-Demos 38.00 52.04 51.33 91.85 48.67 60.97 57.14 +4.11
MIPROv2 58.00 49.15 48.33 83.37 51.33 61.84 58.67 +5.64
TextGrad 62.33 48.64 47.67 85.68 46.67 63.84 59.14 +6.11
GEPA 69.00 52.72 51.67 94.47 59.33 64.13 65.22 +12.19
GEPA+Merge 65.67 55.95 56.67 96.46 59.33 64.13 66.36 +13.33
GEPA-Qwen-Opt 65.67 49.83 54.67 90.05 52.67 59.31 62.03 +9.00

闭源模型这里不能和 GRPO 做同类权重训练比较,因此主问题变成:同样是 prompt optimizer,GEPA 是否优于 MIPROv2 / TextGrad / Trace。表格显示 GEPA+Merge 的 aggregate improvement 为 +13.33,而 MIPROv2 为 +5.64,TextGrad 为 +6.11。更有意思的是 GEPA-Qwen-Opt:用 Qwen3-8B 优化出的 prompt 直接迁移到 GPT-4.1 Mini,aggregate 仍有 +9.00,超过直接在 GPT-4.1 Mini 上优化的 MIPROv2、Trace、TextGrad。

Final optimizer performance on GPT-4.1 Mini
GPT-4.1 Mini 上各 optimizer 的最终测试表现。图展示 aggregate 与部分任务维度的条形对比,不展示 rollout 曲线。
Final optimizer performance on Qwen3 8B
Qwen3 8B 上各 optimizer 的最终测试表现。图中 AIME/LiveBench 未在该缩略图中完整显示,因此完整六任务数值以上方主表为准。

Pareto selection ablation:不是所有“反思变异”都一样

Qwen3 8B 四任务 ablation HotpotQA IFBench HoVer PUPA Aggregate Improvement
Baseline 42.33 36.90 35.33 80.82 48.84 --
SelectBestCandidate 58.33 30.44 45.33 85.45 54.89 +6.05
BeamSearch 57.33 36.39 41.00 81.08 53.95 +5.11
GEPA Pareto 62.33 38.61 52.33 91.85 61.28 +12.44

这个 ablation 对理解论文非常关键:如果只是让 LLM 反思并一直改当前 best candidate,确实也能提升,但远不如 Pareto-based candidate selection。这说明 GEPA 的主要贡献不是“用 LLM 改 prompt”这么简单,而是把 prompt evolution 的搜索轨迹设计得不容易早熟收敛。

GEPA iterative refinement visualization on PUPA
PUPA 任务上的 GEPA prompt evolution 子树:图中标注了从 seed prompt 到更高分 candidate 的若干 prompt-level 策略变化。它支持“prompt 会逐步累积任务特定规则”的定性解释,但不单独证明 GEPA 在所有任务上更好。

Prompt 长度与成本

论文还强调 instruction-optimized prompts 往往比 few-shot demonstration prompts 短。主文写到 GEPA / GEPA+Merge 的 prompts 最多可比 MIPROv2 短 \(9.2\times\)。这很重要:MIPROv2 优化 demos 可能提升效果,但运行时 input tokens 更长;GEPA 把经验压成 instruction,运行成本、延迟和服务吞吐会更友好。

Aggregate performance versus prompt token count on GPT-4.1 Mini
GPT-4.1 Mini 上 performance 与 prompt token count 的关系:图显示 GEPA / GEPA+Merge 同时处于更高分、更短 prompt 区域;MIPROv2 prompt token count 明显更大。

One More Thing:GEPA 不止能优化 prompt

扩展实验把 GEPA 当 inference-time search:令 \(D_\mathrm{train}=D_\mathrm{pareto}\),允许优化器“过拟合”一组待解问题,并把一个任务中学到的失败经验迁移到其他任务。论文在 NPUEval 和 KernelBench 上做了初步代码生成实验。

NPUEval vector utilization results with GPT-4o
NPUEval / GPT-4o 的 mean vector utilization 对比:图中显示 Sequential10 为 4.25%,加入 RAG 和 MIPROv2 分别提升,GEPA Pareto 达到 30.52%。该图只支持 NPU kernel 生成这个扩展实验。
我的评论

这是一篇很值得重视的论文:它把“prompt 是程序”这件事做成了可比较的优化算法。

我认为最强的地方
  • 信号利用效率高:GEPA 没有浪费 evaluator 和系统 trace 里的文本诊断,这对 agent / tool-use / code / RAG 特别自然。
  • 方法闭环完整:不是单次 reflection,而是 candidate pool、ancestry、Pareto selection、minibatch accept、validation selection 的完整 optimizer。
  • 对闭源模型现实:很多最强模型不能训练权重,GEPA 这种外部 prompt-space optimizer 更符合实际部署。
  • 实验覆盖有说服力:任务包括数学、检索、多跳问答、指令遵循、隐私 delegation;baseline 也覆盖 GRPO、MIPROv2、Trace、TextGrad。
我会追问的地方
  • 反馈函数是核心依赖:GEPA 最强时往往需要高质量 textual feedback。低诊断、低可解释环境下优势会缩小多少?
  • GRPO 对比仍有调参边界:论文用了 LoRA GRPO 和部分 full finetune 补充,但 RL baseline 的最佳调参空间很大。
  • 统计稳定性:主表非常清楚,但我仍希望看到更多 seed / confidence interval,尤其是 prompt evolution 搜索可能受采样路径影响。
  • validation 使用是重要杠杆:GEPA 大量 budget 花在 \(D_\mathrm{pareto}\) 评分上。它确实不读取 validation 内容,但 validation 子集大小、动态采样策略会显著影响效率。

我对“GEPA vs RL”的真实判断

这篇论文最有价值的读法不是“GEPA 要替代 RL”,而是:当任务反馈能被语言解释、rollout 很贵、系统由多个模块组成、模型权重不可训练或不值得训练时,GEPA 应该成为第一优先级的优化层。它很适合做快速适配、prompt / tool description / agent architecture 的低成本搜索;如果后续还需要权重层面的泛化或压缩,再把 GEPA 产出的策略、轨迹和优质样本喂给 RL / SFT,可能是更自然的组合。

对我们做 skill / paper2html 的启发

GEPA 本质上在做一件和“沉淀 skill”非常接近的事:把一批具体失败案例和反馈,压缩成未来可执行的自然语言程序。区别在于它有自动化评估函数和 Pareto selection,所以能系统地筛选哪些经验值得保留。这个思想可以反过来指导我们的工作流:每次生成论文 HTML 后,不只记“哪里错了”,还要把错误绑定到证据类型、检查脚本和模板规则,让下一篇自动规避。

我给这篇的定位:GEPA 是 2026 年 prompt optimization / self-evolving agent 方向里非常核心的一篇。它把 reflection 从“模型自言自语”推进为“可复现实验设置下的优化算子”,也把 prompt engineering 从手工经验推进到带预算、候选池和选择策略的 search problem。
Reference / Evidence

公开证据来源

arXiv abstract: GEPA: Reflective Prompt Evolution Can Outperform Reinforcement Learning

用于确认标题、作者、v2 时间、ICLR 2026 Oral 状态、摘要主张和公开代码链接。

arXiv PDF

用于阅读主文、算法、实验设置、表格、图和附录。

arXiv source package

用于核对 TeX 中的表格、caption、算法和附录内容;页面不暴露本地源码路径。

GEPA GitHub repository

用于确认公开实现、quickstart、API、adapter 与文档入口。

GEPA public documentation

用于确认项目公开文档入口和使用路线。

GEPA artifact repository

公开 README 指向的实验复现 artifact 入口;用于后续更完整复现实验。