OpenAlpha_Evolve
AI驱动的代码进化框架:用大模型+进化算法让代码自主发现问题、迭代优化
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
AI驱动的代码进化框架:用大模型+进化算法让代码自主发现问题、迭代优化
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象这样一个场景:你需要找到一个数学问题的最优解,传统做法是查阅文献、推导公式、反复实验——一位数学家可能需要数周甚至数月。但现在,有一个 AI 系统可以自动编写代码、运行测试、从错误中学习,在数小时内迭代出超越人类设计的算法方案。这不是科幻,而是 DeepMind 在 2025 年发表 AlphaEvolve 论文时展示的现实。
OpenAlpha_Evolve 正是这一思路的开源复现。它由独立开发者 shyamsaktawat 构建,是一个基于 Python 的自主代码进化框架,灵感直接来源于 AlphaEvolve 的核心理念:用大语言模型(LLM)驱动进化算法,让代码自己发现问题、自己修复缺陷、自己变得更好。2025 年中发布后,迅速在 GitHub 积累超过 1000 颗星,受到 AI 研究社区的广泛关注。
OpenAlpha_Evolve 的核心是一个模块化的多 Agent 协作架构,包含六个各司其职的组件,形成完整的进化闭环:
PromptDesignerAgent(提示工程师):负责为 LLM 设计三类关键提示——初始提示(生成第一批候选解)、变异提示(对已有解进行差异化改进,通常以 diff 格式输出)、以及 Bug 修复提示(引导 LLM 修正运行时错误。这个 Agent 决定了进化方向的质量上限。
CodeGeneratorAgent(代码生成器):接收 PromptDesigner 的提示,通过 LiteLLM 统一接口调用多种 LLM(默认使用 Gemini 系列模型,也支持 GPT-4o 等),生成符合任务要求的 Python 代码。LiteLLM 的抽象层让框架天然支持模型热切换,降低了单一模型供应商依赖的风险。
EvaluatorAgent(评测器):这是安全性最关键的组件。每个候选代码都在 Docker 沙箱中执行,防止恶意代码影响宿主机。评测器接收代码和测试用例,运行后返回正确性评分和错误信息。配置中 EVALUATION_TIMEOUT_SECONDS 长达 800 秒,足以应对复杂计算任务。
DatabaseAgent(程序数据库):维护进化过程中所有生成程序的版本历史,记录每个程序的适应度分数(fitness_scores)、父程序 ID(parent_id)和所属岛屿 ID(island_id),支持程序的知识积累与可追溯性。
SelectionController(选择控制器):负责从种群中选择优秀个体进入下一代。基于锦标赛选择策略,结合精英保留(Elitism)和交叉(Crossover)机制,平衡探索(Exploration)与利用(Exploitation)。
TaskManagerAgent(任务管理器):中央协调器,运行主进化循环,驱动所有 Agent 按序协作,完成从任务定义到最终解产出的全流程。
OpenAlpha_Evolve 实现了经典的岛屿模型(Island Model)进化算法。种群被划分为多个子种群(默认为 4 个岛屿),每个岛屿独立进化,每隔若干代(由 MIGRATION_INTERVAL 配置)随机交换个体(由 MIGRATION_RATE 控制比例)。这种设计有两个好处:一是并行搜索增加全局探索能力,二是岛屿间的基因交流能有效跳出局部最优。
进化参数在 config/settings.py 中高度可配置:种群大小(POPULATION_SIZE=5)、代数(GENERATIONS=2)、变异率(MUTATION_RATE=0.7)、交叉率(CROSSOVER_RATE=0.2)、精英保留数(ELITISM_COUNT=1)。注意默认参数偏向快速验证,生产环境可按需调大。
适应度评估是进化算法的灵魂。OpenAlpha_Evolve 采用双层评估策略:
LLM 自评:将候选程序提交给 LLM(如 GPT-4o)进行质量打分,给出详细的改进建议和理由。这一层的评分由 LLM 的推理能力驱动,能捕捉代码逻辑层面的问题。
测试用例验证:通过 Python 的 assert 语句和标准 I/O 比对,客观验证程序对输入输出示例的正确性。两个分数共同构成程序的适应度,决定其是否能进入下一代。
当正确性得分低于 BUG_FIX_CORRECTNESS_THRESHOLD(默认 0.1)时,框架会自动切换到 Bug 修复提示策略,而非继续进行随机变异,这种自适应机制显著提升了收敛效率。
项目提供两种运行模式:
Gradio Web UI(推荐新手):运行 python app.py 即可启动本地 Web 界面,用户通过表单填写任务描述、函数名、输入输出示例、种群参数,实时查看进化日志和最优解输出。界面支持日志流式输出(StringIOHandler),方便监控进化过程。
YAML 配置 + 命令行(推荐生产):编写 YAML 任务文件(如 examples/circle_packing.yaml、shortest_path.yaml),通过 python main.py <task.yaml> 执行。这种方式适合自动化工作流和批量实验。YAML 文件定义了任务描述、目标函数名、允许导入的库、以及完整的测试用例。
依赖通过 pip install -r requirements.txt 一键安装。必需的核心依赖包括:litellm(LLM 统一接口)、gradio(Web UI)、pydantic(数据验证)、Jinja2(模板引擎)、docker(沙箱执行)。
语言:Python 3.10+,类型注解使用 typing-extensions。
架构模式:模块化插件架构,每个 Agent 继承 BaseAgent 抽象基类,遵循接口契约,扩展性良好。core/interfaces.py 定义了 TaskDefinition、Program 等核心数据结构,通过 Pydantic dataclass 约束字段类型。
LLM 集成:LiteLLM 封装了 Gemini、OpenAI GPT、Anthropic Claude、Google GenerativeAI 等主流 API,通过 .env 配置切换模型。默认模型为 gemini-2.0-flash-lite,适合快速迭代;评测使用 gpt-4o,保证评测质量。
测试覆盖:项目包含 tests/ 目录,配合 pytest 框架运行。
文档质量:README 极为详细,包含完整工作流图、多 Agent 交互说明、Getting Started 指南、示例 YAML 配置,文档篇幅和深度远超同类项目。
安全性:代码执行完全在 Docker 沙箱内,禁用网络(DOCKER_NETWORK_DISABLED=True),防止沙箱逃逸和数据泄露风险。
LLM API 成本:每次进化代都调用 LLM 生成代码,生成成本随种群大小和代数线性增长。在高参数配置下,单次实验的 API 费用可能达到数十美元。
进化效率依赖模型质量:代码生成质量完全取决于底层 LLM 的推理能力,弱模型可能产生大量无效代码,导致进化缓慢甚至无法收敛。
Dockerfile 不完整:evaluator_agent/Dockerfile 只是一个模板,缺少实际依赖安装,生产部署时需要根据 allowed_imports 补充。这增加了安全代码执行环境的搭建门槛。
不适合实时任务:单次进化通常需要数分钟到数小时,不适合需要毫秒级响应的实时场景。
OpenAlpha_Evolve 体现了 2025 年 AI for Science 的一个重要趋势:用 LLM 作为算法设计的突变引擎,用进化算法作为选择压力,两者结合实现超越人类直觉的代码发现。从数学公式优化到算法设计,从科学计算到工程问题,这是一个通用性极强的框架。
项目的下一步方向可能包括:集成更多 LLM 提供商(如 Claude Opus)、支持更多编程语言、引入强化学习微调 LLM 的进化策略、以及与 Jupyter Notebook 深度集成。
对于 AI 研究者和开发者,OpenAlpha_Evolve 提供了一个可上手的实验平台,用于探索 LLM 驱动的程序合成(Program Synthesis)这一前沿领域。