用語集 · テストにおける AI
LLM 評価(Evals)
英語: LLM evaluation
別名: LLM評価, LLM エバリュエーション, Evals, LLM evaluations
定義
出力が毎回変わり完全一致のアサートが合わない LLM 機能の品質を、固定の入力セットと基準に対して体系的に測定することです。
LLM 評価(「Evals」)は、大規模言語モデルを使って構築した機能をテストする方法です。固定の入力セットに対して機能を実行し、定義した基準に照らして各出力をスコアリングし、そのスコアを継続的に追跡します。従来のテストは 1 つの正確な期待値をアサートします。LLM の出力は実行ごとに変わる自由記述のテキストなので、評価では完全一致の代わりに、決定的なチェック、採点によるスコア、人のレビューを組み合わせ、1 つの例ではなく多数のケースにわたる合格率で機能を判断します。
具体例
ラベル付きデータセットに対して評価する、サポートチケットの分類器です。
import { readFileSync } from 'node:fs';
import { classifyTicket } from '../src/classifier';
type Case = { input: string; expected: 'billing' | 'bug' | 'account' | 'other' };
const cases: Case[] = JSON.parse(readFileSync('evals/tickets.json', 'utf8'));
let correct = 0;
for (const c of cases) {
const result = await classifyTicket(c.input);
if (result.label === c.expected) correct++;
else console.log(`MISS expected=${c.expected} got=${result.label} :: ${c.input}`);
}
const accuracy = correct / cases.length;
console.log(`accuracy ${(accuracy * 100).toFixed(1)}% over ${cases.length} cases`);
if (accuracy < 0.9) process.exit(1); // regression gate
チェックの種類(信頼性の高い順)
- 決定的なチェック。 有効な JSON である、スキーマに一致する、必須フィールドを含む、長さの上限内に収まる、許可されたセットからラベルを選んでいる、など。安価で再現可能なので、使える場面ではどこでも使います。
- 参照ベース。 既知の正解と比較します。ラベルなら完全一致、自由記述なら重なりや類似度のスコアを使います。類似度スコアは大まかなので、キャリブレーションが必要です。
- モデル採点。 別の LLM がルーブリックに基づいて出力をスコアリングします(LLM-as-a-Judge)。自由記述のテキストにもスケールしますが、それ自体の誤りも持ち込みます。
- 人のレビュー。 微妙な品質の判断では最も信頼でき、自動チェックをキャリブレーションする際の基準になります。
確立していることと、まだ変化していること
確立していること:バージョン管理されたデータセットで評価する、プロンプトやモデルを変更するたびに評価を実行する、スコアを継続的に追跡する、プロンプトインジェクションのような敵対的ケースを含める。まだ変化していること:自由記述の生成に使う指標の選び方、モデル採点のスコアをどこまで信頼するか、そして変化の速いツール類です。
よくある間違い
数回の手動チャットで変更を判断する。本当の変化とノイズを区別するにはケースが少なすぎる。出力が変わるのに各ケースを 1 回しか実行しない(複数回実行してばらつきを報告します)。実際のユーザートラフィックが変化しているのに評価セットを古いまま放置する。