GEPA 反射式优化器
用 LLM 反思与帕累托进化搜索,优化提示词、代码与 agent 架构等任意文本参数。
- 源仓库
- gepa-ai/gepa
- Star 数
- ★ 7.3k
- 最近更新
- 1 天前
- License
- MIT
- 主语言
- Jupyter Notebook
- FA 评分
- 52/100 · 缺口较多
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台Codex · Claude Code · OpenAI API · Claude API
- 费用
- 软件免费,模型调用费用自付
- 上手难度
- 低 · 几分钟可跑通
- 开始前需要
- 典型场景
- 需要在 AIME、HotpotQA 等基准上快速提升某个提示词准确率、又不想跑大规模 RL 的工程师
- 不适合
- 无法定义可量化评测指标的模糊任务
- 要求极低评测次数之外的零 API 成本场景
- 源码审查
- 52/100 · 缺口较多
这个 Agent 能做什么,适合哪些场景?
GEPA(Genetic-Pareto)是一个用于优化带文本参数系统的 Python 框架,可针对任意评测指标优化提示词、代码、agent 架构、配置乃至 SVG。它不把执行轨迹压缩成单一标量奖励,而是让 LLM 阅读完整轨迹(错误信息、profiling 数据、推理日志),诊断候选失败原因并提出针对性修改。核心流程为:从帕累托前沿选择候选、在小批量上执行、反射、变异、按改进接受,并支持组合不同任务优势的系统感知合并。用户通过 GEPAAdapter 接口(实现 evaluate 与 make_reflective_dataset)接入自有系统,仓库自带 DefaultAdapter、ConfidenceAdapter、DSPy 全程序、Generic RAG、MCP、TerminalBench、AnyMaths、LangChain 等适配器。它同时以 pip 库(gepa.optimize、gepa.optimize_anything)和 Agent Skill 形式交付,前者可嵌入 DSPy 等流水线,后者供 Claude Code 等编码 agent 自动发现并驱动优化。
GEPA 读取用户提供的种子候选(如 system_prompt 字符串)、训练集与验证集,调用任务 LM 在样本上执行并采集轨迹,再由反思 LM 依据这些轨迹与评测器返回的诊断信息(Actionable Side Information,ASI)生成变异后的候选。每一轮都从帕累托前沿挑选候选、运行 minibatch、反射与变异,并在指标提升时接受新候选。对外 API 包括 gepa.optimize(seed_candidate, trainset, valset, task_lm, reflection_lm, max_metric_calls)、dspy.GEPA 优化器,以及 optimize_anything(seed_candidate, evaluator, objective, config),后者通过 oa.log() 把输出与错误反馈给反思环节。适配器层要求实现 GEPAAdapter.evaluate 与 make_reflective_dataset,产出为 result.best_candidate 中的优化后文本参数。
- 需要在 AIME、HotpotQA 等基准上快速提升某个提示词准确率、又不想跑大规模 RL 的工程师
- 使用 DSPy 搭建 AI 流水线、希望用 dspy.GEPA 直接优化整个程序的研究者
- 想优化 MCP 工具描述或 LangChain/LangGraph agent 提示词的开发者
- 在 Claude Code、Cursor、Codex 等编码 agent 中希望由 agent 自动驱动 optimize_anything 的团队
- 需要优化代码、配置、调度策略或 SVG 等非提示词文本产物的系统研究者
- 在 MLflow、Comet ML Opik、Pydantic AI 等框架内寻找现成提示词优化算法的用户
如何安装或部署这个 Agent?
通过 PyPI 安装(需要 Python 与 pip):
pip install gepa如需从 main 分支安装最新版:
pip install git+https://github.com/gepa-ai/gepa.git可选适配器带额外依赖,例如:
pip install "gepa[confidence]"
pip install "gepa[langchain]"使用 Agent Skill 形式时,在仓库克隆内由 Claude Code 等自动发现 .claude/skills/gepa-optimize-anything/,或安装插件:
/plugin marketplace add gepa-ai/gepa
/plugin install gepa-optimize-anything@gepa运行需提供任务 LM 与反思 LM 的 API 凭据(示例中使用 openai/gpt-4.1-mini 与 openai/gpt-5)。
如何使用这个 Agent?
最小可用示例(AIME 提示词优化):
import 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",
max_metric_calls=150,
reflection_lm="openai/gpt-5",
)
print("Optimized prompt:", result.best_candidate['system_prompt'])在 DSPy 中调用:
import dspy
optimizer = dspy.GEPA(
metric=your_metric,
max_metric_calls=150,
reflection_lm="openai/gpt-5",
)
optimized_program = optimizer.compile(student=MyProgram(), trainset=trainset, valset=valset)优化任意文本产物(需自行提供 evaluator):
import gepa.optimize_anything as oa
from gepa.optimize_anything import optimize_anything, GEPAConfig, EngineConfig
def evaluate(candidate: str) -> float:
result = run_my_system(candidate)
oa.log(f"Output: {result.output}")
oa.log(f"Error: {result.error}")
return result.score
result = optimize_anything(
seed_candidate="<your initial artifact>",
evaluator=evaluate,
objective="Describe what you want to optimize for.",
config=GEPAConfig(engine=EngineConfig(max_metric_calls=100)),
)这个 Agent 有哪些优点和局限?
- 反射机制读取完整执行轨迹而非单一标量奖励,能指出失败原因并据此修改,优化过程可读
- 所需评测次数远少于 RL:据 README,100–500 次评测对比 GRPO 的 5,000–25,000+ 次
- GEPAAdapter 接口清晰(evaluate + make_reflective_dataset),并有 DefaultAdapter、DSPy、MCP、LangChain、RAG 等多种现成适配器
- 支持 scarce data 场景,据 README 可用少至 3 个示例工作;对 API-only 模型无需权重访问
- 与 DSPy、MLflow、Comet ML Opik、Pydantic AI、Google ADK 等框架已有集成,降低迁移成本
- 同时提供 optimize_anything,可优化提示词之外的代码、配置、agent 架构与 SVG 等文本产物
- 依赖付费云端 LLM API,任务 LM 与反思 LM 的调用成本随评测次数累积,README 未给出成本估算
- 优化效果高度依赖评测器质量与可供反思的诊断信息,指标设计不当会直接传导到结果
- 复杂产物需自行编写 evaluator 与适配器,首次接入存在一定开发工作量
- 性能数字(如 90x cheaper、35x faster)来自 README 引用的外部博客与论文,未在仓库内提供可复现基准
- README 未说明 Python 版本、支持的操作系统等运行时约束,采用前需自行验证环境
这个 Agent 与同类方案有什么区别?
仓库明确将自身与两类方法对比:一是强化学习(RL/GRPO),GEPA 以约 100–500 次评测对比其 5,000–25,000+ 次,且无需权重访问、可在 API 模型上运行;二是梯度类方法,GEPA 不把轨迹压成标量奖励,而是让 LLM 阅读完整轨迹。README 还建议先用 GEPA 快速优化、再叠加 RL/微调(BetterTogether),说明二者是互补而非替代关系。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| GEPA 反射式优化器 当前 | 52 · 缺口较多 | 代码库 / SDK免费 + 模型费 | ★ 7.3k | 1 天前 | Jupyter Notebook | Codex · Claude Code · OpenAI API · Claude API |
| OpenEvolve | 51 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 7.7k | 1 天前 | Python | Claude Code · OpenAI API |
| MS-Agent | 67 · 存在缺口 | 网页应用免费 + 模型费 | ★ 4.4k | 5 天前 | Python | — |
| Weco 自动研究优化器 | 59 · 缺口较多 | 命令行工具免费 + 模型费 | ★ 124 | 5 天前 | Python | Codex · Claude Code · OpenAI API |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
信任维度整体偏薄。最小权限:SKILL.md 描述的后端会启动 Claude Code 子进程、HTTP 评估服务器、在代码执行适配器中运行候选代码,但包内未见权限范围声明或沙箱约束,仅得 1。用户确认:optimize_anything 会消耗大量 LLM 调用与费用,文档未提示成本确认或 dry-run,得 1。数据流透明:SKILL.md 说明评估器为黑盒、候选字符串对提议者可见,属部分透明,但未说明执行轨迹/日志去向,得 1。敏感数据处理:未见对 API 密钥、轨迹中可能含敏感数据的处理说明,得 1。依赖安全:pyproject 对 litellm 有明确的坏版本排除与注释,CI 固定 action SHA,属较好实践,得 2。外部影响:会真实调用付费 API 并可能执行代码,但无回滚或隔离说明,得 1。回滚:未见对已优化产物的版本/回滚机制,得 1。来源归属:LICENSE 署名明确,README 引用论文与来源,得 2。
自一致性:README、AGENTS.md、SKILL.md 对 optimize_anything 与 GEPA 后端关系的描述基本一致,得 2。依赖可用性:核心包 dependencies 为空,可选 extra 分平台标注,requires-python 明确,得 2。失败信息:conftest 的 replay 模式有清晰 pytest.fail 提示,但产品层面对 LLM 调用失败、评估器异常的用户可见错误处理在样本中不可见,得 1。
受众与场景:README 覆盖提示词、代码、配置、agent 架构等多场景,并给出 DSPy、LangChain、MCP 等适配器,得 2。能力边界:SKILL.md 明确候选必须是可评分的字符串、黑盒指评估器、多组件 dict 仅在低层 API,边界清晰,得 2。触发精度:SKILL.md 的 description 列出明确触发条件(自动优化、调参、搜索文本),得 2。环境适配:支持 Python 3.10–3.14、多平台 wheel 说明、uv 工作流,得 2。
信息架构:README 结构清晰,AGENTS.md 给出目录结构,得 2。安装说明:pip 安装、源码安装、插件市场安装均有,得 2。命名稳定性:包名 gepa、插件名 gepa-optimize-anything 一致,但 SKILL.md 自述命名存在历史包袱(包名与优化器同名),略有歧义,得 2。示例与 FAQ:README 有多个可运行示例与优化后提示词样例,得 2。已知局限:仅在 pyproject 注释中提及 litellm wheel 问题,产品层面缺少专门局限章节,得 1。许可证:MIT,LICENSE 与 pyproject、marketplace 一致,得 2。版本与变更日志:pyproject 有版本号、发布工作流有版本策略,但未见 CHANGELOG,得 1。维护责任:作者与 bot 邮箱可见,但无 CONTRIBUTING/SECURITY 或明确维护承诺,得 1。
输出可用性:示例直接打印优化后提示词,结果对象结构清晰,得 2。边际价值:相比 RL 显著降低评估次数,且有论文与多框架集成佐证,得 2。成本收益:README 宣称 90x 更便宜、35x 更快等强主张,但多为外部博客/论文引用,仓库内无基准复现脚本,得 1。
主张可追溯:关键结果均附论文或博客链接,但仓库内无对应复现数据,得 1。跨源印证:README、SKILL.md、pyproject 相互一致,但性能数字仅单一外部来源,得 1。事实与推断分离:README 将营销性表述与机制说明混排,未明确区分实测与宣称,得 1。
- optimize_anything 会真实调用付费 LLM API 并可能执行候选代码,使用前应自行评估成本与隔离风险。
- SKILL.md 提到 autoresearch/meta_harness 后端会启动 Claude Code 子进程,包内未见权限范围或沙箱说明。
- README 中的 90x/35x 等性能主张来自外部博客与论文,仓库内无复现脚本,不应直接当作已验证事实。
- 发布者身份未经 FollowAgents 企业注册表验证,视为未知,不构成信任加分。
- 未见 CHANGELOG 与安全策略文件,长期维护承诺不明确。
常见问题
运行 GEPA 需要多少成本?
我没有大量训练数据,可以用吗?
它能优化提示词以外的东西吗?
能否只用 API 访问的闭源模型?
它是如何接入我已有的系统的?
谢谢反馈,我们会据此改进页面。