웹을 탐색하고, 코드를 작성하며, 작업을 계획하는 완전 로컬 자율 에이전트입니다.
한국어는 runchr 제공 번역입니다. 원문 README는 English tool page.
openevolve
오픈소스 AlphaEvolve 구현: LLM을 자율 코드 최적화 도구로 전환하여 더 빠른 커널과 더 나은
- Run
- python openevolve-run.py initial_program.py evaluator.py --config config.yaml --iterations 50
- Interface
- cli
- Models
- Gemini
프로젝트 README (번역)
GitHub ↗Written by the project's own authors, not by runchr. Snapshot taken 2026-10-31.
OpenEvolve
🧬 가장 진보된 오픈소스 진화형 코딩 에이전트
LLM을 자율적인 코드 최적화 도구로 전환하여 획기적인 알고리즘을 발견하세요
🚀 빠른 시작 • 예제 • 시스템 메시지 • 토론
무작위 탐색에서 최첨단까지: 코드가 실시간으로 진화하는 모습을 지켜보세요
OpenEvolve를 선택하는 이유
자율적 발견
LLM은 단순히 최적화만 하는 것이 아니라 완전히 새로운 알고리즘을 발견합니다. 인간의 안내가 필요 없습니다.
입증된 결과
실제 하드웨어에서 2-3배 속도 향상. 최첨단 원 패킹. 획기적인 최적화.
연구 등급
완전한 재현성, 광범위한 평가 파이프라인, 과학적 엄격함이 내장되어 있습니다.
OpenEvolve vs 수동 최적화:
측면
수동 최적화
OpenEvolve
해결까지 걸리는 시간
며칠에서 몇 주
몇 시간
탐색 범위
인간의 창의성에 의해 제한됨
무한한 LLM 창의성
재현성
복제하기 어려움
완전히 결정론적
다중 목표
복잡한 트레이드오프
자동 파레토 최적화
확장성
확장되지 않음
섬 간 병렬 진화
입증된 성과
도메인
성과
예시
GPU 최적화
하드웨어 최적화 커널 발견
MLX Metal 커널
수학
최첨단 원 패킹 (n=26)
원 패킹
알고리즘 설계
적응형 정렬 알고리즘
Rust 적응형 정렬
과학 컴퓨팅
자동화된 필터 설계
신호 처리
다중 언어
Python, Rust, R, Metal 셰이더
모든 예제
🚀 빠른 시작
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
# 여러 진화를 병렬로 실행하시나요? 각 실행에 로거 접두사를 지정하여
# 로그 출력을 구분할 수 있게 하세요 ("run1.openevolve.*"로 기록됨)
python openevolve-run.py examples/function_minimization/initial_program.py \
examples/function_minimization/evaluator.py \
--logger-prefix run1
참고: 예제 구성은 기본적으로 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
if __name__ == '__main__' :
result = evolve_function (
bubble_sort ,
test_cases = [([ 3 , 1 , 2 ], [ 1 , 2 , 3 ]), ([ 5 , 2 , 8 ], [ 2 , 5 , 8 ])],
iterations = 50
)
print ( f"Evolved sorting algorithm: { result . best_code } " )
참고: macOS와 Windows에서 Python은 멀티프로세싱에 spawn을 사용합니다. 하위 프로세스 부트스트랩 오류를 피하려면 진화 호출을 if __name__ == '__main__': 로 감싸야 합니다.
섬 스케줄링을 실험하려면 run_evolution 에 선택적 선택자를 전달하세요:
def select_island ( context ):
# 대기 중인 작업이 가장 적은 섬에서 다음 반복을 스케줄링합니다.
return min ( range ( len ( context . islands )), key = lambda i : context . pending_counts [ i ])
result = run_evolution (
initial_program = "program.py" ,
evaluator = "evaluator.py" ,
island_selector = select_island ,
)
선택자는 반복 번호, 대기 중인 작업 수, 각 섬의 개체군 크기, 최고 및 평균 점수, 다양성, 세대를 포함하는 읽기 전용 IslandSelectionContext를 받습니다. 0에서 num_islands - 1 사이의 섬 ID를 반환해야 합니다. 이는 각 반복이 제출되기 전에 메인 프로세스에서 실행됩니다. 선택자가 없으면 OpenEvolve는 기존의 균형 잡힌 섬 스케줄링을 사용합니다.
개체군 관리는 결정 훅을 사용할 수도 있습니다. 예를 들어, 다음 정책은 후보가 섬의 MAP-Elites 셀 점유자와 점수가 동점일 때 교체하도록 합니다:
from openevolve import run_evolution
from openevolve . population import PopulationStrategy
strategy = PopulationStrategy (
replace_cell = lambda state , candidate , incumbent , island : (
candidate . metrics [ "combined_score" ] >= incumbent . metrics [ "combined_score" ]
),
)
result = run_evolution ( "program.py" , "evaluator.py" , population_strategy = strategy )
다른 선택적 훅으로는 admit(state, candidate, island) -> bool ,
archive(state, candidate) -> ArchiveDecision ,
evict(state, count, protected_ids) -> 프로그램 ID 시퀀스 ,
migration_due(state) -> bool , 그리고 migrate(state) -> MigrationMove 시퀀스 가 있습니다.
state 는 프로그램, 섬 구성원, 셀 소유자, 아카이브, 개체군 제한, 마이그레이션 세대의 분리된 PopulationSnapshot입니다. 지정되지 않은 훅은 기존 규칙을 유지합니다. ProgramDatabase가 결정을 검증하고 모든 변경을 적용합니다; 전략은 변경 가능한 데이터베이스를 절대 받지 않습니다. 초기 시드는 거부될 수 없습니다.
Docker를 선호하시나요? Docker 옵션은 설치 및 설정 섹션을 참조하세요.
실제 작동 모습 보기
원 패킹: 무작위에서 최첨단까지
OpenEvolve가 실시간으로 최적의 원 패킹을 발견하는 모습을 지켜보세요:
1세대
190세대
460세대 (최종)
무작위 배치
구조 학습
최첨단 결과
결과 : 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는 단순한 최적화를 훨씬 뛰어넘는 정교한 진화형 코딩 파이프라인을 구현합니다:
핵심 혁신 : MAP-Elites + LLM
품질-다양성 진화 : 특징 차원 전반에 걸쳐 다양한 개체군을 유지
섬 기반 아키텍처 : 다중 개체군이 조기 수렴을 방지
LLM 앙상블 : 지능형 폴백 전략을 갖춘 다중 모델
아티팩트 사이드 채널 : 오류 피드백이 후속 세대를 개선
고급 기능
과학적 재현성
포괄적 시딩 : 모든 구성 요소 (LLM, 데이터베이스, 평가)가 시드됨
기본 시드=42 : 즉시 재현 가능한 결과를 기본 제공
결정론적 진화 : 머신 간 실행의 정확한 재현
구성 요소 격리 : 해시 기반 격리로 교차 오염 방지
고급 LLM 통합
범용 API : OpenAI, Google, Claude Code CLI, 로컬 모델, 프록시와 함께 작동
지능형 앙상블 : 정교한 폴백을 갖춘 가중 조합
테스트 시점 컴퓨팅 : 프록시 시스템을 통한 향상된 추론 (OptiLLM 설정 참조 )
플러그인 생태계 : 고급 추론 플러그인 지원
진화 알고리즘 혁신
이중 선택 : 성능과 영감을 위한 서로 다른 프로그램
적응형 특징 차원 : 사용자 정의 품질-다양성 지표
마이그레이션 패턴 : 제어된 유전자 흐름을 갖춘 링 토폴로지
다중 전략 샘플링 : 엘리트, 다양한, 탐색적 선택
다음에 완벽함
사용 사례
OpenEvolve가 뛰어난 이유
성능 최적화
인간이 놓치는 하드웨어별 최적화를 발견
알고리즘 발견
고전 문제에 대한 새로운 접근 방식 발견
과학 컴퓨팅
지루한 수동 튜닝 프로세스 자동화
경쟁 프로그래밍
다중 솔루션 전략 생성
다중 목표 문제
차원 전반에 걸친 파레토 최적 솔루션
🛠 설치 및 설정
요구 사항
Python : 3.10+
LLM 액세스 : 모든 OpenAI 호환 API 또는 Claude Code CLI
선택 사항 : 컨테이너화된 실행을 위한 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
비용 추정
비용은 LLM 공급자와 반복 횟수에 따라 달라집니다:
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 또는 로컬 모델 사용
나쁜 프로그램을 조기에 필터링하기 위해 캐스케이드 평가 사용
처음에는 더 작은 개체군 크기 구성
LLM 공급자 설정
OpenEvolve는 모든 OpenAI 호환 API와 함께 작동합니다 :
🔥 OpenAI (직접)
export OPENAI_API_KEY= " sk-... "
# 기본적으로 OpenAI 엔드포인트 사용
🤖 Google Gemini
# config.yaml
llm :
api_base : " https://generativelanguage.googleapis.com/v1beta/openai/ "
primary_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
primary_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 "
primary_model : " moa&readurls-o3 " # 테스트 시점 컴퓨팅 + 웹 액세스
🔮 Claude Code CLI (API 키 불필요)
Claude Code CLI를 LLM 백엔드로 사용 — API 키가 필요 없으며, 인증은 CLI의 OAuth 세션을 사용합니다.
# 설치 및 인증
npm install -g @anthropic-ai/claude-code
claude login
# config.yaml
llm :
provider : " claude_code "
models :
- name : " sonnet "
weight : 0.8
max_tokens : 16000
max_budget_usd : 1.0
- name : " haiku "
weight : 0.2
max_tokens : 8000
전체 안내는 Claude Code 빠른 시작 예제를 참조하세요.
🤖 GitHub Copilot CLI (API 키 불필요)
GitHub Copilot CLI를 LLM 백엔드로 사용 — API 키가 필요 없으며, 인증은 GitHub Copilot 구독을 사용합니다.
# 설치 및 인증
npm install -g @github/copilot
copilot login
# config.yaml
llm :
provider : " copilot_cli "
models :
- name : " claude-sonnet-4.6 "
weight : 0.8
reasoning_effort : " medium "
- name : " gpt-5.4 "
weight : 0.2
전체 안내는 Copilot CLI 빠른 시작 예제를 참조하세요.
🧩 Codex App Server (API 키 불필요)
Codex CLI의 app-server를 LLM 백엔드로 사용 — API 키가 필요 없습니다. 인증은 ChatGPT (Codex) 구독을 사용합니다: app-server가 관리형 브라우저/디바이스 코드 로그인을 소유하고 토큰을 자체적으로 갱신합니다. OpenEvolve는 CLI의 토큰 파일을 절대 읽지 않으며, 각 생성 전에 ChatGPT 플랜 로그인이 활성 상태인지 app-server로 확인합니다 (그렇지 않으면 codex login을 가리키는 명확한 메시지와 함께 실패합니다). 대신 API 키로 청구하려면 기본 OpenAI 공급자를 유지하세요 — 두 경로가 공존합니다.
# 설치 및 인증
npm install -g @openai/codex
codex login # 브라우저 흐름, 또는: codex login --device-code
# config.yaml
llm :
provider : " codex_app…
Other tools that do the same work
109개의 실습 프로젝트를 담은 AI 에이전트 설계 오픈소스 도서.
아이디어, 계획, 코드베이스를 인터랙티브 다이어그램으로 바꿔주는 에이전트 스킬입니다.
No comments yet.
to comment.