벤치마크 · agentic
SWE-bench Verified
AI 에이전트가 실제 GitHub issue를 처음부터 끝까지 해결할 수 있는지 평가합니다. "Verified" 세트는 인기 오픈소스 Python 저장소에서 뽑아 사람이 검증한 500개의 과제입니다.
자세히 보기
- 예시
- 버그 리포트와 저장소가 주어지면 모델은 코드 patch를 만들어 내야 합니다 — 예를 들어 실패하는 날짜 파싱 함수를 고쳐 프로젝트의 테스트 스위트가 통과하도록 만드는 식입니다.
- 채점 방식
- 해결한 issue의 비율 — 보통 pass@1(한 번의 시도)로 보고합니다. 높을수록 좋습니다.
- 검증 방식
- 완전 자동입니다: 생성된 patch를 적용하고 프로젝트의 실제 숨겨진 유닛 테스트를 샌드박스에서 실행합니다. 모든 대상 테스트가 통과하고 아무것도 회귀하지 않을 때만 과제가 인정됩니다.
- 왜 중요한가
- 실제 환경 코딩 에이전트를 다루는 대표 벤치마크이자 모든 프런티어 릴리스의 간판 수치로, 여기서의 진전은 에이전트가 자율적인 소프트웨어 엔지니어링에 얼마나 가까워졌는지를 보여줍니다.
예제 풀이
문제
고정된 기준 commit 상태의
django/django 저장소. 버그 리포트: django.utils.text.slugify("___This-is-a-Test___", allow_unicode=True) 가 '___this-is-a-test___' 를 반환하지만, 앞뒤의 밑줄과 하이픈은 제거되어 결과가 'this-is-a-test' 가 되어야 합니다. 모델에는 issue 텍스트와 저장소만 주어지며, unified diff 형식의 patch를 출력해야 합니다.해답
--- a/django/utils/text.py
+++ b/django/utils/text.py
@@ def slugify(value, allow_unicode=False):
value = re.sub(r"[^\w\s-]", "", value.lower())
- return re.sub(r"[-\s]+", "-", value)
+ return re.sub(r"[-\s]+", "-", value).strip("-_")
풀이
slugify는 내부 구분자를 하나로 합치지만 주변의
-/_ 는 결코 잘라내지 않으므로, 마지막 re.sub 에 .strip("-_") 를 덧붙이면 그것들이 제거됩니다. patch는 최소한이며 다른 모든 동작은 그대로 보존합니다. SWE-bench Verified는 기준 commit 상태의 저장소에 patch를 적용하고 숨겨진 스위트를 실행해 채점합니다 — 모든 FAIL_TO_PASS 테스트가 통과로 바뀌고 모든 PASS_TO_PASS 테스트가 그대로 통과일 때만 인정됩니다.