벤치마크 · coding
Aider Polyglot
Aider Polyglot은 코딩 도구 Aider에서 만든 코드 편집 벤치마크로, LLM이 여러 프로그래밍 언어에서 기존 코드를 얼마나 잘 편집하는지 측정합니다. 점수는 편집 결과가 올바른 코드가 되어 해당 과제의 테스트를 통과한 과제의 비율입니다.
자세히 보기
- 예시
- 전형적인 항목은 Python, Rust, Go, Java, JavaScript, C++ 등 여러 언어 중 하나로 주어지는 Exercism 스타일 코딩 연습으로, 모델은 제공된 소스 파일을 편집해 요구된 함수를 구현하고 테스트를 통과시켜야 합니다.
- 채점 방식
- 지표는 해결한 과제의 비율입니다. 편집된 코드가 그 과제의 모든 자동 테스트를 통과할 때에만 과제가 해결된 것으로 집계되며, Aider는 편집이 올바르고 적용 가능한 형식으로 돌아오는 빈도도 추적합니다.
- 검증 방식
- 결과는 자동으로 검증됩니다. 편집된 파일을 각 연습의 단위 테스트 모음에 대해 실행하고, 모든 테스트를 통과할 때에만 과제가 통과됩니다 — 사람의 투표나 정확 일치 비교는 없습니다.
- 왜 중요한가
- 이는 실제 개발자 워크플로우 — 처음부터 코드 조각을 작성하는 것이 아니라 여러 언어에서 기존 파일을 편집하는 것 — 를 반영하므로, 모델이 코딩 보조 도구로서 얼마나 유용한지를 보여주는 실용적인 신호입니다.
예제 풀이
Aider Polyglot 은 Exercism 에서 가장 어려운 코딩 연습문제 225 개를 뽑아 C++, Go, Java, JavaScript, Python, Rust 에 걸쳐 있다. 모델에는 문제 설명과 스텁 파일이 주어지며, 숨겨진 단위 테스트를 통과시키는 편집(aider 의 SEARCH/REPLACE 블록 형식)을 반환해야 하고, 첫 시도가 실패하면 자동으로 한 번 재시도한다. Python 의 대표적인 문항 「Acronym」은 구절을 두문자어로 바꾸라고 요구한다: 각 단어의 첫 글자를 대문자로 취하고, 공백과 하이픈을 구분자로 취급하며 나머지 문장 부호는 무시한다 — `def abbreviate(text): pass` 가 담긴 `acronym.py` 가 주어지고, `abbreviate("Portable Network Graphics") == "PNG"` 와 `abbreviate("Ruby on Rails") == "ROR"` 같은 테스트를 통과시켜야 한다. 올바른 해법은 스텁을 SEARCH/REPLACE 블록으로 교체한다:
```
acronym.py
<<<<<<< SEARCH
def abbreviate(text):
pass
=======
import re
def abbreviate(text):
words = re.split(r"[^A-Za-z']+", text)
return "".join(word[0].upper() for word in words if word)
>>>>>>> REPLACE
```
추론: 텍스트를 글자가 아닌 문자의 연속마다 분리해 공백과 하이픈이 모두 단어 경계가 되게 하고, 빈 조각을 버린 뒤, 남은 각 단어의 첫 글자를 대문자로 이어 붙인다 — 「Ruby on Rails」의 경우 「ROR」이 된다. 모든 단위 테스트를 통과할 때만 이 문항은 해결된 것으로 집계되며, 벤치마크는 이렇게 해결된 225 개 연습문제의 백분율을 보고한다.
이 벤치마크에 대해 아직 검증된 점수가 없습니다.