OmniCode: 다중언어·다중작업 소프트웨어 엔지니어링 에이전트 평가 벤치마크
초록
OmniCode는 버그 수정, 테스트 생성, 코드 리뷰 응답, 스타일 수정 네 가지 작업을 포함해 Python·Java·C++ 3개 언어의 1,794개 실전 과제를 제공한다. 기존 HumanEval·SWE‑Bench이 다루던 좁은 범위와 달리, 실제 개발 흐름을 모방한 종합적인 평가를 목표로 하며, 모든 과제는 수동 검증과 합성 데이터 생성으로 품질을 확보했다. SWE‑Agent와 Aider를 테스트한 결과, 특히 테스트 생성과 C++·Java 작업에서 성능이 20 % 이하에 머물러 현존 LLM 에이전트의 한계를 드러냈다.
상세 분석
OmniCode는 기존 코딩 벤치마크가 “코드 한 조각을 작성한다”는 단일 목표에 머무른 점을 비판하고, 소프트웨어 개발 라이프사이클 전반에 걸친 네 가지 핵심 작업을 설계했다. 첫째, 버그 수정은 기존 SWE‑Bench과 동일하게 이슈 설명과 테스트 스위트를 제공하고, 에이전트가 패치를 생성하도록 한다. 둘째, 테스트 생성 작업은 ‘잘못된 패치(bad patch)’를 인위적으로 만들고, 에이전트가 작성한 테스트가 정답 패치에는 통과하고 모든 잘못된 패치에는 실패하도록 평가한다. 이는 단순히 정답 패치만 통과하면 되는 기존 방식보다 테스트의 구별력을 크게 강화한다. 셋째, 코드 리뷰 응답은 LLM이 만든 부정확한 패치를 기반으로 리뷰 코멘트를 생성하고, 이를 바탕으로 에이전트가 패치를 수정하도록 한다. 마지막으로 스타일 수정은 언어별 스타일 검사 도구를 이용해 위반 코드를 제시하고, 이를 자동 교정하도록 요구한다.
데이터 수집은 27개의 오픈소스 레포지토리(머신러닝, 과학 라이브러리, 시스템 라이브러리 등)에서 494개의 PR을 베이스 인스턴스로 선정하고, 각 인스턴스에 대해 언어별 복잡도 지표(파일·헝크·라인 변화)를 계산해 난이도를 정량화했다. 특히 C++가 가장 높은 복잡도를 보였으며, 이는 실험 결과와 일치한다. 합성 데이터 생성 파이프라인은 여러 LLM(Gemma, Qwen2.5 Coder, Llama 3, GPT‑4.1‑nano 등)과 도구(스타일 검사기)를 활용해 다양한 오류 모드와 스타일 위반을 자동으로 만들었다.
평가에서는 SWE‑Agent와 Aider를 각각 Gemini 2.5 Flash, DeepSeek‑V3.1, GPT‑5‑mini, Qwen3‑32B 등 4가지 모델로 실행했다. 전반적으로 에이전트는 Python 버그 수정에서 60 % 이상을 맞추지만, 테스트 생성에서는 최고 20.9 %에 불과했다. 리뷰 응답은 Python에서 52.2 %까지 올라가지만, Java·C++에서는 급격히 떨어진다. 스타일 수정 역시 Python에서 비교적 양호하지만, Java·C++에서는 30 % 이하의 성능을 보였다. 이는 현재 LLM이 언어별 정적 분석·테스트 설계 능력이 부족함을 시사한다.
이 논문은 (1) 다중작업·다중언어 벤치마크 설계, (2) 실제 레포지토리 기반 데이터와 합성 데이터의 결합, (3) 정교한 평가 메트릭(정답 패치와 다중 bad patch 비교)이라는 세 축에서 기여한다. 한편, 합성 bad patch가 실제 개발자 오류를 충분히 대변하는가, 스타일 검사 도구의 커버리지가 모든 프로젝트에 적용 가능한가 등 데이터 품질과 일반화 가능성에 대한 논의가 필요하다. 향후 연구는 더 많은 언어와 도메인(예: 웹·모바일) 확대, 인간‑LLM 협업 시나리오(예: 인터랙티브 리뷰) 도입, 그리고 평가 메트릭을 코드 품질·보안 측면까지 확장하는 방향으로 진행될 것으로 기대된다.
댓글 및 학술 토론
Loading comments...
의견 남기기