벤치마크 · coding
Aider Polyglot
Aider Polyglot은 코딩 도구 Aider에서 만든 코드 편집 벤치마크로, LLM이 여러 프로그래밍 언어에서 기존 코드를 얼마나 잘 편집하는지 측정합니다. 점수는 편집 결과가 올바른 코드가 되어 해당 과제의 테스트를 통과한 과제의 비율입니다.
자세히 보기
- 예시
- 전형적인 항목은 Python, Rust, Go, Java, JavaScript, C++ 등 여러 언어 중 하나로 주어지는 Exercism 스타일 코딩 연습으로, 모델은 제공된 소스 파일을 편집해 요구된 함수를 구현하고 테스트를 통과시켜야 합니다.
- 채점 방식
- 지표는 해결한 과제의 비율입니다. 편집된 코드가 그 과제의 모든 자동 테스트를 통과할 때에만 과제가 해결된 것으로 집계되며, Aider는 편집이 올바르고 적용 가능한 형식으로 돌아오는 빈도도 추적합니다.
- 검증 방식
- 결과는 자동으로 검증됩니다. 편집된 파일을 각 연습의 단위 테스트 모음에 대해 실행하고, 모든 테스트를 통과할 때에만 과제가 통과됩니다 — 사람의 투표나 정확 일치 비교는 없습니다.
- 왜 중요한가
- 이는 실제 개발자 워크플로우 — 처음부터 코드 조각을 작성하는 것이 아니라 여러 언어에서 기존 파일을 편집하는 것 — 를 반영하므로, 모델이 코딩 보조 도구로서 얼마나 유용한지를 보여주는 실용적인 신호입니다.
예제 풀이
문제
Aider Polyglot 은 6개 언어에 걸친 Exercism 연습 문제를 사용한다. 모델은 문제 명세와 스텁 파일(예:
def abbreviate(words): ... 이 든 acronym.py)을 받고, 숨겨진 pytest 테스트 스위트가 통과하도록 편집해야 한다. 명세 예시: 구를 두문자어로 변환 — 'Portable Network Graphics' → 'PNG'. 공백, 하이픈, 밑줄은 구분자로 보고 나머지 구두점은 무시한다.해답
import re
def abbreviate(words):
return "".join(w[0].upper() for w in re.findall(r"[A-Za-z']+", words))
풀이
정규식이 단어 토큰(문자와 단어 내부의 apostrophe)을 뽑아 각 토큰의 첫 글자를 대문자로 바꿔 이어 붙이므로 'Portable Network Graphics' → 'PNG' 가 된다. 채점은 연습의 숨겨진 단위 테스트를 실행하며, 모든 테스트가 통과할 때만 해당 항목이 득점한다(aider 는 스위트 전체에 대해 pass@2 를 보고).