openevolve

AI Coding ToolsCLIPython

★ 7,356주당 +45조회 4

무엇인가

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 호출이 발생하므로 반복 횟수만큼 비용과 시간이 든다.

유사 도구