GEPA 反射式优化器

用 LLM 反思与帕累托进化搜索,优化提示词、代码与 agent 架构等任意文本参数。

源仓库
gepa-ai/gepa
Star 数
★ 7.3k
最近更新
1 天前
License
MIT
主语言
Jupyter Notebook

30 秒速览

运行形态
代码库 / SDKAgent 插件 / 技能
可在哪里用
通用 · 跨平台Codex · Claude Code · OpenAI API · Claude API
费用
软件免费,模型调用费用自付
上手难度
低 · 几分钟可跑通
开始前需要
Python(pip)LLM API 访问(任务 LM 与反思 LM)Shell / 命令行网络访问本地文件系统
典型场景
需要在 AIME、HotpotQA 等基准上快速提升某个提示词准确率、又不想跑大规模 RL 的工程师
不适合
  • 无法定义可量化评测指标的模糊任务
  • 要求极低评测次数之外的零 API 成本场景

这个 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 中的优化后文本参数。

  1. 需要在 AIME、HotpotQA 等基准上快速提升某个提示词准确率、又不想跑大规模 RL 的工程师
  2. 使用 DSPy 搭建 AI 流水线、希望用 dspy.GEPA 直接优化整个程序的研究者
  3. 想优化 MCP 工具描述或 LangChain/LangGraph agent 提示词的开发者
  4. 在 Claude Code、Cursor、Codex 等编码 agent 中希望由 agent 自动驱动 optimize_anything 的团队
  5. 需要优化代码、配置、调度策略或 SVG 等非提示词文本产物的系统研究者
  6. 在 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?

FollowAgents 源码审查 · FARS-2.1
缺口较多
52/ 100 五分制 2.6 / 5
信任安全 12/29
可靠稳定 8/14
适用触发 12/18
规范维护 10/18
有效结果 7/13
证据核验 3/8
查看各维度的扣分理由
信任安全12 / 29 · 2.1/5

信任维度整体偏薄。最小权限: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。

可靠稳定8 / 14 · 2.9/5

自一致性:README、AGENTS.md、SKILL.md 对 optimize_anything 与 GEPA 后端关系的描述基本一致,得 2。依赖可用性:核心包 dependencies 为空,可选 extra 分平台标注,requires-python 明确,得 2。失败信息:conftest 的 replay 模式有清晰 pytest.fail 提示,但产品层面对 LLM 调用失败、评估器异常的用户可见错误处理在样本中不可见,得 1。

适用触发12 / 18 · 3.3/5

受众与场景:README 覆盖提示词、代码、配置、agent 架构等多场景,并给出 DSPy、LangChain、MCP 等适配器,得 2。能力边界:SKILL.md 明确候选必须是可评分的字符串、黑盒指评估器、多组件 dict 仅在低层 API,边界清晰,得 2。触发精度:SKILL.md 的 description 列出明确触发条件(自动优化、调参、搜索文本),得 2。环境适配:支持 Python 3.10–3.14、多平台 wheel 说明、uv 工作流,得 2。

规范维护10 / 18 · 2.8/5

信息架构: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。

有效结果7 / 13 · 2.7/5

输出可用性:示例直接打印优化后提示词,结果对象结构清晰,得 2。边际价值:相比 RL 显著降低评估次数,且有论文与多框架集成佐证,得 2。成本收益:README 宣称 90x 更便宜、35x 更快等强主张,但多为外部博客/论文引用,仓库内无基准复现脚本,得 1。

证据核验3 / 8 · 1.9/5

主张可追溯:关键结果均附论文或博客链接,但仓库内无对应复现数据,得 1。跨源印证:README、SKILL.md、pyproject 相互一致,但性能数字仅单一外部来源,得 1。事实与推断分离:README 将营销性表述与机制说明混排,未明确区分实测与宣称,得 1。

风险与缓解建议
  • optimize_anything 会真实调用付费 LLM API 并可能执行候选代码,使用前应自行评估成本与隔离风险。
  • SKILL.md 提到 autoresearch/meta_harness 后端会启动 Claude Code 子进程,包内未见权限范围或沙箱说明。
  • README 中的 90x/35x 等性能主张来自外部博客与论文,仓库内无复现脚本,不应直接当作已验证事实。
  • 发布者身份未经 FollowAgents 企业注册表验证,视为未知,不构成信任加分。
  • 未见 CHANGELOG 与安全策略文件,长期维护承诺不明确。
证据充分度:低 评估于 2026年11月8日 审查版本 cb7674c8b231
查看完整评分方法 →
你是这个项目的维护者?把 FARS 徽章加到 README

徽章显示当前的评审分数和结论,点击回到本页。重新评审后约一小时内更新。

FARS

[![FARS 评测](https://followagents.com/badge/gepa.svg?lang=zh)](https://followagents.com/zh/agents/gepa)
<a href="https://followagents.com/zh/agents/gepa"><img src="https://followagents.com/badge/gepa.svg?lang=zh" alt="FARS 评测"></a>

常见问题

运行 GEPA 需要多少成本?
软件本身 MIT 开源免费,但优化过程需调用任务 LM 与反思 LM 的 API 并按量付费。成本取决于 max_metric_calls 设置与所选模型,README 未给出具体金额。
我没有大量训练数据,可以用吗?
可以。README 说明 GEPA 在数据稀缺时仍有效,少至 3 个示例即可工作,因此无需大规模训练集。
它能优化提示词以外的东西吗?
可以。除提示词外,optimize_anything API 面向代码、agent 架构、配置、调度策略、SVG 等任意文本产物,前提是你能提供一个返回分值的 evaluator 并把诊断信息通过 oa.log() 记录。
能否只用 API 访问的闭源模型?
可以。GEPA 不需要模型权重,README 示例直接使用 openai/gpt-4.1-mini 与 openai/gpt-5 等 API 模型,也适用于 Claude、Gemini 等通过 API 调用的模型。
它是如何接入我已有的系统的?
通过 GEPAAdapter 接口实现 evaluate 与 make_reflective_dataset,由 GEPA 负责搜索与选择;仓库也提供 DSPy、LangChain、MCP、RAG 等现成适配器可直接使用。
这页内容对你有帮助吗?
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。