벤치마크 · coding
RepoBench
RepoBench는 Python과 Java를 대상으로 하는 저장소 수준 코드 자동완성 벤치마크로, 파일 내 컨텍스트와 같은 저장소의 다른 파일에서 온 교차 파일 컨텍스트를 모두 사용해 다음 코드 한 줄을 예측할 수 있는지를 측정합니다. 검색(RepoBench-R), 다음 줄 완성(RepoBench-C), 종단 간 파이프라인(RepoBench-P)의 세 가지 과제로 구성되며 주로 Exact Match와 Edit Similarity로, 검색 과제는 검색 정확도로 평가합니다.
자세히 보기
- 예시
- 소스 파일의 앞선 여러 줄과 같은 저장소의 다른 파일에서 추출한 코드 조각(예: 보조 함수나 클래스를 정의하는 모듈)이 주어졌을 때, 유일한 다음 코드 한 줄을 예측합니다 — 보통 다른 파일에 정의된 무언가를 호출하거나 참조하는 줄입니다.
- 채점 방식
- 완성(RepoBench-C 및 -P): 예측한 다음 줄을 정답 줄과 Exact Match(완전히 동일한 줄의 비율) 및 Edit Similarity(0–100 점수 = 1 − 정규화 Levenshtein 편집 거리)로 비교하며, CodeBLEU도 함께 보고합니다. 검색(RepoBench-R): accuracy@k — 정답 교차 파일 조각이 상위 k개 검색 후보에 포함된 항목의 비율입니다.
- 검증 방식
- 채점은 자동이며 정답 기반입니다(코드 실행 없음): 모델 출력 줄을 정규화한 뒤 원본 저장소에서 떼어 둔 실제 다음 줄과 문자열로 대조합니다. Exact Match에서는 완성이 정답 줄과 문자 단위로 동일할 때만 정답으로 인정되고, Edit Similarity는 부분 점수를 주며, 검색은 정답 조각이 상위 k개에 나타날 때 인정됩니다.
- 왜 중요한가
- 실제 코딩 도우미는 열려 있는 파일만이 아니라 저장소 전체에 걸쳐 추론해야 합니다. RepoBench는 교차 파일 컨텍스트 모델링 — 올바른 컨텍스트를 검색하고 그에 의존하는 다음 줄을 예측하는 것 — 을 분리해 평가하므로, 저장소를 인식하고 긴 컨텍스트를 다루는 코드 모델의 표준 시험대가 되었습니다.
예제 풀이
문제
교차 파일 컨텍스트 (helpers/formatting.py):
def to_title(text):
return text.strip().title()
파일 내 컨텍스트 (report.py):
from helpers.formatting import to_title
def make_heading(raw):
다음 줄을 예측하세요.
해답
return to_title(raw)
풀이
떼어 둔 다음 줄은 교차 파일 조각에서 정의되고 상단에서 임포트된 보조 함수 to_title을 함수 인자에 대해 호출하는데, 이는 원본 저장소 코드가 이 지점에서 하던 그대로입니다. 다른 파일을 무시하는 모델은 to_title이 올바른 호출임을 알 수 없습니다. 채점: 정답 줄과의 Exact Match, 그리고 근접한 일치에 대해 Edit Similarity가 부분 점수를 줍니다.
이 벤치마크에 대해 아직 검증된 점수가 없습니다.