本文面向需要评估 GEPA 是否值得引入 Agent 调优流程的工程读者,覆盖技术原理、评测表现、与现有方案的对比、落地路径与风险五部分。
调研结论先行
是什么:GEPA(Genetic-Pareto)是一套用 LLM 反思 + 进化搜索来自动优化提示的框架,把"读执行轨迹→诊断→改写提示"做成闭环,适用于任意可度量的文本参数(提示、代码、Agent 架构、配置)。
核心优势:样本效率极高。论文实测以最多 35× 更少的 rollout 超越 GRPO 达 19%,并以 10%+ 优势超过 MIPROv2[GEPA: Reflective Prompt Evolution Can Outperform Reinforcement Learning]。
适用判断:rollout 昂贵、数据稀缺、仅有 API 权限、需要可解释优化过程的 Agent 场景 → 推荐试用 ↑;数据充裕且可大规模 rollout 的场景 → RL/微调仍可能更优。
落地成本:低。已集成进 DSPy、MLflow、LangChain、Pydantic、Google ADK 等主流框架,最少 3 个样本即可起步。
#1 背景:Agent 提示调优的痛点
当前把 LLM 适配到下游任务主要有两条路:一是 RL(如 GRPO),在权重空间用策略梯度更新,通常需要数千到数十万次 rollout;二是人工提示工程,写一版、跑几个 case、改措辞、再跑,迭代慢且不可复现。
到了 Agent 场景,问题被进一步放大。Agent 本质是复合 AI 系统(Compound AI System)——由多个 LLM 模块、工具调用、检索、护栏按控制流串起来。最终只拿到一个系统级的成功/失败信号,根本无法定位是哪个模块、哪一步出了问题,信用分配(credit assignment)很难做。
说明:GEPA 的出发点是一个反直觉的判断——自然语言是比稀疏标量奖励信息密度更高的学习介质。与其把整条轨迹坍缩成一个数字,不如让一个强模型直接读轨迹,用自然语言诊断"哪里错、为什么、怎么改",再据此改写提示。一次自然语言更新往往能带来比一次梯度步大得多的行为变化[GEPA arXiv:2507.19457]。
#2 技术原理:它怎么工作
GEPA = Genetic(遗传)+ Pareto(多目标)。它维护一个候选提示池,靠"反思变异 + Pareto 择优"迭代进化。三个核心组件如下。
2.1 遗传优化主循环
在评测预算(rollout)耗尽前反复执行:从候选池按策略选一个候选 → 在训练 minibatch 上执行并采集完整轨迹 → 反思生成变异候选 → 有提升则纳入池中、更新 Pareto 前沿 →(可选)对两个分别擅长不同任务的候选做系统级合并(merge)。
2.2 反思式变异:GEPA 的灵魂
系统执行时产生的轨迹(中间推理、工具调用与返回)捕获了各模块的行为;配上最终成败,LLM 就能做隐式信用分配,把结果归因到具体模块的提示。GEPA 的做法是:用 round-robin 轮流选一个待改进模块(保证每个模块都有机会被更新)→ 在 minibatch 上跑若干 rollout → 让 LLM 检视该模块的输入/输出/推理,反思性地归因并提出新指令 → 生成一个只替换了该模块提示的新候选[GEPA arXiv:2507.19457]。
关键设计:评测轨迹本身也是诊断信号。GEPA 强调,除系统轨迹外,评测指标 μ 的中间过程(如代码评测里的编译、执行、性能剖析日志)同样高诊断价值,应连同分数一起喂回反思环节。开源实现里把它叫做 Actionable Side Information(ASI),相当于文本优化中"梯度"的功能对应物。实务上这意味着:你的反馈函数写得好不好,直接决定 GEPA 能调到多好。
2.3 Pareto 候选选择:为什么不能贪心选最优
如果每轮都只在"当前总分最高"的候选上继续改,很容易陷入局部最优——找到一个强势策略后就难以超越,预算耗尽却学不到新东西[GEPA arXiv:2507.19457]。GEPA 改用 Pareto"照明"策略:
- 2
统计每个训练样本在所有候选上的最高分,构成 Pareto 前沿;
- 4
保留"至少在一个样本上最优"的候选,留住每次变异发现的有效策略;
- 6
剪除被严格支配的候选;
- 8
从剩余候选里按"占优样本数"加权随机采样。
效果是:在不过度扩张搜索的前提下逃离局部最优,把资源集中到已被验证有效的"获胜策略"上。
#3 评测表现:数据说话
论文用四个基准做评估,每个都配了现成的复合 AI 系统和文本反馈模块[GEPA arXiv:2507.19457]。
| 基准 | 任务 / 系统 | 反馈模块给什么 | train/val/test |
|---|---|---|---|
| HotpotQA | 多跳问答 | 各阶段尚待检索的相关文档 | 150/300/300 |
| IFBench | 精确指令遵循,两阶段"作答→按约束改写" | 已满足/未满足的约束描述 | 150/300/294 |
| HoVer | 多跳事实核查,最多 3 跳 | 已检索正确文档 + 剩余待检索 | 150/300/300 |
| PUPA | 隐私保护委托(PAPILLON) | 质量分 + PII 泄露诊断 | — |
注意:IFBench 测试集刻意放了 58 个全新、分布外的输出约束,训练阶段接触不到——这是测泛化而不是测记忆,评测设计上比较严谨,参考价值更高。
对比的优化器与各自预算:Baseline(不优化)、MIPROv2(贝叶斯联合优化指令+少样本,2270–6926 rollout)、GRPO(权重空间 RL,LoRA,24000 rollout)、GEPA/GEPA+Merge(数百至数千)。两个被测模型:Qwen3-8B(含 GRPO 实验)与 GPT-4.1-mini。下表为主结果(论文 Table 1,聚合分与相对 Baseline 提升)[GEPA arXiv:2507.19457]:
| 模型 / 优化器 | HotpotQA | IFBench | HoVer | PUPA | 聚合 | 提升 |
|---|---|---|---|---|---|---|
| Qwen3-8B Baseline | 42.33 | 36.90 | 35.33 | 80.82 | 48.85 | — |
| MIPROv2 | 55.33 | 36.22 | 47.33 | 81.55 | 55.11 | +6.26 |
| GRPO | 43.33 | 35.88 | 38.67 | 86.66 | 51.14 | +2.29 |
| GEPA | 62.33 | 38.61 | 52.33 | 91.85 | 61.28 | +12.44 ↑ |
| GEPA+Merge | 64.33 | 28.23 | 51.67 | 86.26 | 57.62 | +8.78 |
| GPT-4.1-mini Baseline | 38.00 | 47.79 | 46.33 | 78.57 | 52.67 | — |
| MIPROv2 | 58.00 | 49.15 | 48.33 | 83.37 | 59.71 | +7.04 |
| GEPA | 69.00 | 52.72 | 51.67 | 94.47 | 66.97 | +14.29 ↑ |
| GEPA+Merge | 65.67 | 55.95 | 56.67 | 96.46 | 68.69 | +16.02 ↑ |
从数据里能提炼出三条对选型有用的结论:
样本效率碾压 RL:GEPA 仅用 402/330/1179/306 次 rollout 就追平了 GRPO 跑 24000 次的最佳验证分,最高 78× 效率优势;若只算真正用于学习的训练集 rollout,达到最优仅需 737/79/558/269 次[GEPA arXiv:2507.19457]。
纯指令优化反超"指令+少样本":GEPA 在全部设置下稳超 MIPROv2,最高优势 11.1%(GPT-4.1-mini)/ 10.3%(Qwen3-8B),聚合增益是 MIPROv2 的两倍以上,且泛化间隙更小[GEPA arXiv:2507.19457]。
Pareto 选择是有效设计:消融显示 Pareto 采样比"始终选最优"最高高 8.17%,聚合 +6.4%[GEPA arXiv:2507.19457]。
注意一个反例:GEPA+Merge 在 Qwen3-8B 的 IFBench 上掉到 28.23(低于 Baseline 36.90),说明 merge 并非总是正收益,在某些任务上会引入退化。选型时 merge 应作为可开关项,并以验证集结果为准。
#4 与现有方案的横向对比
| 维度 | 人工提示工程 | MIPROv2 | GRPO(RL) | GEPA |
|---|---|---|---|---|
| 学习信号 | 人凭直觉 | 标量分(贝叶斯) | 标量奖励(梯度) | 分数 + 文本反馈 |
| 所需样本/预算 | 少但慢 | 数千 rollout | 万级 rollout | 数百起 ↓ |
| 是否需权重访问 | 否 | 否 | 是 ↑ | 否(纯 API 可用) |
| 可解释性 | 高 | 低 | 低(黑盒权重) | 高(轨迹可读) |
| 可复现性 | 差 | 中 | 中 | 高 |
| 适合 Agent 多模块 | 难维护 | 支持 | 支持 | 支持(Adapter) |
#5 落地路径
GEPA 通过 Adapter 接口(实现 evaluate 和 make_reflective_dataset)接入任意系统,官方内置 DSPy Full Program、Generic RAG、MCP、TerminalBench、LangChain 等适配器,且已被 Shopify、Databricks、Dropbox 等用于生产[GEPA GitHub]。建议按以下顺序推进。
5.1 第一步:设计反馈函数(最关键)
评测器要返回"分数 + 可操作诊断",并区分失败类型(格式错/事实错/工具调用错)。诊断要具体到"哪一步、为什么",而不是泛泛的"答错了"。
pythonimport gepa.optimize_anything as oa def evaluate(candidate: str) -> float: result = run_my_agent(candidate) oa.log(f"Output: {result.output}") # 实际产出 oa.log(f"Error: {result.error}") # 工具/执行失败原因 oa.log(f"Expected: {result.expected}") # 期望与差异 return result.score
5.2 第二步:备数据 + 选模型
数据:20–100 个代表性样本即可,少至 3 个也能跑[Optimizing GEPA for production];划分 train(反思学习)/ val(选型防过拟合)。
双模型分工:
task_lm用线上要部署的(可小可廉),reflection_lm上最强的前沿模型——后者决定优化上限,且可与执行模型不同[GEPA beats RL with 35× fewer rollouts]。这也是"小模型 + GEPA 反超前沿模型"的原理:把强模型的智能蒸馏进一段可复用提示。
pythonimport gepa trainset, valset, _ = gepa.examples.aime.init_dataset() seed_prompt = {"system_prompt": "You are a helpful assistant. Answer the question. " "Put your final answer in the format '### <answer>'"} result = gepa.optimize( seed_candidate=seed_prompt, trainset=trainset, valset=valset, task_lm="openai/gpt-4.1-mini", # 执行模型 reflection_lm="openai/gpt-5", # 反思模型,决定上限 max_metric_calls=150, # 预算,从小起步 ) print(result.best_candidate['system_prompt']) # 报告值:GPT-4.1-mini 在 AIME 2025 上 46.6% -> 56.6%(+10pp)
5.3 第三步:接系统、设预算、分析
单提示用
gepa.optimize;Agent/管线用对应 Adapter(DSPy / RAG / MCP / LangChain)。预算从
auto='light'或max_metric_calls=150起步,看收益曲线再加码。分析三件事:① 看 Pareto 前沿而非单一最优(
track_stats=True),不同候选擅长不同子任务往往暴露任务内冲突目标;② 复盘 GEPA 产出的提示——它常写出一份完整"系统说明书",把领域知识、陷阱、分类讨论显式化,本身就是有价值的洞察[GEPA GitHub];③ 盯提示长度与推理成本。
#6 风险与适用边界
推荐使用
rollout 昂贵(复杂 Agent、工具调用、慢编译)
数据稀缺(几十个样本)
仅有 API 权限、无法改权重
需要可解释、可审计的优化过程
慎用 / 需注意
效果强依赖反思模型质量,反思模型弱则上限低
数据充裕、可大规模 rollout 时,RL/全参微调可能更优
当前仅优化指令,未含少样本示例优化
merge 非总正收益(见 §3 反例),须以验证集为准
多数 rollout 消耗在验证集,验证集过大影响效率
总体判断:对于 rollout 贵、数据少、只能走 API 的 Agent 调优场景,GEPA 是当前性价比很高的选择——落地成本低、可解释性强、样本效率显著优于 RL。建议的引入姿势是"GEPA 快速打底 + 必要时叠加微调(BetterTogether)",而不是把它当成 RL 的完全替代。引入时最该投入精力的不是调参,而是把反馈函数写好——这是整条链路的杠杆点。
#附:主要信息来源
原论文 GEPA: Reflective Prompt Evolution Can Outperform Reinforcement Learning(arXiv:2507.19457):https://arxiv.org/abs/2507.19457
开源框架与文档 gepa-ai/gepa:https://github.com/gepa-ai/gepa
DSPy GEPA Optimizer:https://dspy.ai/api/optimizers/GEPA/overview
Decagon 生产实践经验:https://decagon.ai/blog/optimizing-gepa-for-production



