OA0
OA0 是一个探索 AI 的社区
现在注册
已注册用户请  登录
OA0  ›  代码  ›  OpenEvolve — 用进化式搜索驱动代码与提示优化的实验项目

OpenEvolve — 用进化式搜索驱动代码与提示优化的实验项目

 
  bunker ·  2026-02-20 02:23:05 · 8 次点击  · 0 条评论  

OpenEvolve

OpenEvolve Logo **🧬 最先进的开源进化编码智能体** *将你的大语言模型转变为能发现突破性算法的自主代码优化器*

GitHub stars PyPI version PyPI downloads License

[🚀 **快速开始**](#快速开始) • [**示例**](#示例画廊) • [**系统消息**](#编写有效的系统消息) • [**讨论**](https://github.com/algorithmicsuperintelligence/openevolve/discussions) *从随机搜索到最先进水平:实时观看你的代码进化*

为什么选择 OpenEvolve?

### **自主发现** 大语言模型不仅仅是优化——它们能**发现**全新的算法。无需人工指导。 ### **已验证的成果** 在真实硬件上实现 **2-3 倍加速**。**最先进**的圆填充方案。**突破性**的优化。 ### **研究级品质** 内置完整的可复现性、广泛的评估流程和科学严谨性。

OpenEvolve 与手动优化对比:

方面 手动优化 OpenEvolve
解决方案耗时 数天到数周 数小时
探索广度 受限于人类创造力 无限的大语言模型创造力
可复现性 难以复现 完全确定性
多目标优化 复杂的权衡 自动帕累托优化
扩展性 无法扩展 跨岛屿并行进化

已验证的成就

| **领域** | **成就** | **示例** | |---------------|-------------------|----------------| | **GPU 优化** | 硬件优化的内核发现 | [MLX Metal 内核](examples/mlx_metal_kernel_opt/) | | **数学** | 最先进的圆填充(n=26) | [圆填充](examples/circle_packing/) | | **算法设计** | 自适应排序算法 | [Rust 自适应排序](examples/rust_adaptive_sort/) | | **科学计算** | 自动化滤波器设计 | [信号处理](examples/signal_processing/) | | **多语言** | Python、Rust、R、Metal 着色器 | [所有示例](examples/) |

🚀 快速开始

30 秒内从零开始进化代码:

# 安装 OpenEvolve
pip install openevolve

# 示例默认使用 Google Gemini(有免费层级)
# 从以下地址获取你的 API 密钥:https://aistudio.google.com/apikey
export OPENAI_API_KEY="your-gemini-api-key"  # 是的,使用 OPENAI_API_KEY 环境变量

# 运行你的第一次进化!
python openevolve-run.py examples/function_minimization/initial_program.py \
  examples/function_minimization/evaluator.py \
  --config examples/function_minimization/config.yaml \
  --iterations 50

注意: 示例配置默认使用 Gemini,但你可以通过修改 config.yaml 来使用任何 OpenAI 兼容的提供商。查看 配置 了解完整的配置选项。

库使用方式

OpenEvolve 可以作为库使用,无需任何外部文件:

from openevolve import run_evolution, evolve_function

# 内联代码进化(无需文件!)
result = run_evolution(
    initial_program='''
    def fibonacci(n):
        if n <= 1: return n
        return fibonacci(n-1) + fibonacci(n-2)
    ''',
    evaluator=lambda path: {"score": benchmark_fib(path)},
    iterations=100
)

# 直接进化 Python 函数
def bubble_sort(arr):
    for i in range(len(arr)):
        for j in range(len(arr)-1):
            if arr[j] > arr[j+1]:
                arr[j], arr[j+1] = arr[j+1], arr[j] 
    return arr

result = evolve_function(
    bubble_sort,
    test_cases=[([3,1,2], [1,2,3]), ([5,2,8], [2,5,8])],
    iterations=50
)
print(f"进化后的排序算法:{result.best_code}")

更喜欢 Docker? 查看 安装与设置 部分了解 Docker 选项。

实际效果展示

圆填充:从随机到最先进水平 **观看 OpenEvolve 实时发现最优圆填充方案:** | 第 1 代 | 第 190 代 | 第 460 代(最终) | |--------------|----------------|----------------------| | ![初始](examples/circle_packing/circle_packing_1.png) | ![进展](examples/circle_packing/circle_packing_190.png) | ![最终](examples/circle_packing/circle_packing_460.png) | | 随机放置 | 学习结构 | **最先进的结果** | **结果**:与已发布的 n=26 圆填充问题基准测试结果相匹配。
GPU 内核进化 **进化前(基线)**:
// 标准注意力实现
kernel void attention_baseline(/* ... */) {
    // 通用矩阵乘法
    float sum = 0.0;
    for (int i = 0; i < seq_len; i++) {
        sum += query[tid] * key[i];
    }
}
**进化后(快 2.8 倍)**:
// OpenEvolve 发现的优化
kernel void attention_evolved(/* ... */) {
    // 硬件感知的平铺 + 统一内存优化
    threadgroup float shared_mem[256];
    // ... 利用 Apple Silicon 架构的进化算法
}
**性能影响**:在 Apple M1 Pro 上实现 2.8 倍加速,同时保持数值精度。

OpenEvolve 工作原理

OpenEvolve 实现了一个复杂的进化编码管道,远超简单的优化:

OpenEvolve 架构

核心创新:MAP-Elites + 大语言模型

  • 质量-多样性进化:跨特征维度维持多样化的种群
  • 基于岛屿的架构:多个种群防止过早收敛
  • 大语言模型集成:具有智能回退策略的多个模型
  • 工件侧信道:错误反馈改进后续世代

高级功能

科学可复现性 - **全面种子化**:每个组件(大语言模型、数据库、评估)都使用种子 - **默认种子=42**:开箱即用的即时可复现结果 - **确定性进化**:跨机器精确复现运行过程 - **组件隔离**:基于哈希的隔离防止交叉污染
高级大语言模型集成 - **通用 API**:适用于 OpenAI、Google、本地模型和代理 - **智能集成**:具有复杂回退机制的加权组合 - **测试时计算**:通过代理系统增强推理能力(参见 [OptiLLM 设置](#大语言模型提供商设置)) - **插件生态系统**:支持高级推理插件
进化算法创新 - **双重选择**:为性能与灵感选择不同的程序 - **自适应特征维度**:自定义的质量-多样性指标 - **迁移模式**:具有受控基因流的环形拓扑 - **多策略采样**:精英、多样性和探索性选择

完美适用于

使用场景 OpenEvolve 的优势
性能优化 发现人类可能忽略的硬件特定优化
算法发现 为经典问题找到新颖的解决方法
科学计算 自动化繁琐的手动调优过程
竞技编程 生成多种解决方案策略
多目标问题 跨维度的帕累托最优解

🛠 安装与设置

要求

  • Python:3.10+
  • 大语言模型访问:任何 OpenAI 兼容的 API
  • 可选:用于容器化运行的 Docker

安装选项

📦 PyPI(推荐)
pip install openevolve
🔧 开发安装
git clone https://github.com/algorithmicsuperintelligence/openevolve.git
cd openevolve
pip install -e ".[dev]"
🐳 Docker
# 拉取镜像
docker pull ghcr.io/algorithmicsuperintelligence/openevolve:latest

# 运行示例
docker run --rm -v $(pwd):/app ghcr.io/algorithmicsuperintelligence/openevolve:latest \
  examples/function_minimization/initial_program.py \
  examples/function_minimization/evaluator.py --iterations 100

成本估算

成本取决于你的大语言模型提供商和迭代次数:

  • o3:每次迭代约 $0.15-0.60(取决于代码大小)
  • o3-mini:每次迭代约 $0.03-0.12(更具成本效益)
  • Gemini-2.5-Pro:每次迭代约 $0.08-0.30
  • Gemini-2.5-Flash:每次迭代约 $0.01-0.05(最快且最便宜)
  • 本地模型:设置后几乎免费
  • OptiLLM:使用更便宜的模型配合测试时计算以获得更好的结果

节省成本的技巧:
- 从较少的迭代次数开始(100-200)
- 使用 o3-mini、Gemini-2.5-Flash 或本地模型进行探索
- 使用级联评估来早期过滤不良程序
- 初始配置较小的种群规模

大语言模型提供商设置

OpenEvolve 适用于任何 OpenAI 兼容的 API

🔥 OpenAI(直接)
export OPENAI_API_KEY="sk-..."
# 默认使用 OpenAI 端点
🤖 Google Gemini
# config.yaml
llm:
  api_base: "https://generativelanguage.googleapis.com/v1beta/openai/"
  model: "gemini-2.5-pro"
export OPENAI_API_KEY="your-gemini-api-key"
🏠 本地模型(Ollama/vLLM)
# config.yaml
llm:
  api_base: "http://localhost:11434/v1"  # Ollama
  model: "codellama:7b"
⚡ OptiLLM(高级) 为了获得速率限制、模型路由和测试时计算方面的最大灵活性:
# 安装 OptiLLM
pip install optillm

# 启动 OptiLLM 代理
optillm --port 8000

# 将 OpenEvolve 指向 OptiLLM
export OPENAI_API_KEY="your-actual-key"
llm:
  api_base: "http://localhost:8000/v1"
  model: "moa&readurls-o3"  # 测试时计算 + 网络访问

示例画廊

### **展示项目** | 项目 | 领域 | 成就 | 演示 | |---------|--------|-------------|------| | [**函数最小化**](examples/function_minimization/) | 优化 | 随机 → 模拟退火 | [查看结果](examples/function_minimization/openevolve_output/) | | [**MLX GPU 内核**](examples/mlx_metal_kernel_opt/) | 硬件 | Apple Silicon 优化 | [基准测试](examples/mlx_metal_kernel_opt/README.md) | | [**Rust 自适应排序**](examples/rust_adaptive_sort/) | 算法 | 数据感知排序 | [代码进化](examples/rust_adaptive_sort/) | | [**符号回归**](examples/symbolic_regression/) | 科学 | 自动化方程发现 | [LLM-SRBench](examples/symbolic_regression/) | | [**网页爬虫 + OptiLLM**](examples/web_scraper_optillm/) | AI 集成 | 测试时计算优化 | [智能爬取](examples/web_scraper_optillm/) |

快速示例:函数最小化

观看 OpenEvolve 从随机搜索进化为复杂的优化算法:

# 初始程序(随机搜索)
def minimize_function(func, bounds, max_evals=1000):
    best_x, best_val = None, float('inf')
    for _ in range(max_evals):
        x = random_point_in_bounds(bounds)
        val = func(x)
        if val < best_val:
            best_x, best_val = x, val
    return best_x, best_val

进化过程

# 进化后的程序(模拟退火 + 自适应冷却)
def minimize_function(func, bounds, max_evals=1000):
    x = random_point_in_bounds(bounds)
    temp = adaptive_initial_temperature(func, bounds)

    for i in range(max_evals):
        neighbor = generate_neighbor(x, temp, bounds)
        delta = func(neighbor) - func(x)

        if delta < 0 or random.random() < exp(-delta/temp):
            x = neighbor

        temp *= adaptive_cooling_rate(i, max_evals)  # 动态冷却

    return x, func(x)

性能:收敛速度提升 100 倍!

高级示例

提示词进化 **进化提示词而非代码**以获得更好的大语言模型性能。查看 [大语言模型提示词优化示例](examples/llm_prompt_optimization/) 了解完整案例研究,其中 HotpotQA 实现了 +23% 的准确率提升。 [完整示例](examples/llm_prompt_optimization/)
🏁 竞技编程 **为编程竞赛自动生成解决方案**:
# 问题:寻找最大子数组和
# OpenEvolve 发现多种方法:

# 进化路径 1:暴力法 → Kadane 算法
# 进化路径 2:分治法 → 优化的 Kadane 算法
# 进化路径 3:动态规划 → 空间优化的动态规划
[在线判题系统集成](examples/online_judge_programming/)

配置

OpenEvolve 为高级用户提供广泛的配置选项:

# 高级配置示例
max_iterations: 1000
random_seed: 42  # 完全可复现性

llm:
  # 集成配置
  models:
    - name: "gemini-2.5-pro"
      weight: 0.6
    - name: "gemini-2.5-flash"
      weight: 0.4
  temperature: 0.7

database:
  # MAP-Elites 质量-多样性
  population_size: 500
  num_islands: 5  # 并行进化
  migration_interval: 20
  feature_dimensions: ["complexity", "diversity", "performance"]

evaluator:
  enable_artifacts: true      # 向大语言模型提供错误反馈
  cascade_evaluation: true    # 多阶段测试
  use_llm_feedback: true      # AI 代码质量评估

prompt:
  # 复杂的灵感系统
  num_top_programs: 3         # 最佳表现者
  num_diverse_programs: 2     # 创造性探索
  include_artifacts: true     # 执行反馈

  # 自定义模板
  template_dir: "custom_prompts/"
  use_template_stochasticity: true  # 随机化提示词
🎯 特征工程 **控制程序在质量-多样性网格中的组织方式:** ```yaml database: feature_dimensions: - "complexity" # 内置:代码长度 - "diversity" # 内置:结构多样性 - "performance" # 自定义:来自你的评估器 - "memory_usage" # 自定义:来自你的评估器 feature_bins: complexity: 10 # 10 个复杂度等级 performance: 20 # 20 个
8 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
关于 ·  帮助 ·  PING ·  隐私 ·  条款   
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
耗时 52 ms
Developed with Cursor