벤치마크 · agentic
SWE-Lancer
SWE-Lancer는 Upwork의 실제 프리랜스 소프트웨어 엔지니어링 과제 1,488개로 이루어진 벤치마크로, 실제 지급액 기준 총 100만 달러(USD)에 해당합니다. 이 과제들을 완전히 해결해 모델이 그 금액 중 얼마를 '벌 수' 있는지를 측정하며, 벌어들인 USD 총액(과 해결한 과제 비율)으로 점수를 매깁니다.
자세히 보기
- 예시
- 프리랜스 스타일의 버그 수정 과제: 실제 (GitHub 스타일의) issue와 앱의 전체 repository가 주어지면, 모델은 망가진 사용자 흐름을 다시 작동하게 만드는 patch를 만들어야 합니다(예: 더치페이 또는 결제 화면). 이는 end-to-end 테스트로 검증됩니다. 두 번째 트랙은 관리 과제로, 여러 엔지니어링 제안 중 가장 좋은 것을 고릅니다.
- 채점 방식
- 각 과제에는 Upwork에서 실제로 지급된 진짜 USD 가격이 붙어 있습니다(약 50~32,000달러). 모델은 해답이 통과할 때만 그 과제의 전액을 벌며, 한 과제 안에서의 부분 점수는 없습니다. 핵심 지표는 100만 달러 풀에서 벌어들인 총 달러 금액과 해결한 과제의 비율이며, 두 트랙(IC 코딩과 관리)도 각각 별도로 보고됩니다.
- 검증 방식
- 코딩(IC) 과제는 실제 사용자 동작을 흉내 내는 end-to-end 테스트(Playwright)로 채점됩니다. 이 테스트는 전문 엔지니어가 작성하고 검증하며, 격리된 Docker 환경에서 실행됩니다. 모델의 patch는 그 과제의 모든 테스트를 통과해야 하고, 모델은 테스트를 보거나 편집할 수 없습니다. 관리 과제는 모델이 당시 채용 매니저가 실제로 선택했던 것과 같은 제안을 고를 때 인정됩니다.
- 왜 중요한가
- 합성 문제나 자체 채점 문제가 아니라, 실제 프로덕션 코드베이스에서 시장 가격이 매겨진 경제적으로 실질적인 작업에 모델 성능을 연결합니다. 채점이 (고립된 함수 단위 수정이 아니라) 완전한 end-to-end 사용자 흐름을 사용하고 여기에 관리 의사결정 트랙까지 더해지므로, 최전선 모델이 사람들이 실제로 프리랜서에게 값을 치르는 완결적이고 가치 있는 엔지니어링을 해낼 수 있는지를 시험합니다.
예제 풀이
문제
IC SWE 과제(예시, 약 250달러): 금액을 입력하기 전에 참가자를 제거하면 앱의 「Split Bill」 화면이 합계를 NaN으로 표시합니다. 전체 repository가 담긴 Docker 컨테이너에서 작업하여, 표시되는 합계가 다시 $0.00으로 돌아오도록 버그를 고치세요. 숨겨진 end-to-end 테스트가 이 사용자 흐름을 재생합니다.
해답
```diff
function getSplitTotal(amounts) {
- return amounts.reduce((sum, a) => sum + a.value, 0);
+ return amounts.reduce((sum, a) => sum + (Number(a?.value) || 0), 0);
}
```
풀이
참가자를 제거하면 value가 undefined인 항목이 남아 a.value가 누적 합계를 NaN으로 만듭니다. 각 값을 Number(...) || 0으로 변환하면 빠진 금액을 건너뛰어 합계가 $0.00으로 표시됩니다. 채점은 이진값이며, patch는 실제 사용자 흐름에 대해 실행되는 그 과제의 모든 end-to-end 테스트를 통과해야만 과제의 전액 USD를 벌 수 있습니다.
| 날짜 | 모델 | 점수 | 출처 |
|---|---|---|---|
| 2025-03-05 | GPT-4.5 | 32.6% | 오픈에이아이, 차트GPT 플러스용 최대 규모 모델 GPT-4.5 출시 |