Skip to content

アリーナ評価とは

アリーナ評価とは、LLM 同士を 1 対 1 で対戦させ、その勝敗を積み重ねることでモデルの相対的な強さを推定する手法です。

従来のベンチマーク評価は「正解付きデータセット」を必要とします。しかしビジネス用途では、正解を定義しにくいタスクや、主観的な品質判断が求められる場面が多くあります。

アリーナ評価はこれを回避します。同じプロンプトに対する 2 つの回答を別の LLM(Judge)に見せ、「どちらが良いか」だけを判定させます。正解データは不要で、実務で使っているプロンプトをそのまま使えます。

この方式は Chatbot Arena(LMSYS、2024)で広く知られるようになりました。JuryArena はその考え方をプライベートなタスクセットに適用したものです。

1 対戦(Match)の詳細

Step 1 — Trial(モデルの回答生成)

選ばれたペア(Model A・Model B)がそれぞれ同じ Sample に対して独立に推論を実行します(Trial)。

Trial の結果はキャッシュされます。同じ Sample・同じモデルの組み合わせが別の Match でも使われる場合、API 呼び出しは行われず、キャッシュから読み込まれます。

Trial がスキップされるケース:

理由スキップコード
モデルが PDF 入力に非対応UNSUPPORTED_INPUT
コンテキスト長超過CONTEXT_OVERFLOW
API 内部エラー(リトライ上限到達)API_ERROR
その他のエラーOTHER_ERROR

どちらか一方でもスキップされた Match は Judge を実行せず、強制的に tie になります(Coverage のみ低下、Rating には影響しません)。

Step 2 — Judge メッセージの構築

Judge には次の情報がまとめてわたります。

[ユーザーの入力メッセージ]      ← Sample の messages をそのまま含む
                                   PDF などのファイルも base64 で含む
[評価指示 + 回答 A + 回答 B]   ← 以下のプロンプトを追加

評価プロンプト(日本語設定時):

あなたは公平な審査員です。上記のユーザーの入力に対する2つのLLMの回答を比較し、どちらがより優れているかを判定してください。

日本語で回答してください。

回答A:
{model_a の出力}

回答B:
{model_b の出力}

以下の基準で評価してください:
1. 正確性: 回答が正しいか
2. 追従性: プロンプトの指示に従っているか
3. 完全性: プロンプトで指定された情報がすべて含まれているか
4. 明確性: わかりやすいか
5. 簡潔性: 無駄がないか

A・B の割り当て(どちらが Model A でどちらが Model B か)はペア選択時にランダム化されています。Judge が常に同じ位置を好む位置バイアスを防ぐためです。

Step 3 — Judge の実行

Judge モデルは以下の JSON を structured output として返します。

json
{
  "A": "回答Aの評価コメント",
  "B": "回答Bの評価コメント",
  "reason": "判定の理由",
  "winner": "A" | "B" | "tie"
}

複数の Judge モデルが設定されている場合は並列実行されます。

エラー時の挙動:

状況挙動
InternalServerError最大 2 回リトライ(指数バックオフ)後に tie
空レスポンスtie
JSON パース失敗tie
PDF 非対応モデルへの PDF 付き判定そのモデルをスキップ
その他の例外tie(リトライなし)

Step 4 — 多数決と勝者の確定

複数 Judge の結果を多数決で集約します。

Judge 1 → A 勝ち
Judge 2 → A 勝ち    →  最終勝者: Model A
Judge 3 → tie

同数の場合は最初に最大票を得たラベルが選ばれます。

確定した勝者(Model A 名・Model B 名・または "tie")が Match の結果として記録され、Step 終了後のレーティング更新に使われます。

ペア選択

どのペアを対戦させるかはレーティングシステムと連動したアルゴリズムが決定します。詳細は レーティングシステム を参照してください。

参考文献