Claude 3.5 Sonnet SWE-bench 성능

업그레이드된 Claude 3.5 Sonnet은 SWE-bench Verified에서 49%의 성공률을 달성하여, 이전의 최고 기록(SOTA)인 45%를 넘어섰습니다. 이 성능은 실제 소프트웨어 엔지니어링 작업을 위해 설계된 최소한의 에이전트 스캐폴드(scaffold)에 통합되었을 때 모델의 향상된 추론, 코딩 및 수학 능력을 입증합니다.

SWE-bench Verified 이해하기

SWE-bench는 인기 있는 오픈 소스 Python 저장소의 실제 GitHub 이슈를 해결하는 AI 에이전트의 능력을 측정하는 평가 벤치마크입니다. 경쟁 방식의 코딩 테스트와 달리, 에이전트가 코드베이스를 이해하고, 파일을 수정하며, 유닛 테스트를 사용하여 수정을 검증해야 합니다.

SWE-bench Verified는 원본 데이터셋에서 사람이 검토한 500개의 문제로 구성된 하위 집합입니다. 이 하위 집합은 모든 작업이 제공된 컨텍스트 내에서 해결 가능하도록 보장하여, 불가능한 작업을 제거함으로써 코딩 에이전트의 성능을 보다 정확하게 측정할 수 있게 합니다.

에이전트 스캐폴드 설계

Anthropic은 모델 자체의 판단력과 제어력을 극대화하기 위해 Claude 3.5 Sonnet 모델과 소프트웨어 스캐폴딩의 조합인 최소한의 "에이전트" 시스템을 활용했습니다. 이 스캐폴드는 엄격한 워크플로우를 강제하는 대신 유연한 상호작용 루프를 선호합니다.

도구 세트 및 인터페이스

에이전트는 두 가지 주요 도구를 갖추고 있습니다:

  • Bash Tool: 지속적인 환경에서 bash 명령어를 실행합니다. aptpip를 통해 일반적인 Linux 및 Python 패키지의 미러를 사용할 수 있지만 인터넷 접속은 불가능합니다.
  • Edit Tool (str_replace_editor): 파일을 보고, 생성하고, 편집하는 복잡한 도구입니다. 신뢰성을 보장하기 위해 문자열 교체 전략(old_strnew_str로)을 사용합니다. 교체는 대상 문자열이 정확히 하나만 일치할 때만 발생합니다.

프롬프팅 전략

에이전트는 엄격한 전환을 강제하지 않고, 저장소를 탐색하고, 재현 스크립트를 생성하고, 소스 코드를 편집하며, 수정을 검증하는 일반적인 접근 방식을 제안하는 프롬프트에 의해 안내됩니다. Anthropic은 토큰 비용에 구면하지 않는 경우, 모델이 길고 철저한 응답을 생성하도록 권장하는 것이 성능을 향상시킬 수 있다고 언급합니다.

성능 결과

동일한 에이전트 스캐폴드를 사용할 때, 업그레이드된 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은 이전 모델보다 더 강력한 자기 수정 능력을 보여줍니다. 첫 번째 시도가 실패했을 때 동일한 오류를 반복하는 대신, 여러 가지 다른 솔루션을 시도할 가능성이 더 높습니다.

전형적인 워크플로우에서 모델은 다음과 같이 동작합니다:

  1. Edit Tool을 사용하여 저장소 구조를 탐색합니다.
  2. 보고된 버그를 재현하기 위한 독립적인 Python 스크립트를 생성합니다.
  3. Bash Tool을 통해 스크립트를 실행하여 오류를 확인합니다.
  4. 문자열 교체를 사용하여 테스트 파일이 아닌 파일에 최소한의 변경 사항을 적용합니다.
  5. 재현 스크립트를 다시 실행하여 해결 여부를 확인합니다.

소프트웨어 엔지니어링 평가에서의 기술적 과제

Anthropic은 SWE-bench Verified 평가를 실행할 때 네 가지 주요 과제를 식별했습니다:

  • 리소스 집약성: 성공적인 실행은 수백 번의 턴(turn)을 필요로 할 수 있으며 100k 토큰을 초과할 수 있어, 높은 비용과 긴 소요 시간이 발생합니다.
  • 채점점 노이즈: 환경 설정 오류나 중복 설치 패치와 같은 시스템 이슈는 모델의 동작이 올바름에도 불구하고 잘못된 실패 판정을 받을 수 있게 합니다.
  • 숨겨진 테스트 불일치: 모델이 채점용 테스트를 볼 수 없기 때문에, 리팩토링 대신 "땜질식" 수정을 적용하거나 원래 인간 PR의 특정 유닛 테스트를 충족하지 못했을 때 성공했다고 믿을 수 있습니다.
  • 멀티모달 격차: Claude 3.5 Sonnet은 시각적 능력을 갖추고 있지만, 현재 스캐폴드는 파일 시스템상의 파일이나 URL을 볼 수 있게 허용하지 않아 Matplotlib과 같은 라이브러리의 디버깅을 복잡하게 만듭니다.

Sources

관련

  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch
  • Dispatch