ベンチマーク · 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 ブロック形式)を返さなければならず、最初の試行が失敗した場合は自動で 1 回だけ再試行できる。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 問の割合を報告する。
このベンチマークの検証済みスコアはまだありません。