首页
学习
活动
专区
圈层
工具
发布

试下GEPA-UI,或许你能在前端更深入理解这个提示词优化算法

上周写了两篇关于GEPA的文章《Agent多步误差咋破?看下GEPA,反思自进化+帕累托前沿,超过DSPy的MIPROv2》《别被提示词优化困住!用DSPy.GEPA把Prompt做成可演进的工程(万字长文)》,有不少朋友还是很困惑。GEPA(Genetic-Pareto Evolutionary Prompt Optimization)是一套围绕“反思式文本演化”构建的优化框架,可以将任何包含文本组件(提示词、指令、代码等)的系统演化到更高性能。它通过候选生成、执行反馈、反思迭代和 Pareto 选择,逐步改进模型的行为表现。随着本仓库的演进,我不仅整理了核心算法和示例,还针对 GEPA 写了一个完整的浏览器前端,并在后端增加了详细的日志记录,帮助开发者和研究者更直观地理解 GEPA 如何驱动大型语言模型(LLM)优化。

本文结合仓库结构、算法流程、前端集成与日志输出,由浅入深地认识 GEPA,并贴合最新日志展示 Demo 数据集与 AIME 数据集的实测表现,方便你快速复现。能给这个项目一颗Star,万分感谢

项目地址:https://github.com/xiumaoprompt/gepa-ui[1]

1. 仓库总览与技术栈

项目结构

src/gepa/:核心库,包括 GEPA 引擎(core)、默认适配器(adapters)、反思式候选生成(proposer)、日志系统(logging)等。

src/gepa/examples/:多个任务示例,涵盖 AIME、AnyMaths、RAG、DSPy 等,方便复现实验。

tests/:PyTest 单测,验证算法在录播数据上的表现。

src/gepa_frontend/:我们新增的FastAPI 前端,提供网页交互、静态资源和丰富日志。

README.md:使用说明、DSPy 集成示例、快速入门(AIME)等。

主要依赖

Python 3.10+,gepa核心库。

litellm用于统一封装各家 LLM API(DeepSeek、Moonshot 等)。

fastapi+uvicorn构建 Web 前端。

可选依赖:datasets(加载公开数据集)、wandb、mlflow等。

2. GEPA 算法速览

GEPA 的一次迭代包含以下步骤:

初始化候选:以种子 prompt(seed_candidate)作为起点。

候选评估:通过适配器(例如DefaultAdapter)在训练/验证集上执行任务,记录 LLM 输出与得分。

反思与提案:把失败案例与反馈整理成反思数据集,经反思模型生成新候选。

Pareto 选择:比较各候选在不同样本上的得分,选出非支配解,保证整体性能提升。

终止条件:可设置最大调用次数、时间、文件监视等停止条件。

README 中的 AIME 示例演示了如何优化 GPT-4.1 mini 的提示词:

import gepa

trainset, valset, _ = gepa.examples.aime.init_dataset()

seed_prompt = {"system_prompt": "You are a helpful assistant ... ### <final answer>"}

# Let's run GEPA optimization process.

gepa_result = gepa.optimize(

  seed_candidate=seed_prompt,

  trainset=trainset, valset=valset,

  task_lm="openai/gpt-4.1-mini", # <-- This is the model being optimized

  max_metric_calls=150, # <-- Set a budget

  reflection_lm="openai/gpt-5", # <-- Use a strong model to reflect on mistakes and propose better prompts

)

print("GEPA Optimized Prompt:", gepa_result.best_candidate['system_prompt'])3. FastAPI 前端:可视化 GEPA 的运行3.1 设计目标

我们基于 FastAPI 写了一个轻量前端,提供:

在浏览器中输入任务模型反思模型、API Key、Base URL 等信息。

快速选择数据集:Demo Arithmetic(新增)、Mock Mini Set、AIME Benchmark。

自定义运行参数(最大调用次数、训练/验证样本数、随机种子、种子提示词)。

一键验证模型连通性(Verify Models)并运行完整 GEPA 流程(Run GEPA)。

UI 结构示例:

+-------------------------------------------+

| GEPA Optimization Demo                    |

| 模型设置 + API Key / Base URL             |

| Dataset = Demo Arithmetic (推荐 DeepSeek) |

| Max Metric Calls = 5, Train=5, Val=3, Seed=1

| Seed Prompt 默认填入 '... ### <final answer>'

| [Verify Models] [Run GEPA]                |

| Status + Detailed Results                 |

+-------------------------------------------+3.2 后端详尽日志

我们在app.py和DefaultAdapter中加入了大量日志,涵盖:

模型验证:清楚显示Verify Models是否成功。

数据集来源:记录使用 Demo / Mock / AIME。

LLM 调用:打印 litellm 的 model 值、返回内容截断片段。

判分细节:DefaultAdapter会打印“期望答案、解析出的答案、得分”。

GEPA 进度:展示每次迭代的评估、反思提案、Pareto 前沿、最佳得分等。

这些日志让我们能看见 GEPA 的“内脏”,上面提供的两段真实日志(Demo 与 AIME)就是最佳证据。

4. Demo 数据集:DeepSeek 100% 成功示例

为快速验证 DeepSeek,我们新增了 10 条 Demo 算术题:

[

{"input":"Add 12 and 7.","answer":"### 19"},

{"input":"What is 15 minus 4?","answer":"### 11"},

...

{"input":"If a book costs $18 and you pay with $50, how much change?","answer":"### 32"}

]

默认配置(Max Metric Calls=5,Train=5,Val=3,Seed=1),运行日志节选如下,您也可以按照正常批次(Max Metric Calls=30,Train=10,Val=10,Seed=1)运行,得到一个更为精准的系统提示词。(本文截图仅为展示项目已经跑通)

INFO gepa_frontend: Launching GEPA run | dataset=demo | train=5 | val=3 | max_metric_calls=5 | seed=1

INFO ... Eval sample | expected=19 | extracted=19 | score=1.0

INFO ... Eval sample | expected=11 | extracted=11 | score=1.0

INFO ... Eval sample | expected=48 | extracted=48 | score=1.0

INFO ... GEPA run complete | total_metric_calls=6 | num_candidates=1 | best_score=1.000

前端会展示:

模型 resolved 名称(如deepseek/deepseek-chat)。

总调用数、最佳验证得分。

最佳 prompt(系统提示)。

候选历史(得分、迭代索引、提示词文本)。

验证集得分列表(Aggregate & Subscores)。

5. AIME 数据集:探索更难的任务

切换到Dataset = AIME后,可以设置train=3、val=2、max_metric_calls=3等参数。日志示例:

INFO ... Eval sample | expected=385 | extracted=96 | score=0.0

...

INFO ... Proposed new text for system_prompt: You are a mathematical problem-solving assistant...

INFO ... Eval sample | expected=227 | extracted=227 | score=1.0

INFO ... Eval sample | expected=242 | extracted=242 | score=1.0

INFO ... Eval sample | expected=244 | extracted=2 | score=0.0

可以看到:

GEPA 会自动针对难题生成新提示词(例如加入 Euler 公式、平面图知识等 domain hints)。

虽然最终 aggregate 得分可能仍为 0(难题仍有失误),但日志显示新的提示词对部分题目已有帮助。

这为进一步加大训练集、使用更强的推理模型等优化策略提供靶点。

6. 如何运行前端

安装依赖(若已在venv中可直接激活):

pip install -e '.[full,frontend]'

启动服务:

uvicorn gepa_frontend.app:app --reload

打开浏览器访问http://localhost:8000:

填DEEPSEEK_API_KEY,填 Base URLhttps://api.deepseek.com。

保持Dataset=Demo Arithmetic验证链路,确认得分 1.0。

视需求再切换到AIME Benchmark观察进阶表现。

观察终端日志,了解每次 DeepSeek 调用、评分与 prompt 演化。

7. 总结与展望

GEPA 的价值:在多种文本任务中稳健迭代提示词,提升模型表现。

前端与日志:FastAPI 前端 + 细粒度日志让 GEPA 运行轨迹一目了然,特别适合教学、演示和调试。

Demo & AIME:Demo 数据集保证快速验证链路;AIME 让我们探索进一步提高模型的空间。

下一步:可尝试接入更多 LLM、扩展数据集、修改适配器或并入自有系统,打造自动化 PromptOps 平台。

引用链接

[1]:https://github.com/xiumaoprompt/gepa-ui

未来已来,有缘一起同行!

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OSuYfm7T20Fx6ujkkE-pm71g0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。
领券