mcpField
L
llm-evaluation

llm-evaluation

github.com/wshobsonテスト・品質41.9k12.9k 回インストール2 週間前に更新
リポジトリ

llm-evaluation について

自動指標、人手による評価、LLM を評価者とする手法で、LLM アプリケーションを体系的に評価するスキルです。モデルやプロンプトの比較、性能低下の追跡、予期しない挙動の調査に役立ちます。

主な機能

  1. 01生成・分類の自動評価指標
  2. 02検索評価指標
  3. 03人手による品質評価の観点
  4. 04個別評価とペア比較の LLM 判定
  5. 05参照あり・参照なしの評価

活用シーン

  1. 01モデルやプロンプトの比較
  2. 02デプロイ前の性能低下チェック
  3. 03RAG の検索品質の測定
  4. 04予期しないモデル出力の調査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/wshobson/agents --skill llm-evaluation

インストール後、Claude Code で/llm-evaluationを入力して読み込まれたか確認します。

同梱ファイルreferences/details.md

詳細

LLM 評価

LLM アプリケーションのための包括的な評価戦略を、自動メトリクスから人手評価、A/B テストまで網羅して習得します。

このスキルを使用する場面

  • LLM アプリケーションのパフォーマンスを体系的に測定する
  • 異なるモデルやプロンプトを比較する
  • デプロイ前にパフォーマンスのリグレッションを検出する
  • プロンプト変更による改善を検証する
  • 本番システムに対する信頼を構築する
  • ベースラインを確立し、時間の経過とともに進捗を追跡する
  • 予期しないモデルの挙動をデバッグする

評価の主な種類

1. 自動メトリクス

計算されたスコアを使用する、高速で再現可能、スケーラブルな評価。

テキスト生成:

  • BLEU: N-gram の一致率(翻訳)
  • ROUGE: 再現率指向(要約)
  • METEOR: 意味的類似度
  • BERTScore: 埋め込みベースの類似度
  • Perplexity: 言語モデルの信頼度

分類:

  • Accuracy: 正解率
  • Precision/Recall/F1: クラスごとのパフォーマンス
  • 混同行列: エラーパターン
  • AUC-ROC: ランキング品質

検索(RAG):

  • MRR: 平均逆順位
  • NDCG: 正規化割引累積利得
  • Precision@K: 上位 K 件の関連性
  • Recall@K: 上位 K 件のカバレッジ
2. 人手評価

自動化が難しい品質面を手動で評価します。

評価軸:

  • 正確性: 事実としての正しさ
  • 一貫性: 論理的な流れ
  • 関連性: 質問に答えているか
  • 流暢さ: 自然な言語品質
  • 安全性: 有害なコンテンツがないこと
  • 有用性: ユーザーにとって役立つこと
3. LLM-as-Judge

より強力な LLM を使用して、弱いモデルの出力を評価します。

アプローチ:

  • Pointwise: 個々の応答を採点する
  • Pairwise: 2 つの応答を比較する
  • Reference-based: ゴールドスタンダードと比較する
  • Reference-free: 正解データなしで判定する

クイックスタート

from dataclasses import dataclass
from typing import Callable
import numpy as np

@dataclass
class Metric:
    name: str
    fn: Callable

    @staticmethod
    def accuracy():
        return Metric("accuracy", calculate_accuracy)

    @staticmethod
    def bleu():
        return Metric("bleu", calculate_bleu)

    @staticmethod
    def bertscore():
        return Metric("bertscore", calculate_bertscore)

    @staticmethod
    def custom(name: str, fn: Callable):
        return Metric(name, fn)

class EvaluationSuite:
    def __init__(self, metrics: list[Metric]):
        self.metrics = metrics

    async def evaluate(self, model, test_cases: list[dict]) -> dict:
        results = {m.name: [] for m in self.metrics}

        for test in test_cases:
            prediction = await model.predict(test["input"])

            for metric in self.metrics:
                score = metric.fn(
                    prediction=prediction,
                    reference=test.get("expected"),
                    context=test.get("context")
                )
                results[metric.name].append(score)

        return {
            "metrics": {k: np.mean(v) for k, v in results.items()},
            "raw_scores": results
        }

# Usage
suite = EvaluationSuite([
    Metric.accuracy(),
    Metric.bleu(),
    Metric.bertscore(),
    Metric.custom("groundedness", check_groundedness)
])

test_cases = [
    {
        "input": "What is the capital of France?",
        "expected": "Paris",
        "context": "France is a country in Europe. Paris is its capital."
    },
]

results = await suite.evaluate(model=your_model, test_cases=test_cases)

詳細なパターンと実例

詳細なパターンのドキュメントは references/details.md にあります。上記のナビゲーション層では不十分な場合は、そのファイルを参照してください。

コメント