一、一句话概述
GEPA 提出了一种面向 LLM workflow 和 agent 的提示词优化方法:它不更新模型权重,而是让模型阅读自己的执行轨迹、错误反馈和评分结果,用自然语言反思出新的 prompt,并通过 Pareto frontier 保留多条有潜力的进化路线。
论文最核心的结论是:在 6 个任务上,GEPA 在 Qwen3-8B 上平均比 GRPO 高6%,最多高20%,同时 rollout 数量最多少35 倍;在 GPT-4.1 Mini 上,它也明显超过 MIPROv2、TextGrad 和 Trace 等 prompt optimizer。
GEPA rollout 学习曲线
图1:GEPA 在 HotpotQA 和 IFBench 上用更少 rollouts 快速提升分数。橙色 GRPO 需要 24,000 次 rollout,蓝色 GEPA 在早期就明显超过基线和 MIPROv2。
二、研究背景与动机
今天很多 AI 应用已经不是“单次问答”了,而是由多个 LLM module、检索器、代码执行器、工具调用和控制流组成的 compound AI system。比如一个多跳问答系统可能先生成检索 query,再总结证据,再继续第二跳检索,最后合成答案。每个模块都有自己的 prompt,也会产生中间推理、工具调用和环境反馈。
传统做法之一是 RLVR,也就是 Reinforcement Learning with Verifiable Rewards。像 GRPO 这类方法会把一次完整 rollout 的最终成功与失败压缩成标量 reward,再用它更新模型权重。这个思路很强,但也有两个现实门槛:第一,训练常常需要成千上万甚至更多 rollouts;第二,很多真实工作流调用工具很贵,甚至闭源大模型根本不能更新权重。
GEPA 的观察很朴素,但很关键:LLM 系统的 rollout 本身往往就是自然语言。系统 prompt、chain-of-thought、工具调用、编译错误、单元测试失败原因、评分 rubrics,这些信息在进入 RL 算法前可能被压缩成一个 0/1 或小数 reward,但对 LLM 来说,它们其实是可读、可解释、可归因的学习材料。
所以论文提出一个问题:既然语言模型擅长理解语言,为什么不直接让它从这些语言轨迹里学习规则,而一定要把 rich feedback 压成稀疏 reward 再做 policy gradient?
这就是 GEPA 的出发点。它把“优化 prompt”看成一个进化过程:每次从候选 prompt 中挑出一个或两个,根据 rollout 和反馈生成新 prompt;如果新 prompt 在 minibatch 上表现更好,就加入候选池;整个过程中不只追逐全局最高分,而是保留在不同样本上各自表现最好的候选,从而避免早早陷入局部最优。
三、核心方法详解
3.1 问题形式:优化 workflow 里的 prompt,而不是模型权重
论文把一个 compound AI system 记作Φ = (M, C, X, Y)。其中M是多个语言模块,C是控制流,X/Y是输入输出 schema。每个模块Mi包含 promptπi、模型权重θi、输入 schema 和输出 schema。
GEPA 的优化目标是提升系统整体指标μ,比如 exact match、F1、pass rate 或人工 rubric 分数。但和 GRPO 不同的是,GEPA 固定模型权重Θ,只优化 prompt 集合Π。换句话说,它更像一个“可解释的 workflow prompt compiler”,不是一个权重微调器。
3.2 总流程:反思变异 + 小批量验证 + 候选池进化
GEPA 总体流程
图2:GEPA 每轮从候选池中选择 prompt,执行 rollout,收集文本反馈,再通过 reflective prompt mutation 或 system-aware merge 产生新候选。
GEPA 的主循环可以拆成 5 步:
🧩第一步:初始化候选池
候选池P最开始只有一个 base system,也就是人工或默认 prompt 组成的原始工作流。
🧩第二步:选择候选和模块
GEPA 会从当前候选池中挑一个候选系统,再选择其中一个语言模块进行更新。论文实现里模块选择采用 round-robin 策略,保证不同模块都有机会被优化。
🧩第三步:执行 minibatch rollouts
系统在训练集的一个小批量上运行。GEPA 不只记录最终分数,还记录每个模块的输入、输出、推理轨迹、工具结果和评价器反馈。
🧩第四步:反思并改写 prompt
一个 reflection LM 会看到当前 prompt、执行轨迹、分数和 feedback text,然后判断失败或成功可能来自哪些 prompt 规则,并提出新的 prompt。
🧩第五步:只保留有效改动
新 prompt 先在 minibatch 上和父候选比较。如果分数提升,GEPA 才把它加入候选池,并在Dpareto上记录每个样本的得分,用于后续选择。
GEPA 算法伪代码
图3:左侧是 GEPA 主算法,右侧是 Pareto-based candidate selection。核心是记录每个候选在各个实例上的表现,而不是只看平均分。
3.3 反思变异:把“失败原因”变成“任务规则”
GEPA 最有意思的部分是 reflective prompt mutation。它不是简单让模型说“请优化这个 prompt”,而是把 rollout 过程里的语言证据作为诊断材料。
例如在代码任务里,环境可能先输出编译错误、运行错误、性能 profiling,再给出最终 reward。如果只看 reward,模型只知道“失败了”;如果看 evaluation trace,它能知道是 include 缺失、张量维度不匹配、CUDA kernel 边界条件错误,还是性能没有超过 baseline。
这种反馈对 prompt 优化非常有价值。GEPA 会把这些诊断信息提炼成高层规则,写回 prompt。它学到的不是某个样本的答案,而是“遇到这类输入时应该采用什么策略”。
GEPA 优化后的 prompt 示例
图4:HotpotQA 多跳问答中,GEPA 把原本一句话的 second-hop query prompt 扩展成带有任务理解、常见失败模式和操作策略的详细指令。
这个例子非常直观。种子 prompt 只有一句:“给定 question 和 summary_1,生成 query。”GEPA 优化后则明确告诉模型:第一跳文档通常只覆盖一个实体;第二跳要寻找与 summary 相关但未被第一跳覆盖的 broader entity 或 missing piece;不要只是改写原问题,也不要重复 summary 中已经有的信息。
这类 prompt 更像“从 trial and error 中总结出的工作指南”。它既不是 few-shot demo,也不是模型权重里的隐式参数,而是人类可读的策略记忆。
3.4 Pareto 选择:不要只盯着平均分最高的候选
如果每一轮都选择当前平均分最高的 prompt 来继续优化,搜索很容易卡住。一个 prompt 可能在大部分样本上不错,但它代表的是单一策略;继续沿这条路线微调,收益会迅速变小。
GEPA 的做法是维护 instance-wise Pareto frontier:对每个训练样本,记录哪些候选拿到了该样本的最高分。只要一个候选在某些样本上是“赢家”,它就值得被保留。后续采样时,GEPA 按候选在多少样本上领先来加权抽样。
Pareto 选择与贪心选择对比
图5:左侧 SelectBestCandidate 很快集中到一条路线并停滞;右侧 Pareto-based sampling 能保留更多分支,在同等预算下找到更高分候选。
这个设计的意义在于,它把 prompt 搜索从“爬一座山”变成“保留多个局部专长”。某个候选可能不一定平均分最高,但它解决了另一批样本上的关键失败模式。最终这些互补策略可以通过后续变异或 Merge 被整合进更稳健的 prompt。
3.5 System-aware Merge:把不同进化分支的优势拼起来
GEPA+Merge 进一步引入 system-aware crossover。对于多模块工作流,不同候选可能分别优化了不同模块,比如一个候选改好了检索 query 生成器,另一个候选改好了最终 answer synthesizer。
Merge 的思路是:比较两个候选在不同模块上的演化历史,尽量从各自更有贡献的分支中选择模块 prompt,合成新的候选系统。论文结果显示,这个策略在 GPT-4.1 Mini 上尤其有效,但在 Qwen3-8B 上并非总是提升,说明 mutation 和 merge 的预算分配仍需要更细的自适应策略。
四、数据集与任务设置
论文在 6 类任务上评估 GEPA:
📊HotpotQA:多跳问答,需要检索和组合多个证据。
📊HoVer:retrieval-augmented verification,需要判断 claim 是否被证据支持。
📊IFBench:instruction following,测试模型遵循复杂约束的能力。
📊PUPA:privacy-aware delegation,把用户私有请求改写成可发给外部 LLM 的隐私保护请求。
📊AIME-2025:数学竞赛题。
📊LiveBench-Math:数学推理任务。
模型设置包括开源的Qwen3-8B和闭源的GPT-4.1 Mini。对比方法包括 GRPO、MIPROv2、Trace/OptoPrime、TextGrad,以及 MIPROv2-No-Demos 等变体。
比较时需要注意一个细节:GEPA 和 MIPROv2 是 prompt optimization 方法,GRPO 是 weight-space RL 方法。论文的公平性来自统一用 rollout budget 和最终测试集表现衡量系统适应能力,而不是要求它们更新同一种参数。
五、实验与评估
5.1 Qwen3-8B:GEPA 用少得多的 rollout 超过 GRPO
| 方法 | 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 |
表1:Qwen3-8B 主结果。GEPA 在 5/6 个任务上超过 GRPO,aggregate improvement 达+9.62。AIME-2025 是例外,GRPO 的38.00高于 GEPA 的32.00。
样本效率是这里最值得关注的点。GRPO 每个任务使用24,000 rollouts;GEPA/GEPA+Merge 的总优化预算平均约3,936 rollouts,不同任务从1,839到7,051不等。论文进一步指出,如果只看 train rollouts,GEPA 到达最优测试表现只需要79 到 737次 train rollouts。
这说明 GEPA 的收益不是“多试几次 prompt”这么简单。它真正利用的是每次 rollout 中的自然语言轨迹,把单次失败转化成可迁移的指令规则。
5.2 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 | 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 |
表2:GPT-4.1 Mini 上的结果。GEPA+Merge 的 aggregate improvement 达+13.33,显著超过 MIPROv2、TextGrad 和 Trace。
这里有一个很重要的现象:GEPA-Qwen-Opt是在 Qwen3-8B 上优化出来的 prompt,然后不修改地迁移到 GPT-4.1 Mini 上评估,仍然取得+9.00的 aggregate improvement。它甚至超过了直接在 GPT-4.1 Mini 上优化的 MIPROv2、TextGrad 和 Trace。
这说明 GEPA 学到的东西不只是某个模型的“口味”,而是相当一部分任务级规则。比如多跳问答里第二跳 query 应该如何寻找缺失证据,隐私任务里哪些信息必须泛化,代码任务里如何根据编译错误更新策略。这些规则本身具有跨模型可迁移性。
5.3 候选选择消融:Pareto frontier 是关键模块
论文还固定进化框架,只替换下一步候选选择策略。结果显示,Pareto-based sampling 的 aggregate improvement 是+12.44,而 SelectBestCandidate 是+6.05,BeamSearch 是+5.11。
| 选择策略 | 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 |
表3:候选选择策略消融。只选择当前最优候选会快速陷入局部最优,Pareto-based sampling 更能保留互补策略。
这组消融很能说明 GEPA 的“遗传”部分不是装饰。反思负责产生高质量变异,Pareto frontier 负责让搜索空间保持多样性。没有后者,反思也可能围绕一个早期策略反复打磨,最后错过更好的路线。
六、案例与可解释性分析
PUPA 任务的演化轨迹很好地展示了 GEPA 如何逐步积累规则。起始 prompt 只是要求“把用户私有查询改写成保护隐私的外部 LLM 请求”。经过几轮反思后,prompt 逐渐加入了识别 PII、泛化名称和地点、区分 reasoning 与 request、禁止部分脱敏、保持任务实用性等细化规则。
PUPA prompt 演化轨迹
图6:PUPA 任务中,GEPA 从 base prompt 出发,经多次 reflective mutation 把隐私策略、输出结构和审计理由逐步写入 prompt。
这也是 GEPA 相比黑盒 RL 更容易被人理解的地方。它的“学习结果”不是一个权重 diff,而是一份可读 prompt。研究者可以打开中间节点,看到模型学到了什么规则,哪些规则带来了提升,哪些分支没有继续改进。
当然,这种可解释性也不是免费的。GEPA 需要一个足够强的 reflection LM 来读懂轨迹、归因错误并写出更好的指令。如果 reflection LM 本身能力弱,或者任务反馈几乎没有语言信息,GEPA 的优势会被削弱。
七、扩展实验:GEPA 也能做 inference-time search
论文还探索了 GEPA 在代码生成和硬件 kernel 优化中的用途。这里 GEPA 不只是“为未来任务优化 prompt”,而是把待解决的一批任务本身作为训练集和 Pareto 集,在推理时迭代寻找更好的解。
GEPA 在 kernel 生成中的扩展实验
图7:在 NPUEval 上,GEPA Pareto 的平均 vector utilization 达30.52%,高于 Sequential10 的4.25%、Sequential10+RAG 的16.33%和 Sequential10+RAG+MIPROv2 的19.03%;在 KernelBench 上,GEPA 让超过20%的代表性任务生成了快于 PyTorch eager 的 CUDA kernel。
在 AMD NPU kernel 任务中,普通 GPT-4o Sequential10 的平均 vector utilization 只有4.25%。加入 RAG 后提升到16.33%,再加入 MIPROv2 到19.03%。而 GEPA Pareto 达到30.52%,单个 GEPA 生成 prompt 也能达到26.85%,并且不需要 runtime RAG。
这个实验说明,GEPA 很适合那些“失败反馈富含语言信息”的场景。编译错误、profiling 结果、硬件文档片段都可以被当作反思材料。模型不是盲目重试代码,而是把错误转化为下一轮 prompt 中的工程约束。
八、总结
✅GEPA 的核心贡献是把 rollout 轨迹变成自然语言学习信号。它利用执行轨迹、评价器反馈和分数,让 LLM 反思失败原因并改写 prompt。
✅它优化的是 workflow prompt,而不是模型权重。这让 GEPA 可以直接用于闭源模型,也适合不能微调或微调成本高的应用。
✅Pareto-based candidate selection 是样本效率的关键。它保留在不同样本上各自领先的候选,避免贪心搜索过早陷入局部最优。
✅实验结果很强。Qwen3-8B 上 GEPA aggregate improvement 为+9.62,GPT-4.1 Mini 上 GEPA+Merge 达+13.33。
✅GEPA prompt 具备跨模型迁移性。在 Qwen3-8B 上优化出的 prompt 迁移到 GPT-4.1 Mini 仍有+9.00的整体提升。
✅它还有推理时搜索潜力。在 NPU/CUDA kernel 生成中,GEPA 能利用编译和性能反馈逐步改进代码生成策略。
九、不足与未来方向
9.1 当前不足
🔸GEPA 依赖可读的反馈信号。如果任务只有一个稀疏 reward,没有错误信息、rubric、轨迹或可解释评价过程,反思模块能利用的信息会少很多。
🔸reflection LM 的能力会影响上限。GEPA 假设 LLM 能从轨迹中做出合理归因。如果反思模型误判失败原因,它可能把错误规则写进 prompt。
🔸验证集 rollout 仍占较大预算。论文指出,GEPA 大量 rollout 用于候选选择时的 validation scoring,而不是直接产生学习信号。后续可以研究动态验证子集或更省的 candidate tracking。
🔸Merge 的收益不稳定。GEPA+Merge 在 GPT-4.1 Mini 上显著提升,但在 Qwen3-8B 上有时会退化。这说明 crossover 何时触发、如何分配预算、怎样判断分支互补性仍需系统研究。
🔸数学任务不是全面碾压 RL。在 Qwen3-8B 的 AIME-2025 上,GRPO 得到38.00,GEPA 是32.00。对于需要模型内部推理能力大幅迁移的任务,权重更新仍可能更有优势。
9.2 未来研究方向
🚀更智能的反馈函数μf:不同任务可以设计更细粒度的文字反馈,例如把单元测试失败、检索漏召、格式违规、事实错误分开归因。
🚀自适应 Pareto 与验证预算:动态选择验证样本,减少候选评估成本,让 GEPA 在更大规模 workflow 上运行。
🚀更强的模块级 credit assignment:当前模块选择较简单,未来可以根据轨迹自动判断哪一个 LLM module 最该被更新。
🚀与 RL 或 fine-tuning 结合:GEPA 可以先生成高质量 prompt 和可解释规则,再用这些规则构造数据或 reward shaping,辅助后续权重训练。
🚀面向生产系统的 prompt 版本管理:GEPA 的进化树天然适合记录 prompt 来源、修改理由和效果差异,未来可与 A/B testing、回滚、审计系统结合。
💡 延伸思考:GEPA 最值得借鉴的地方,不只是“prompt optimizer 又刷高了分数”,而是它把 LLM 系统优化从黑盒梯度更新拉回到语言空间。对真实业务里的 agent 和 workflow 来说,很多失败不是缺一个大模型,而是缺一套能从错误中沉淀规则、保留多条策略、持续演化 prompt 的机制。GEPA 给出的方向是:让模型不只回答问题,也学会阅读自己的工作日志,并把经验写成下一版操作手册。
学AI大模型的正确顺序,千万不要搞错了
🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!
有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!
就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋
📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇
学习路线:
✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经
以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!
我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~