Aider Polyglot: 다언어 코드 편집 벤치마크

Digest: Aider 프로젝트가 운영하는 실용적 코드 편집(code editing) 커뮤니티 벤치마크. HumanEval·MBPP 등 기존 벤치마크가 코드를 처음부터 생성(generation from scratch)하는 능력을 측정하는 반면, Aider Polyglot은 기존 코드 파일을 수정하여 실패하는 테스트를 통과시키는 편집 능력을 12개 이상의 프로그래밍 언어에 걸쳐 평가한다. Exercism.io 코딩 연습 문제를 edit format으로 변환하여 약 133~225개 exercise를 구성하며, 실제 개발 워크플로우에서의 AI 코딩 어시스턴트 유용성을 직접 측정하는 것이 핵심이다.


메타데이터

항목내용
명칭Aider Polyglot Coding Leaderboard
제작자Paul Gauthier (Aider 프로젝트)
유형커뮤니티 벤치마크 (학술 논문 아님)
공개 시점2024년 (지속 갱신)
출처aider.chat/docs/leaderboards
기반 데이터Exercism.io 코딩 연습 문제
대상 언어Python, JavaScript, TypeScript, Java, C#, C++, Go, Rust, PHP, Ruby, Swift, Kotlin 등 12+
평가 메트릭% of exercises passing all tests (first attempt + retry)
서브 벤치마크Code Editing (primary), Code Refactoring

데이터셋 구성

규모 및 분할

구분내용
총 exercise 수~225개 (전체 언어 합산), primary 벤치마크 ~133개
분할 방식언어별 exercise 세트 (train/test 구분 없음, 전수 평가)
출처Exercism.io 연습 문제를 edit task 형식으로 변환
편집 형식”whole file” 또는 “diff” format (모델 역량에 따라 선택)

Feature / Column 구성

Feature설명예시
exercise_nameExercism 문제 이름bob, resistor-color
language프로그래밍 언어python, javascript
existing_code편집 대상 기존 코드 파일부분 구현된 bob.py
test_file통과해야 할 테스트 파일bob_test.py
instruction자연어 편집 지시문”Handle all response cases”
expected_edit정답 편집 결과 (평가 기준)수정된 완성 코드
result테스트 통과 여부pass / fail

언어별 분포

언어비고
Python핵심 언어, 가장 많은 exercise
JavaScript / TypeScript웹 개발 중심
Java / C#정적 타입 OOP 언어
C++ / Go / Rust시스템 프로그래밍 언어
PHP / Ruby스크립트 언어
Swift / Kotlin모바일 개발 언어

실제 데이터 예시

예시 1: Python — bob exercise

[Input]
- existing_code: bob.py (부분 구현, 빈 response 함수)
- test_file: bob_test.py (shouting, question, silence 등 케이스)
- instruction: "Bob responds based on the input tone.
  Implement all response cases."

[Expected Edit]
- bob.py의 response() 함수를 수정하여
  질문/고함/침묵/기본 응답 분기를 올바르게 처리

[Metric] → test 전체 통과 시 pass

예시 2: JavaScript — resistor-color exercise

[Input]
- existing_code: resistor-color.js (빈 stub 함수)
- test_file: resistor-color.spec.js
- instruction: "Implement color code lookup for resistor bands"

[Expected Edit]
- colorCode() 함수에 색상→숫자 매핑 로직 구현
- COLORS 배열 export 추가

[Metric] → 모든 색상 매핑 테스트 통과 시 pass

예시 3: Go — leap exercise

[Input]
- existing_code: leap.go (IsLeapYear 함수 skeleton)
- test_file: leap_test.go
- instruction: "Determine if a given year is a leap year"

[Expected Edit]
- 4/100/400 규칙에 따른 윤년 판별 로직 구현

[Metric] → 경계값 포함 전체 테스트 통과 시 pass

왜 이 벤치마크가 필요한가?

기존 벤치마크의 한계

  1. HumanEval / MBPP: 코드를 처음부터 생성하는 능력만 측정 — 실제 개발에서는 기존 코드를 수정하는 작업이 압도적으로 많음
  2. 단일 언어 편향: 대부분 Python 중심 → 다언어 코딩 역량을 반영하지 못함
  3. 생성 vs 편집 격차: 코드 생성 벤치마크에서 높은 점수를 받는 모델이 실제 편집 작업에서는 성능이 크게 다를 수 있음

Aider Polyglot의 차별성

  • 편집 중심 평가: 기존 코드 파일 + 실패하는 테스트 → 수정 후 통과라는 실제 개발 워크플로우 반영
  • 다언어 평가: 12개 이상 언어로 polyglot 코딩 능력 직접 측정
  • “Lazy” rate 추적: 모델이 전체 코드 출력을 거부하고 ... 등으로 생략하는 비율 별도 측정
  • 비용 효율성: exercise당 비용(cost per exercise)도 함께 보고

평가 방법

flowchart TD
    A["Exercism.io 연습 문제 수집"] --> B["Edit Task로 변환"]
    B --> C["기존 코드 + 테스트 파일 + 지시문 구성"]
    C --> D["LLM에 편집 요청"]
    D --> E{"Edit Format 선택"}
    E -->|"Whole File"| F["전체 파일 출력"]
    E -->|"Diff Format"| G["차이점만 출력"]
    F --> H["편집된 코드 적용"]
    G --> H
    H --> I["테스트 실행"]
    I --> J{"전체 통과?"}
    J -->|"Pass"| K["✓ 성공 (1점)"]
    J -->|"Fail (1st attempt)"| L["오류 메시지와 함께 재시도"]
    L --> M["2차 편집 시도"]
    M --> N["테스트 재실행"]
    N --> O{"전체 통과?"}
    O -->|"Pass"| P["✓ 성공 (retry)"]
    O -->|"Fail"| Q["✗ 실패 (0점)"]

    style K fill:#2d6,stroke:#333
    style P fill:#2d6,stroke:#333
    style Q fill:#d33,stroke:#333

주요 결과 (2024)

Code Editing Leaderboard

모델Polyglot 정확도비고
Claude 3.5 Sonnet~73%최고 성능, diff format 우수
GPT-4o~68%안정적 성능
DeepSeek-V2.5~65%오픈소스 중 강세
Llama-3.1-405B~52%대형 오픈소스

추가 측정 지표

지표설명
Pass rate (1st attempt)첫 시도에서 테스트 통과 비율
Pass rate (with retry)재시도 포함 최종 통과 비율
Lazy rate모델이 전체 코드 출력을 거부/생략하는 비율
Cost per exerciseexercise당 API 호출 비용 (USD)

핵심 발견

  1. 편집 > 생성: 코드 생성 벤치마크 순위와 편집 벤치마크 순위가 반드시 일치하지 않음
  2. Diff format 효율성: whole file 출력 대비 diff format이 비용 효율적이나, 정확도는 모델에 따라 다름
  3. Lazy 문제: 일부 모델은 긴 파일에서 // ... rest of code ... 식으로 생략 → 실제 사용 시 치명적
  4. 언어별 편차: 동일 모델도 Python에서는 높은 정확도, Rust/C++에서는 상대적 저조

이론적 의의

벤치마크 설계 관점

  • 생태학적 타당도(ecological validity): 실제 코딩 어시스턴트 사용 패턴(기존 코드 수정)을 직접 반영한 최초의 대규모 다언어 벤치마크
  • Process-oriented evaluation: 단순 정답률뿐 아니라 편집 형식, 비용, lazy rate 등 실용적 측면을 종합 평가
  • 지속적 갱신: 정적 벤치마크의 contamination 문제를 부분적으로 완화 — 새 모델 출시 시 즉시 평가 반영

한계

  • 학술 논문 미발표: peer review를 거치지 않은 커뮤니티 벤치마크
  • Aider 도구 특화: Aider의 프롬프트·파싱 방식에 최적화된 결과일 수 있어 다른 코딩 에이전트와 직접 비교 어려움
  • 테스트셋 공개 여부: exercise 구성이 변동 가능하여 시점 간 비교에 주의 필요
  • 난이도 분포: Exercism의 초급~중급 문제가 다수 — 고급 소프트웨어 엔지니어링 능력 측정에는 한계

관련 연구


핵심 용어

용어정의
Code Editing기존 코드를 수정하여 요구사항을 충족시키는 작업 (생성과 구별)
Whole File Format모델이 편집된 전체 파일을 출력하는 방식
Diff Format모델이 변경된 부분만 diff 형태로 출력하는 방식
Lazy Rate모델이 코드 전체 출력을 거부하고 생략(...)하는 비율
Exercism50+ 프로그래밍 언어의 연습 문제를 제공하는 오픈소스 플랫폼
Polyglot다수의 프로그래밍 언어를 다루는 능력
Pass@1단일 시도에서의 테스트 통과율
Retry첫 시도 실패 시 오류 메시지를 피드백으로 재시도하는 것

benchmark code-editing multi-language polyglot aider exercism practical-coding LLM-evaluation