FeatureBench: 복잡한 기능 개발을 위한 에이전트 코딩 벤치마크
초록
FeatureBench는 LLM 기반 코드 에이전트의 복잡한 기능 개발 능력을 평가하는 새로운 벤치마크입니다. 기존 벤치마크가 단일 PR 내 버그 수정에 국한된 반면, FeatureBench는 여러 커밋에 걸친 종단간(end-to-end) 기능 개발 시나리오를 다룹니다. 실행 기반 평가와 테스트 주도 자동화 도구를 통해 24개 오픈소스 저장소에서 200개의 도전적인 작업과 3825개의 실행 환경을 구축했습니다. 실험 결과, SWE-bench에서 74.4% 성공률을 보인 최신 모델도 FeatureBench에서는 11.0%에 그쳐, 에이전트 코딩 발전을 위한 새로운 기회를 제시합니다.
상세 분석
FeatureBench는 기존 코딩 벤치마크의 한계를 해결하기 위한 몇 가지 혁신적인 방법론을 제시합니다. 핵심은 ‘테스트 주도 코드 패치 추출’ 프로세스입니다. 이 방법은 저장소 내 단위 테스트를 실행하여 실패하는 테스트(Fail-to-Pass, F2P)와 성공하는 테스트(Pass-to-Pass, P2P)를 식별하는 것으로 시작합니다. 이후 동적 트레이싱을 통해 런타임 의존성 그래프를 구성하고, 그래프 순회 알고리즘을 적용해 목표 기능의 구현 코드만을 정확히 분리해냅니다. 이 과정은 해당 기능이 구현되지 않은 초기 코드베이스(Pre-solved Codebase)와 해당 기능을 구현한 코드 패치(Gold Patch)를 동시에 생성하는 것을 가능하게 합니다.
이 접근법의 핵심 장점은 세 가지입니다. 첫째, 기능 개발 작업을 자동으로 생성함으로써 인간이 작성한 PR이나 커밋의 역사적 경로에 얽매이지 않습니다. 이는 기능 개발이 여러 PR에 걸쳐 산발적으로 이루어지는 현실을 반영합니다. 둘째, 생성된 작업의 정확성을 보장합니다. 분리 과정에서 다른 기능들의 무결성을 검증하는 사후 검증(Post Verification) 단계를 거쳐, 에이전트가 목표 기능만을 구현하면 나머지 기능들은 정상적으로 작동하도록 합니다. 셋째, 높은 확장성을 제공합니다. 이 도구를 통해 새로운 저장소에서 지속적으로 작업 인스턴스를 생성할 수 있어, 데이터 누출 문제를 완화하고 벤치마크를 최신 상태로 유지할 수 있습니다.
평가 측면에서도 FeatureBench는 명확한 인터페이스 정의를 제공하여 평가의 모호성을 제거합니다. 각 작업은 호출 가능한 모듈을 구현하도록 요구하며, 정확한 임포트 경로와 함수 시그니처를 명시합니다. 이를 통해 구현의 정확성을 단위 테스트 실행만으로 자동화된 평가가 가능해집니다. 작업 난이도는 기존 코드베이스 확장(Level 1)과 처음부터 구현(Level 2)으로 구분되어 에이전트 능력의 다양한 측면을 평가합니다.
댓글 및 학술 토론
Loading comments...
의견 남기기