Claude 3.5 Sonnet SWE-bench 성능
업그레이드된 Claude 3.5 Sonnet은 SWE-bench Verified에서 49%의 성공률을 달성하여, 이전의 최고 기록인 45%를 넘어섰습니다. 이러한 개선은 모델의 향상된 추론, 코딩 및 수학적 능력과 모델의 자율성을 극대화하도록 설계된 최소한의 에이전트 스캐폴딩(scaffolding)이 결합된 결과입니다.
SWE-bench Verified 개요
SWE-bench는 인기 있는 오픈 소스 Python 저장소의 실제 GitHub 이슈를 해결하는 AI의 능력을 테스트하는 평가 벤치마크입니다. 경쟁 방식의 코딩 테스트와 달리, 모델이 저장소의 로컬 작업 사본 내에서 코드를 이해하고, 수정하고, 테스트해야 합니다.
SWE-bench Verified는 기존 데이터셋의 500개 문제로 구성된 하위 집합으로, 모든 작업이 외부 컨텍스트 없이 해결 가능하도록 사람이 직접 검토한 것입니다. 이 벤치마크는 AI 모델과 이를 둘러싼 소프트웨어 스캐폴딩(프롬프트 및 도구 파싱 로직)의 조합인 "에이전트"를 평가합니다.
에이전트 아키텍처 및 설계 철학
Anthropic의 Claude 3.5 Sonnet용 에이전트 스캐폴딩은 언어 모델이 문제 해결 과정에 대해 최대한의 제어권을 가질 수 있도록 최소한의 스캐폴딩을 제공하는 데 중점을 둡니다. 에이전트는 프롬프트와 두 가지 주요 도구를 사용하여 작동합니다:
도구 사용 에이전트 구성 요소
- Bash Tool: 지속적인 환경에서 bash 명령어를 실행합니다. 도구 설명에는 입력값 이스케이프(escaping), 인터넷 접속 불가, 그리고 장시간 실행되는 명령어를 백그라운드에서 실행하는 방법에 대한 중요한 지침이 포함되어 있습니다.
- Edit Tool (str_replace_editor): 파일을 보고, 생성하고, 편집하는 복잡한 도구입니다.
view,create,str_replace,insert,undo_edit와 같은 명령어를 지원합니다.
주요 최적화 전략
- 문자열 교체(String Replacement)를 통한 편집: 에이전트는 모델이 교체할
old_str과 교체될new_str을 지정하는 문자열 교체 방식을 사용합니다. 교체는old_str이 정확히 하나만 일치할 때만 발생하며, 이는 다른 편집 전략과 관련된 신뢰성 문제를 줄여줍니다. - 경로 오류 방지: 상대 파일 경로로 인한 문제를 방지하기 위해, Edit Tool은 모든 작업에 절대 경로를 요구합니다.
- 모델 자율성: 프롬프트는 일반적인 접근 방식(탐색, 재현, 편집, 검증)을 제안하지만 엄격한 워크플로우를 강제하지 않음으로써 모델이 스스로 판단할 수 있도록 합니다.
성능 결과
동일한 에이전트 스캐폴딩을 사용할 때, 업그레이드된 Claude 3.5 Sonnet은 이전 모델 및 이전의 최고 기록을 크게 능가합니다:
| Model | SWE-bench Verified Score |
|---|---|
| Claude 3.5 Sonnet (new) | 49% |
| Previous SOTA | 45% |
| Claude 3.5 Sonnet (old) | 33% |
| Claude 3 Opus | 22% |
에이전트 동작 및 역량
모델의 로그를 분석한 결과, 업그레이드된 Claude 3.5 Sonnet은 더 강력한 자기 수정 능력을 보이며, 동일한 실수를 반복하기보다 여러 가지 다른 해결책을 시도하려는 경향이 더 큽니다.
전형적인 워크플로우에서 모델은 다음과 같이 동작합니다:
- Edit Tool을 사용하여 저장소 구조를 탐색합니다.
- 재현 스크립트를 생성하여 버그를 확인합니다.
- Bash Tool을 사용하여 스크립트를 실행하고 에러를 관찰합니다.
- Edit Tool을 사용하여 소스 코드를 수정합니다.
- 재현 스크립트를 다시 실행하여 수정 사항을 검증합니다.
구현상의 어려움
Anthropic은 SWE-bench Verified 평가를 실행하는 데 있어 네 가지 주요 과제를제를 식별했습니다:
- 비용 및 기간: 성공적인 실행은 수백 번의 턴(turn)이 소요될 수 있으며 100k 토큰을 초과할 수 있어, 프로세스가 비용이 많이 들고 시간이 오래 걸립니다.
- grading(채점점) 정확도: 환경 설정 오류나 중복 설치 패치와 같은 시스템 수준의 이슈는 잘못된 실패 판정을 유래할 수 있습니다.
- 숨겨진 테스트: 모델이 채점용 테스트를 볼 수 없기 때문에, 실제로 실패했음에도 불구하고 표면적인 수정만 적용하고 더 깊은 리팩토링을 수행하지 못해 성공했다고 믿을 수 있습니다.
- 멀티모달 제한 사항: 모델은 시각적 능력을 갖추고 있지만, 현재의 에이전트 구현은 파일이나 URL을 볼 수 있게 하지 않으므로, 시각적 출력이 포함된 작업(예: Matplotlib)의 디버깅을 복잡하게 만듭니다.
Sources
- OriginalClaude SWE-Bench Performance
관련
- Dispatch
- Dispatch
- Dispatch
- Dispatch
- Dispatch