论文
Prompt 优化
★ 必读
GEPA: Reflective Prompt Evolution Can Outperform Reinforcement Learning
GEPA:反思式 Prompt 进化胜过强化学习
Lakshya A Agrawal, Shangyin Tan, Dilara Soylu, Noah Ziems, et al. (17 authors incl. Omar Khattab, Matei Zaharia) · UC Berkeley / Databricks (DSPy 团队) · arXiv · 2025-07 · 被引 334
一句话把 prompt 当可学习参数,用 LLM 对执行轨迹做自然语言反思 + 遗传-Pareto 进化搜索来优化整个 AI 系统:六个任务上平均比 GRPO 高约 6%(最高 20%),rollout 最多省 35 倍,比 MIPROv2 的聚合增益翻倍;ICLR 2026 poster,repo 6.3k star,已被 DSPy/MLflow/Google ADK 等官方集成,是 2025 年后 prompt 优化的事实标杆。
这是什么
把 LLM 系统适配到下游任务,主流做法是 RLVR(以 GRPO 为代表):把任务成功与否压成一个标量 reward 去估计策略梯度,动辄需要几千到几十万次 rollout,而且要求能改模型权重。GEPA 的出发点是:一次 rollout 里其实全是自然语言——每个模块的指令、推理链、工具调用、甚至评测器内部的编译报错——把这些信息压成一个 0/1 分数再学,浪费太大。让 LLM 直接'读'完整轨迹、用语言反思失败原因并改写 prompt,单次 rollout 能榨出的学习信号远多于一个标量。
GEPA(Genetic-Pareto)就是这样一个 prompt 优化器:对任何包含一个或多个 LLM prompt 的复合系统(compound AI system),冻结模型权重,只进化 prompt 集合。它由 DSPy 团队出品(UC Berkeley/Stanford/Databricks/MIT,17 位作者含 Omar Khattab、Matei Zaharia、Ion Stoica、Dan Klein),2025-07 挂 arXiv,后被 ICLR 2026 接收为 poster。
工程上它已经从论文代码长成独立库 gepa-ai/gepa(MIT,6.3k star,持续维护):DSPy 里是 dspy.GEPA,MLflow 的 optimize_prompts()、Google ADK 的 adk optimize、Comet Opik、Pydantic AI 都以它为核心;README 列了 50+ 生产使用案例(Databricks、Nubank、Shopify 等)。后续 repo 还扩展出 optimize_anything API(优化代码、agent 架构、配置等任意文本参数),但那是论文之后的演化,论文本身只覆盖 prompt 优化与两个初步扩展实验。
论文主图之一:HotpotQA 上 Qwen3-8B 的分数-rollout 曲线。GEPA(蓝)在约 2000 rollouts 内冲到 59+,GRPO(橙)烧满 24,000 rollouts 停在 52.4,MIPROv2(绿)早早饱和在 57.7;星形是各自最优 prompt 的测试集分数(GEPA 62.3 vs GRPO 43.3)。注意 GRPO 测试集星点远低于其验证曲线,泛化差距明显。机制与做法
遗传进化主循环
维护一个候选池(candidate = 系统全部 prompt 的一份具体取值),从种子 prompt 出发迭代:每轮选一个候选,在训练集的小 minibatch 上跑 rollout,提出变异版本;若 minibatch 分数提升,才在更大的 D_pareto 集上全量评估并入池,同时记录父子关系形成进化树。预算耗尽后返回 D_pareto 上聚合分最高的候选。子代继承祖先积累的'教训',所以知识沿进化树累积。
GPT-4.1 Mini 上四个任务 + 聚合的柱状对比:GEPA(67.0)与 GEPA+Merge(68.7)全面压过 MIPROv2(59.7)和 baseline(52.7),PUPA 上被推到 94.5/96.5。这张图对应'闭源 API 模型无法微调、只能优化 prompt'的典型场景。反思式变异与 feedback function
变异不是随机扰动:GEPA 按 round-robin 选一个模块,把(当前 prompt、完整执行轨迹、分数、文本反馈)交给一个 reflection LM,让它做隐式 credit assignment——把成败归因到 prompt 的具体表述上,然后改写出新指令。
论文的一个关键概念是把评测器从标量 reward μ 扩展成 feedback function μ_f:除了分数还返回 feedback_text,即评测过程中产生的文本轨迹(编译错误、没通过的 rubric、每一 hop 缺失的检索文档、聚合指标的分项拆解等)。这相当于文本空间的'梯度',repo 里称为 Actionable Side Information。反馈质量直接决定 GEPA 的效率——这也是后来第三方争论的焦点(见核查)。
回应'GRPO 用 LoRA 不公平'质疑的补充实验:HoVer 上 GEPA vs GRPO 全参数微调。GRPO-FFT 24,000 rollouts 验证分爬到约 36,GEPA 约 6000 rollouts 到 46+;注意左右双 y 轴(左为验证分、右为测试分),橙色星是 GRPO-FFT 的测试分(约 41)。Pareto-based 候选选择:避免贪心陷入局部最优
如果每轮都选当前总分最高的候选去变异,优化很快卡死:找到一个强势策略后再也改不动,预算全部烧在一个节点上。GEPA 改为按训练实例维护 Pareto 前沿:凡在至少一个实例上拿到全场最好分的候选都保留,剔除被严格支配的,再按'称霸实例数'加权随机采样。这样每个'在某类题上赢过'的策略都有机会被继续进化。
消融显示这是关键设计:Pareto 采样比 SelectBestCandidate(TextGrad 的策略)聚合高 +6.4%,比 BeamSearch(APO 的策略)高 +7.33%,单任务最大差 11.33%。
GEPA 当推理时搜索用:KernelBench 35 个代表性任务上,GPT-4o 生成 CUDA kernel 的 fast_p 分数随搜索预算增长,fast_1(严格快于 PyTorch-eager 的任务占比)从 0 升到约 23%,fast_0.5 到约 51%。说明同一套反思-进化循环也能做 per-task 的解搜索,是后来 optimize_anything 的雏形。Merge 与两个扩展玩法
GEPA+Merge 是 system-aware 的 crossover:从进化树上找出学到互补策略的两条独立谱系,按模块各取最优拼成新候选。对 GPT-4.1 mini 收益明显(聚合 +13.33% vs GEPA +12.19%),但同一套超参在 Qwen3-8B 上反而掉分(IFBench 28.23 低于 baseline 36.90),何时调用 merge、预算怎么分作者承认还没解决。
两个附带实验:(1) 推理时搜索——把要解的任务集直接当训练集'过拟合',在 KernelBench 上把 GPT-4o 的 fast_1(生成比 PyTorch-eager 快的 CUDA kernel 比例)从接近 0 提到 20%+,NPUEval 上平均向量利用率 4.25%→30.52%;(2) 反向奖励做对抗 prompt 搜索,找到一条通用干扰指令把 GPT-5 Mini 在 AIME-2025 的 pass@1 从 76% 打到 10%。
关键结果
- Qwen3-8B 六任务聚合:baseline 45.23 → GEPA 54.85(+9.62),而 GRPO 用满 24,000 rollouts 只有 +3.68,MIPROv2 +2.61;GEPA 每任务总预算 1839–7051 rollouts。
- 样本效率:IFBench 上 GEPA 用 678 rollouts 找到的 prompt(38.61%)超过 GRPO 24,000 rollouts 的最终分(35.88%),即 35x;只算达到 GRPO 最佳验证分,最快 243 rollouts(最高 78x);若只计训练集 rollout(大头其实花在验证集打分上),79–737 次就到最优。
- GPT-4.1 mini 六任务:GEPA +12.19、GEPA+Merge +13.33,对比 MIPROv2 +5.64、TextGrad +6.11、Trace(OptoPrime) +3.27;AIME-2025 从 49.33 提到 59.33(+10pp)。
- 不是全赢:Qwen3-8B 的 AIME-2025 上 GRPO(38.00)明显胜过 GEPA(32.00),MIPROv2 甚至比 baseline 还低(20.00 vs 27.33);GEPA 六任务赢 GRPO 五个。
- GEPA 优化出的是纯指令 prompt,比 MIPROv2 的 few-shot 拼接短最多 9.2 倍,且性能越好的优化器产出的 prompt 越短。
- 跨模型迁移:用 Qwen3-8B 优化的 prompt 原样搬到 GPT-4.1-mini,聚合 +9.00(HotpotQA 单项 +27.67),超过直接在 GPT-4.1-mini 上跑的 MIPROv2/TextGrad/Trace。
- 成本:GPT-4.1 mini 全部实验 500 美元以内,其中 GEPA 本身只花 86 美元(附录 Costs 一节)。
实证核查
扎实代码、复现 artifact(含全部实验日志)齐全,ICLR 2026 接收,被大量第三方在生产中复用和集成,核心结论成立;但'35x 胜过 RL'有边界条件(GRPO 用 LoRA、固定 24k 预算、AIME 上其实输给 GRPO),小规模任务上单次复现收益波动大,且有独立评测认为收益主要来自反馈工程而非其搜索机制。
论文:GEPA 比 GRPO 平均高 6%、最高 20%,rollout 少至 1/35。
源码表格(source/assets/table_main_qwen.tex)显示 35x 是 IFBench 单点:GEPA 678 rollouts 超过 GRPO 24,000 rollouts 的最终分;按每任务总预算算是 1839–7051 vs 24,000(约 3.4–13x)。GRPO 用的是 LoRA(论文脚注承认,仅在 HoVer 上补做 full finetune 对照,结论类似),预算固定 24k 步且 8B 小模型。此外 AIME-2025 上 GRPO 38.00 > GEPA 32.00,六任务赢五个——'可以胜过 RL'的表述准确,但不是处处碾压。
官方与教程宣传的单点增益(如 AIME 46.6%→56.6%、Qwen3-8B 明显提升)。
官方发布了完整复现仓库 gepa-ai/gepa-artifact(含每个实验的代码状态和执行日志)。但 issue #115 有人逐行照抄 AIME 教程只复现出 +3.3pp(50%→53.3%),维护者归因于 n=150 下 ±8pp 的统计噪声与 temperature=1 采样;issue #388 有人在 Qwen3-8B 上优化前后 53 vs 53 零提升,官方仅回复'去看 artifact'后关闭。核心趋势可复现,单点数字波动大,勿把 README 的最好情形当期望值。
GEPA 的遗传进化 + Pareto 选择 + merge 机制是其超越其他优化器的关键。
Arize 的独立基准(arize.com/blog/gepa-vs-prompt-learning-benchmarking-different-prompt-optimization-approaches/)在 GEPA 论文同款四个 benchmark(HotpotQA/HoVer/PUPA/IFBench)上,用没有遗传/Pareto/merge 的简单反馈循环 Prompt Learning,以更少 rollouts 拿到相近或更好成绩(落后的场合差距约 2%),结论是收益大头来自 eval/反馈信息的维度而非搜索机制。论文自己的消融(Pareto vs SelectBest +6.4%)与此并不矛盾——机制有用,但反馈质量可能更重要。
repo 是成熟可用的优化库(6.3k star,官方集成众多)。
集成可点验为真(DSPy dspy.GEPA、MLflow optimize_prompts、Google ADK adk optimize 均有官方文档),维护活跃(2026-08 仍在 push)。但库本身出过影响结果正确性的 bug:issue #424 评测缓存把 trainset rollout 的分数悄悄充当 valset 分数(已在 #425 修复)、#428 full-val 评估错误强制 capture_traces(已修复)、#440(open)refiner 的分数被记到未 refine 的候选头上。用旧版本跑出的分数需留个心眼,升级到最新版再复现。
README 罗列 50+ 生产使用与'90x cheaper'(Databricks)等战绩。
抽查多数条目有真实出处:Databricks 90x cheaper 是其官方博客(开源模型+GEPA 打平 Claude Opus 4.1 的企业 agent 任务)、Nubank 客服 judge 优化(arXiv:2606.08867,E2 准确率 68.88%→88.89%)、Microsoft MAI-Thinking-1 预训练数据过滤等。注意 Databricks 是共同作者所在公司,Shopify CEO 推文属背书而非评测;独立学术引用(S2 计 334,OpenReview 显示 483)和 ICLR 2026 poster 接收(iclr.cc/virtual/2026/poster/10009493)是更硬的信号。
与我们方向的关系
对 ai4ai 方向这是必读的基线工作:它把'用 LLM 反思代替标量梯度'从 trick 做成了有明确算法框架(进化树 + per-instance Pareto 前沿)且被工业界大规模验证的方法,后续大量工作(各种 agent skill 学习、rubric 进化、MAS 优化)都以它为 inner loop 或对照。做 prompt/agent 自动优化的实验,GEPA 和 MIPROv2 是绕不开的两个 baseline,直接用 dspy.GEPA 或 pip install gepa 即可。
可借鉴的三个点:(1) feedback function 的设计思想——把评测器内部的文本轨迹(报错、rubric 逐条判定、分项分数)喂回优化器,比只给标量高效得多,这对我们自己搭 eval pipeline 是通用教训;(2) per-instance Pareto 选择是对付'贪心优化卡死在局部最优'的轻量解法,可以移植到任何候选搜索场景;(3) 它和 RL 是互补而非替代:论文与 BetterTogether 的立场是先用 GEPA 便宜地吃掉 prompt 空间的收益,再决定要不要上权重训练——预算紧、rollout 贵、只有 API 权限时先跑 GEPA。
阅读笔记
实践坑:GEPA 大部分 rollout 预算花在 D_pareto 验证打分上(论文承认,建议缩小验证集);merge 超参对小模型不友好(Qwen IFBench 掉分 8pp+);reflection LM 要用强模型(官方教程 task LM 用 4.1-mini、reflection 用 GPT-5),弱模型反思质量不够;DSPy 默认缓存 LM 调用会'锁定'结果,复现对比时记得换 rollout_id 或关缓存。README 里 optimize_anything、agent skill、ARC-AGI 32%→89% 等是 2026 年 repo 演化出的新东西,别当成论文结论引用。
材料清单
TeX 源码已存档:Raw/gepa/source/
同类条目