본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
SWE-bench; SWE-bench
실제 GitHub 저장소의 이슈와 그 이슈를 해결한 풀 리퀘스트로 문제를 만들고, 모델이 만든 패치가 저장소의 테스트를 통과하는지로 소프트웨어 공학 능력을 재는 벤치마크

SWE-bench는 대형 언어 모델과 코딩 에이전트가 실제 오픈소스 프로젝트의 버그를 고치고 기능을 추가할 수 있는지를 재는 벤치마크다. 2023년 10월 프린스턴 대학교의 카를로스 히메네스(Carlos E. Jimenez), 존 양(John Yang) 등이 발표했고 ICLR 2024에서 구두 발표 논문으로 채택되었다.[1]

함수 하나를 짜는 HumanEval 같은 코드 생성 벤치마크와 달리, SWE-bench 문제를 풀려면 수천 개 파일로 된 저장소에서 고칠 곳을 찾고, 여러 함수·클래스·파일을 함께 고치고, 실행 환경과 상호작용해야 한다. 그래서 단일 모델보다 모델에 도구와 작업 절차를 붙인 에이전트 시스템을 평가하는 표준이 되었고, 2024~2025년 앤트로픽, OpenAI 등의 주요 모델 발표에 SWE-bench Verified 점수가 실렸다. 2026년 2월 OpenAI는 Verified의 테스트 결함과 오염을 이유로 점수 보고를 중단했다.

원본 SWE-bench 시험 세트는 django, sympy, scikit-learn, astropy 등 인기 파이썬 저장소 12개에서 모은 2,294개 과제다.[1] 각 과제는 다음으로 이루어진다.

  • 입력: 이슈 본문(problem_statement)과 이슈가 해결되기 직전 커밋(base_commit)의 저장소 전체.
  • 정답 패치: 이슈를 해결한 풀 리퀘스트의 코드 변경(patch). 모델에게는 보여 주지 않는다.
  • 테스트 패치: 같은 풀 리퀘스트가 추가하거나 고친 테스트(test_patch). 역시 모델에게 보여 주지 않는다.
  • FAIL_TO_PASS: 수정 전에는 실패하고 올바르게 고치면 통과해야 하는 테스트 목록. 이슈가 실제로 해결되었는지 확인한다.
  • PASS_TO_PASS: 수정 전후 모두 통과해야 하는 회귀 테스트 목록. 고치다가 다른 기능을 망가뜨리지 않았는지 확인한다.

모델은 이슈 글과 저장소만 보고 diff 형식의 패치를 만든다. 채점기는 패치를 적용한 뒤 테스트 패치를 얹고 두 목록의 테스트를 모두 돌려, 전부 통과해야만 그 과제를 해결(resolved)한 것으로 친다. 점수는 해결한 과제의 비율(% Resolved)이다. 과제 이름은 astropy__astropy-12907처럼 "저장소 소유자__저장소-번호" 꼴이다.

필드 예(astropy__astropy-12907)
repo astropy/astropy
problem_statement "Modeling's separability_matrix does not compute separability correctly for nested CompoundModels ..."
FAIL_TO_PASS astropy/modeling/tests/test_separable.py::test_separable[compound_model6-result6] 등
PASS_TO_PASS astropy/modeling/tests/test_separable.py::test_coord_matrix 등
difficulty(Verified만) 15 min - 1 hour

2024년 6월부터 채점기는 과제마다 도커 이미지를 만들어 저장소·파이썬 버전·의존성을 고정한 컨테이너 안에서 테스트를 돌린다. 공식 저장소는 x86_64 기계에 여유 저장 공간 120GB, 메모리 16GB, CPU 8코어 이상을 권한다.[2]

예측 파일은 과제마다 한 줄씩 쓰는 JSONL이다.

{"instance_id": "sympy__sympy-20590", "model_name_or_path": "my-agent", "model_patch": "diff --git a/sympy/core/... "}
pip install swebench
# 파이썬 모듈 방식(오래 쓰여 온 형태, 지금도 동작)
python -m swebench.harness.run_evaluation \
    --dataset_name princeton-nlp/SWE-bench_Lite \
    --predictions_path preds.jsonl \
    --max_workers 8 \
    --run_id my_run
# 2026년 v5 CLI 형태
swebench eval verified -p preds.jsonl --run-id my_run -j 8

결과 요약은 logs/evaluation/<run_id>/results.json에 쓰인다. 채점기는 같은 run_id와 과제 조합의 결과를 캐시하므로, 패치를 바꿔 다시 채점할 때는 run_id도 바꿔야 한다.[2] 데이터는 Hugging Face에서 load_dataset("princeton-nlp/SWE-bench", split="test")처럼 받을 수 있다.

점수는 모델만이 아니라 모델을 감싼 스캐폴드(에이전트 틀)에 크게 좌우된다. 2024년 같은 연구진이 낸 SWE-agent는 파일 열기·검색·편집·실행에 특화된 명령 체계(에이전트-컴퓨터 인터페이스)만 바꿔서 원본 SWE-bench 12.5%를 기록했다.[3] 이후 리더보드는 모델과 스캐폴드 조합별로 점수를 싣고, 모든 모델을 같은 최소 에이전트(mini-SWE-agent)로 돌린 "Bash Only" 표를 따로 둔다.[4]

이름 발표 규모 특징
SWE-bench(원본) 2023-10 2,294 파이썬 저장소 12개
SWE-bench Lite 2024-03 300 평가 비용을 줄이려 고른 부분집합[4]
SWE-bench Verified 2024-08, OpenAI와 공동 500 사람이 검수해 풀 수 있다고 확인한 부분집합(아래 절)
SWE-bench Multimodal 2024-10 617(2026년 9월 공개판 v2는 480) 웹 UI, 도표, 지도 등 시각적 자바스크립트 라이브러리 17개. 모든 과제의 이슈나 테스트에 이미지가 1장 이상[5]
SWE-bench Multilingual 2025년 무렵 300 저장소 42개, 언어 9개(C, C++, Go, Java, JavaScript, TypeScript, PHP, Ruby, Rust). 같은 데이터 형식과 채점 방식[6]
SWE-Bench Pro 스케일 AI, 2025-09 1,865 저장소 41개. 공개 세트(11개 저장소), 비공개 보류 세트(12개), 스타트업 사유 코드로 만든 상용 세트(18개). 전문 개발자가 몇 시간~며칠 걸리는 긴 과제[7]

Multimodal 논문 발표 당시 SWE-agent는 12%, 다음으로 좋은 시스템은 6%를 풀어, 파이썬 SWE-bench 상위 시스템도 시각적 프런트엔드 과제와 다른 언어로는 잘 일반화하지 못함을 보였다.[5] Multilingual 발표 글은 SWE-agent에서 클로드 3.7 소넷이 Verified 63%와 달리 Multilingual에서는 43%를 기록했다고 적었다.[6]

SWE-bench Verified

편집 원본 편집

원본 SWE-bench에는 이슈 설명만으로는 무엇을 고쳐야 할지 알 수 없거나, 테스트가 특정 구현만 정답으로 인정해 올바른 수정도 떨어뜨리는 과제가 섞여 있었다. OpenAI 대비(Preparedness) 팀은 SWE-bench 저자들과 함께 이를 걸러 2024년 8월 13일 SWE-bench Verified를 공개했다.[8]

  • 파이썬 경험이 있는 개발자 93명이 원본 시험 세트에서 무작위로 고른 1,699개 과제를 검수했다. 과제마다 3명이 독립적으로 이슈가 충분히 구체적인지, 테스트가 올바른 해법을 부당하게 떨어뜨리지 않는지 등을 0~3의 심각도로 매기고, 셋 중 가장 높은 심각도를 택했다.
  • 38.3%가 이슈 설명 불충분, 61.1%가 부당할 수 있는 테스트로 표시되어, 전체적으로 68.3%가 걸러졌다. 남은 과제에서 난이도를 고려해 500개를 뽑았다.
  • GPT-4o는 당시 가장 좋은 오픈소스 스캐폴드(Agentless)로 Verified 33.2%를 기록해, 원본 SWE-bench의 16%보다 두 배 이상 높았다. 원본이 실제 능력을 과소평가했다는 해석이다.

아래는 공식 논문·발표에 나온 수치다. 스캐폴드, 시도 횟수, 제외한 과제 수가 발표마다 달라 엄밀한 비교는 어렵다.

시기 시스템 세트 해결률 비고
2023-10 클로드 2 원본 1.96% BM25 검색으로 파일을 넣어 준 방식, 원 논문[1]
2024-05 SWE-agent + GPT-4 원본 12.5% [3]
2024-08 GPT-4o + Agentless Verified 33.2% [8]
2024-10 클로드 3.5 소넷(업그레이드판) Verified 49.0% 이전판 33.4%[9]
2025-02 클로드 3.7 소넷 Verified(489개) 63.7% / 70.3% 기본 스캐폴드 / 자체 스캐폴드, 인프라 비호환 11개 제외[10]
2025-05 클로드 오퍼스 4 / 소넷 4 Verified 72.5% / 72.7% [11]
2025-08 GPT-5 Verified(477개) 74.9% o3는 69.1%[12]
2025-08~2026-02 최고 기록 Verified 74.9% → 80.9% OpenAI가 6개월간 최고 기록 변화로 언급[13]

공식 리더보드의 Verified 표에서는 2026-10-16 현재 클로드 4.5 오퍼스를 쓴 두 시스템의 79.2%가 최고다. 리더보드에는 SWE-bench 팀이 직접 돌리거나 검증한 결과와 제출자가 보고한 결과가 함께 실려 있다.[4]

해법 유출과 약한 테스트

편집 원본 편집

2024년 10월 요크 대학교 연구진의 SWE-Bench+ 분석은 당시 1위였던 SWE-agent + GPT-4가 해결한 과제를 손으로 검토해, 32.67%는 이슈 본문이나 댓글에 해법이 이미 적혀 있던 "해법 유출", 31.08%는 테스트가 약해 틀린 패치도 통과한 경우라고 보고했다. 이런 과제를 빼면 해결률은 12.47%에서 3.97%로 떨어졌고, 이슈의 94% 이상이 모델들의 학습 데이터 기준일 이전에 만들어졌다는 점도 지적했다.[14]

Verified의 은퇴

편집 원본 편집

2026년 2월 23일 OpenAI는 SWE-bench Verified 점수 보고를 중단한다고 밝히고 다른 개발사에도 같은 조치를 권했다. 근거는 두 가지였다.[13]

  • 테스트 결함: o3가 64번 독립 실행에서 꾸준히 풀지 못한 138개 과제(전체의 27.6%)를 숙련 개발자 최소 6명이 검토한 결과, 59.4%에 테스트나 문제 설명의 실질적 결함이 있었다. 35.5%는 이슈에 나오지 않은 특정 함수 이름 같은 구현 세부를 강제하는 "좁은 테스트", 18.8%는 이슈에 없는 추가 기능까지 확인하는 "넓은 테스트"였다.
  • 오염: SWE-bench 문제와 저장소는 공개되어 학습 데이터에 들어가기 쉽다. OpenAI가 GPT-5로 다른 모델을 15턴까지 캐묻는 자동 레드티밍을 해 보니, GPT-5.2-Chat, 클로드 오퍼스 4.5, 제미나이 3 플래시 프리뷰가 과제 ID만 듣고도 정답 패치의 세부(파일 이름, 바뀐 코드, 주석 문구)를 그대로 재현하는 사례가 나왔다. 학습 중 문제를 본 모델일수록 불충분한 테스트를 통과하는 데 필요한 정보를 더 가지고 있다는 것이다.

OpenAI는 대안으로 오염이 덜한 SWE-Bench Pro 공개 세트 점수를 보고하겠다고 했다. 같은 글에서 Pro에도 오염 사례가 일부 있으나 훨씬 드물고 덜 심각했다고 적었다. 이 일은 공개 자료로 만든 벤치마크가 시간이 지나면 학습 데이터에 흡수된다는 벤치마크 오염 문제의 대표 사례가 되었다.

그 밖의 한계

편집 원본 편집
  • 원본·Verified는 파이썬, 그것도 일부 대형 저장소에 몰려 있어 다른 언어와 도메인을 대표하지 못한다. Multilingual, Multimodal, Pro가 이를 보완하려 나왔다.
  • 테스트 통과만 보므로 코드 품질, 가독성, 유지보수성은 평가하지 않는다.
  • 과제 하나에 수십~수백 번의 모델 호출이 들 수 있어 평가 비용이 크고, 리더보드가 비용과 단계 수를 함께 싣는 이유가 된다.
  1. ↑ 1.0 1.1 1.2 Carlos E. Jimenez 외, 〈SWE-bench: Can Language Models Resolve Real-World GitHub Issues?〉, ICLR 2024. arXiv:2310.06770
  2. ↑ 2.0 2.1 SWE-bench, SWE-bench GitHub 저장소 README와 평가 안내(2026-10-16 확인).
  3. ↑ 3.0 3.1 John Yang 외, 〈SWE-agent: Agent-Computer Interfaces Enable Automated Software Engineering〉, 2024. arXiv:2405.15793
  4. ↑ 4.0 4.1 4.2 SWE-bench, SWE-bench Leaderboards (2026-10-16 확인).
  5. ↑ 5.0 5.1 John Yang 외, 〈SWE-bench Multimodal: Do AI Systems Generalize to Visual Software Domains?〉, ICLR 2025. arXiv:2410.03859
  6. ↑ 6.0 6.1 Kabir Khandpur 외, SWE-bench Multilingual, SWE-bench 블로그.
  7. ↑ Xiang Deng 외, 〈SWE-Bench Pro: Can AI Agents Solve Long-Horizon Software Engineering Tasks?〉, 2025. arXiv:2509.16941
  8. ↑ 8.0 8.1 OpenAI, Introducing SWE-bench Verified, 2024-08-13.
  9. ↑ Anthropic, Introducing computer use, a new Claude 3.5 Sonnet, and Claude 3.5 Haiku, 2024-10-22.
  10. ↑ Anthropic, Claude 3.7 Sonnet and Claude Code, 2025-02-24.
  11. ↑ Anthropic, Introducing Claude 4, 2025-05-22.
  12. ↑ OpenAI, Introducing GPT-5 for developers, 2025-08-07.
  13. ↑ 13.0 13.1 OpenAI, Why SWE-bench Verified no longer measures frontier coding capabilities, 2026-02-23.
  14. ↑ Reem Aleithan 외, 〈SWE-Bench+: Enhanced Coding Benchmark for LLMs〉, 2024. arXiv:2410.06992