OpenAlpha Evolve
用 LLM 驱动的进化循环生成、测试并改进 Python 算法。
- Star 数
- ★ 1.1k
- 最近更新
- 1 年前
- License
- MIT
- 主语言
- Python
- FA 评分
- 41/100 · 缺口较多
30 秒速览
- 可在哪里用
- 通用 · 跨平台OpenAI API · Claude API
- 开始前需要
- 典型场景
- 算法研究人员希望在明确的输入输出测试下,探索 Dijkstra 等算法问题的候选实现。
- 主要局限
- 运行生成代码依赖本地 Docker,并要求 Docker Desktop 或 Docker Engine 已安装且正在运行。
这个 Agent 能做什么,适合哪些场景?
OpenAlpha Evolve 是一个用于自动发现和迭代改进 Python 算法的开源框架,灵感来自 DeepMind 的 AlphaEvolve 研究。它由 PromptDesignerAgent、CodeGeneratorAgent、EvaluatorAgent、DatabaseAgent、SelectionControllerAgent 和 TaskManagerAgent 组成。用户通过 YAML 任务文件或 TaskDefinition 描述待实现函数、允许导入项和测试用例,系统随后生成候选程序并按代际演化。生成的程序会接受 Python 语法检查,并在 Docker 容器中针对任务测试执行和评分。项目可通过命令行运行示例任务,也提供 Gradio Web 界面用于交互式定义任务和启动演化。
用户先定义包含 task_id、task_description、function_name、allowed_imports 与 tests 的 YAML 任务。PromptDesignerAgent 生成初始、变异和修复提示;CodeGeneratorAgent 通过 LiteLLM 调用模型生成 Python 代码,并在收到 diff 时尝试将改动应用到父代代码。EvaluatorAgent 检查语法,在临时隔离环境中运行代码,并依据测试通过情况、运行时间及潜在指标计算 fitness。DatabaseAgent 保存代码、fitness、代数和谱系;SelectionControllerAgent 选择父代与幸存者;TaskManagerAgent 重复这一流程直至达到设定代数。输出包括进化得到的候选 Python 程序、评估结果和日志,默认日志文件为 alpha_evolve.log。
- 算法研究人员希望在明确的输入输出测试下,探索 Dijkstra 等算法问题的候选实现。
- Python 开发者需要用 YAML 描述函数签名、允许导入项和边界测试,并让系统迭代生成实现。
- 实验者想比较 LLM 生成程序在变异、diff 修复和选择后的适应度变化。
- 需要在 Docker 隔离执行环境中,对生成 Python 代码进行语法检查和功能测试的原型团队。
- 希望通过 Gradio 页面交互式提交自定义任务并观察演化过程的开发者。
如何安装或部署这个 Agent?
前置条件为 Python 3.10+、pip、Git 和正在运行的 Docker。执行:
git clone https://github.com/shyamsaktawat/OpenAlpha_Evolve.git
cd OpenAlpha_Evolve
python -m venv venv
source venv/bin/activate
pip install -r requirements.txt
cp .env_example .env然后在 .env 中配置所选模型提供商的凭据:Google 可使用 GOOGLE_APPLICATION_CREDENTIALS 或 GEMINI_API_KEY;示例中也列出 OPENAI_API_KEY、ANTHROPIC_API_KEY 和 COHERE_API_KEY。项目通过 LiteLLM 对接不同提供商。
如何使用这个 Agent?
使用示例最短路径任务运行:
python -m main examples/shortest_path.yaml系统会执行演化循环,并将日志写入终端及默认的 alpha_evolve.log。若要使用网页界面,运行:
python app.py然后打开 Gradio 显示的本地 URL,在界面中定义任务并启动演化。
这个 Agent 有哪些优点和局限?
- 将提示设计、代码生成、评估、存储、选择和编排拆分为独立 Agent,便于替换或扩展其中的策略。
- 支持初始生成、diff 变异和 diff 修复,使后续候选程序能基于父代代码进行定向改动。
- 评估流程同时包含语法检查、测试用例执行和 fitness 评分,而非只生成代码文本。
- 通过 LiteLLM 说明了 OpenAI、Anthropic、Google 等多个模型提供商路径,避免只绑定单一模型接口。
- 运行生成代码依赖本地 Docker,并要求 Docker Desktop 或 Docker Engine 已安装且正在运行。
- 实际生成需要配置模型提供商凭据;API 使用及其费用由所选提供商决定。
- README 明确声明项目为实验性项目,生成代码可能不最优、不正确或不安全,生产使用前必须人工审查和测试。
- DatabaseAgent 目前使用内存存储,来源未说明持久化数据库、恢复机制或多用户部署方案。
- 配置说明中的 .env.example 与复制命令中的 .env_example 命名不一致,安装时需要核对仓库中的实际文件名。
这个 Agent 与同类方案有什么区别?
该项目明确说明其灵感来自 DeepMind 的 AlphaEvolve,并定位为对核心理念的开源再实现,用于更广泛的实验和学习。来源没有提供与 AlphaEvolve 的功能对等性、性能或部署方式比较。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|
| OpenAlpha Evolve 当前 | 41 · 缺口较多 | ★ 1.1k | 1 年前 | Python | OpenAI API · Claude API |
| OpenEvolve | 40 · 缺口较多 | ★ 7.4k | 2 个月前 | Python | Claude Code · OpenAI API |
| CaveAgent | 62 · 存在缺口 | ★ 202 | 8 天前 | Python | OpenAI API · Claude API |
| KodeAgent | 43 · 缺口较多 | ★ 40 | 1 个月前 | Python | OpenAI API · Claude API |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
证据显示:代码执行使用Docker容器隔离,网络默认禁用,有超时机制,体现了最小权限原则(1分)。但未发现用户确认机制,如执行前提示或审批(0分)。数据流透明度:README描述了数据流,但未提供详细日志或可视化(1分)。敏感数据处理:.env文件存储API密钥,但未说明加密或保护措施(1分)。依赖安全:requirements.txt未固定版本,未提及漏洞扫描(0分)。外部影响:Docker执行可能产生外部影响,但未明确说明(1分)。回滚:未提及任何回滚机制(0分)。来源归属:README提及灵感来源,但未提供具体引用(1分)。
自洽性:README与代码结构一致,测试文件与描述相符(2分)。依赖可用性:requirements.txt列出依赖,但未固定版本,可能影响可复现性(1分)。失败消息:测试覆盖了错误场景,错误消息清晰(2分)。
受众与场景:README面向研究人员和开发者,提供了多种使用场景(2分)。能力边界:未明确说明系统限制,如支持的LLM提供商或任务类型(1分)。触发精度:任务定义通过YAML或Python,但未说明如何精确控制触发(1分)。环境适配:提供了Docker和虚拟环境设置,但未说明不同操作系统差异(2分)。
信息架构:README结构清晰,有目录和项目结构(2分)。安装说明:提供了详细的安装步骤(2分)。命名稳定性:未提及命名约定或API稳定性(1分)。示例与FAQ:提供了示例任务,但无FAQ(2分)。已知限制:README有免责声明,但未详细列出限制(1分)。许可证:MIT许可证明确(2分)。版本与变更日志:未提及版本号或变更日志(0分)。维护责任:未明确维护者或贡献指南(1分)。
输出可用性:生成的代码和评估结果有明确格式(2分)。边际价值:提供了进化算法框架,有独特价值(2分)。成本效益:未讨论运行成本或资源消耗(1分)。
声明可追溯:README声称功能,但未提供证据(1分)。跨来源佐证:未提供外部验证(1分)。事实与推断分离:README混合了事实和愿景,未明确区分(1分)。
- 源码中未见:执行前用户确认开启或自行加上执行前确认;先在沙箱或测试环境跑通,确认行为后再接入真实数据。
- 源码中未见:依赖安全审查安装前固定版本并做一次依赖扫描(如 npm audit、pip-audit);优先放在容器里运行。
- 源码中未见:回滚或恢复路径运行前先备份,或在 git 分支、快照上操作,确保改动可以撤销。
- 依赖未固定版本,可能引入不兼容或安全漏洞。
- API密钥存储在.env文件中,需确保妥善保护。
- Docker执行环境虽隔离,但需注意容器逃逸风险。
- 未提供版本控制或变更日志,难以追踪更新。