ベンチマーク · coding
RepoCoder
RepoCoder はリポジトリレベルのコード補完を評価する。ソースファイル内のある位置が与えられると、モデルはリポジトリ全体から得た文脈を使って欠けているコードを予測しなければならない。ベンチマーク RepoEval は、行および API 呼び出し補完について Exact Match と Edit Similarity を、関数本体全体については単体テストの合格率を報告する。
詳しく見る
- 例
- 同じプロジェクトの別ファイルで定義された関数やクラスを呼び出す、リポジトリ内ファイルの書きかけの一行を補完する課題。正しい補完のためにモデルはファイルをまたぐリポジトリの文脈を使う必要がある。
- 採点方法
- 行および API 呼び出し補完は Exact Match(予測が隠された正解コードと完全一致すれば 1、そうでなければ 0)と Edit Similarity(1 − 正規化 Levenshtein 距離)で採点し、全サンプルで平均してパーセント表示する。関数本体の補完は実行で採点する。生成した本体を元の実装と差し替え、リポジトリ既存の単体テストに合格しなければならない。
- 検証方法
- 行/API 項目では、各サンプルの予測をソースリポジトリから隠した参照コードと比較して受理する——完全一致(EM)か編集距離に基づく類似度(ES)で。関数補完は、生成した本体に対してリポジトリ自身の単体テストが合格したときのみ受理される。学習データの漏洩を減らすため、新しく高品質なリポジトリが選ばれている。
- 重要な理由
- 実際のコーディングは孤立した断片ではなく、大きな既存コードベースの中で行われる。RepoCoder/RepoEval は、多数のファイルに散らばるプロジェクト固有の API・シンボル・慣習をモデルが使えるかを検証する——単独の関数合成より現実的なコーディング支援の指標である。
解説付きの例
課題
行レベル補完(RepoEval)。リポジトリでは utils/config.py が補助関数
load_config(path) を定義し、trainer.py は from .utils.config import load_config で始まる。下記のコードと、リポジトリから取得したファイル横断の文脈をもとに、__init__ 内で隠された次の一行を予測せよ:
```python
class Trainer:
def __init__(self, path):
```解答
self.config = load_config(path)
解説
正解の理由:
load_config はリポジトリ自身の補助関数で、trainer.py の冒頭でインポートされている。これはファイル横断のリポジトリ文脈でしか分からないため、一般的な当て推量(例えば JSON 読み込みをその場に書くなど)では外れる。この行は隠された正解に対する Exact Match で採点され、Edit Similarity が部分点を与える。このベンチマークの検証済みスコアはまだありません。