openevolve
무엇인가
OpenEvolve는 초기 프로그램을 하나의 해로 두고 LLM에게 변이를 맡기는 진화 탐색 프레임워크다. Google DeepMind의 AlphaEvolve를 공개 구현으로 옮긴 것으로, 알고리즘 후보를 사람이 손으로 고치고 다시 측정하던 자리를 대체한다.
어떻게 동작하나
동작 단위는 세 파일이다. 초기 프로그램(initial_program.py), 후보를 실행해 점수를 내는 evaluator.py, LLM 접속과 프롬프트를 담은 config.yaml이다. 한 세대마다 LLM이 프로그램을 변이하고, evaluator가 실행해 원시 측정값을 돌려주면 OpenEvolve가 그 값을 자동으로 binning해 품질-다양성 그리드에 배치한다. 다음 세대의 부모는 이 그리드에서 뽑히므로 최고점 하나로 수렴하지 않고 서로 다른 특성의 해가 함께 보존된다. 프롬프트 템플릿에 {greeting}이나 {improvement_suggestion} 같은 자리표시자를 두면 세대마다 변형이 무작위로 선택돼 탐색 다양성이 올라간다.
무엇과 다른가
무작위 탐색이나 수동 튜닝과의 차이는 탐색을 LLM의 코드 이해 위에 얹는다는 점이다. 단순 LLM 코드 생성과의 차이는 평가 루프가 붙는다는 점으로, 생성된 후보는 반드시 evaluator를 통과해야 살아남는다. 결과물은 최종 프로그램과 함께 세대별 후보·점수 기록으로 남아 재현과 비교가 가능하다.
어떻게 쓰나
설치는 pip install openevolve 또는 ghcr.io/algorithmicsuperintelligence/openevolve 이미지로 한다. CLI에서는 초기 프로그램과 evaluator 경로를 넘기고 반복 횟수를 지정한다: openevolve examples/function_minimization/initial_program.py examples/function_minimization/evaluator.py --iterations 100. LLM은 config.yaml의 llm 섹션에서 api_base와 model로 지정하며, OpenAI 호환 엔드포인트면 Gemini·Ollama·OptiLLM 프록시를 그대로 꽂을 수 있고 claude_code provider도 따로 있다. 외부 파일 없이 라이브러리로 임베드하는 사용법도 있다.
전제와 한계
전제가 있다. Python 환경과 LLM 접속 정보가 필요하고, Gemini 임베딩을 쓰면 GEMINI_API_KEY 또는 GOOGLE_API_KEY를 설정해야 한다. 초기 프로그램과 evaluator는 사용자가 직접 작성해야 하며, evaluator는 binning을 하지 말고 원시 값을 반환해야 한다. 세대마다 LLM 호출이 발생하므로 반복 횟수만큼 비용과 시간이 든다.
유사 도구
- hermes-agent세션을 넘어 기억과 스킬을 축적하는 자기 개선형 AI 에이전트다. 터미널 TUI와 메시징 게이트웨이로 어느 모델, 어느 인프라에서든 상주 실행한다.
- Fuxi터미널에서 코드를 읽고 고치고 명령을 실행하는 AI 코딩 에이전트다. 단일 정적 바이너리로 배포되고 LLM 제공자를 가리지 않는다.
- MetaGPT한 줄 요구사항을 입력하면 제품 관리자·아키텍트·엔지니어 역할의 LLM 에이전트 팀이 SOP 순서대로 요구사항·설계·API·코드를 산출하는 멀티에이전트 프레임워크다.
- shell_gpt터미널에서 자연어 프롬프트로 셸 명령·코드·문서를 생성하는 Python CLI다. OS와 $SHELL을 인식해 명령을 만들고 대화 세션을 파일로 보관한다.