벤치마크 · agentic
SWE-rebench
SWE-rebench는 코딩 벤치마크 SWE-bench를 지속적으로 갱신한 변형으로, 최근 GitHub issue에서 과제를 가져와 모델이 학습 중에 이미 본 적이 있을 가능성을 줄입니다. 모델이 해결한 소프트웨어 엔지니어링 과제의 비율(% resolved)을 보고합니다.
자세히 보기
- 예시
- 전형적인 과제는 GitHub 저장소의 실제 버그 리포트나 기능 요청을 모델에게 주고, 모델은 그 문제를 해결하기 위해 프로젝트 코드를 수정해야 합니다.
- 채점 방식
- 지표는 % resolved로, 모델이 고친 과제 수를 전체 과제 수로 나눠 백분율로 나타냅니다.
- 검증 방식
- 저장소 자체의 테스트 스위트가 수정된 코드에서 통과하면 해답이 자동으로 인정됩니다. 수정은 실패하던 테스트를 통과시키면서 다른 테스트를 깨뜨리지 않아야 합니다.
- 왜 중요한가
- 과제가 최근 issue에서 계속 갱신되기 때문에, 실제 코딩 능력을 더 깨끗하게 측정할 수 있고 오래된 공개 벤치마크 데이터를 암기해 점수를 부풀리기가 더 어렵습니다.
예제 풀이
문제
GitHub의 실제 Python 저장소(
python-slugify)에서 만들어져 베이스 commit에 고정된 SWE-rebench 인스턴스. 문제: slugify('Hello, World!')가 'hello--world'를 반환함 — 연속된 구분자가 하나가 아니라 이중 하이픈을 만들지만, 기대되는 slug는 'hello-world'임. 제출물: 저장소 스냅샷에 대한 git-diff 패치로, FAIL_TO_PASS 테스트를 통과시키고 모든 PASS_TO_PASS 테스트를 그대로 통과 상태로 유지해야 함.해답
--- a/slugify/slugify.py
+++ b/slugify/slugify.py
@@ def slugify(text):
text = re.sub(r"[^\w\s-]", "", text).strip().lower()
- return re.sub(r"[\s]+", "-", text)
+ text = re.sub(r"[\s]+", "-", text)
+ return re.sub(r"-{2,}", "-", text)
풀이
slug 생성기는 공백을
-로 합치지만 반복된 하이픈을 중복 제거하지 않아 여러 구분자가 새어 나옴; re.sub(r'-{2,}', '-', text)를 추가하면 이를 단일 -로 정규화함. SWE-rebench는 실행 기반으로 채점함: 저장소 컨테이너에서 패치를 적용해, FAIL_TO_PASS 테스트가 이제 통과하고 모든 PASS_TO_PASS 테스트가 여전히 통과할 때만 해당 인스턴스를 해결된 것으로 표시함(리더보드 = 해결 비율 %).