relari-ai/continuous-eval
Data-Driven Evaluation for LLM-Powered Applications
continuous-eval – LLM駆動アプリのデータ駆動型評価
何であるか – continuous-eval は Python ライブラリ(PyPI で利用可能)であり、生成AIパイプラインの各コンポーネントのパフォーマンスを測定できます。一般的な LLM の使用事例(検索、RAG、コード生成、ツールを使用するエージェント、分類など)向けの準備済みメトリクスのカタログを備えており、データセットにこれらのメトリクスを接続して自動テストを実行するための小さなフレームワークも提供しています。
なぜ重要か – プロダクショングレードの LLM アプリケーションを構築する際、通常は複数のステージ(リトリーバー → リランカー → ジェネレーター、分類器など)を経ます。従来の評価ツールは単一のエンドツーエンドスコアに焦点を当てており、どのモジュールがパフォーマンスを発揮していないかを特定するのが困難です。continuous-eval はパイプラインをモジュールのグラフとして扱い、各ノードに独自のメトリクスをアタッチでき、確率的または LLM-as-a-judge メトリクスもサポートしています。
コアコンセプト
| コンセプト | 説明 |
|---|---|
| メトリクスライブラリ | PrecisionRecallF1、RankedRetrievalMetrics、AnswerCorrectness などの即時利用可能なクラス。決定論的、意味的、LLMベースのスコアリングをカバーします。 |
| EvaluationRunner | データセット上ですべてのメトリクスを実行し、結果を集約し、ユーザー定義の テスト(例:「リコールは ≥ 0.8 でなければならない」)を実行できます。 |
| パイプライン / モジュール | システムの各ステップを Module(名前、入力、出力タイプ)として宣言し、その出力に適用すべきメトリクスをアタッチします。Pipeline はモジュールのリストとソース Dataset で構成されます。 |
| CustomMetric | 「LLM-as-a-judge」メトリクスを構築するためのヘルパー。プロンプト(基準 + ルーブリック)と期待される応答のスキーマを提供し、他のメトリクスと同様に呼び出せます。 |
| テレメトリ | オプションの匿名使用状況追跡。CONTINUOUS_EVAL_DO_NOT_TRACK=true で無効化可能です。 |
一般的なワークフロー(README に図示)
- インストール
pip install continuous-eval(またはリポジトリをクローンして Poetry を使用)。 - データ準備
example_data_downloaderで例をダウンロードするか、question、retrieved_context、ground_truth_context、answerなどのフィールドを含む JSON-lines を自前で提供。 - パイプライン定義 各ステージに対し
Moduleオブジェクトを作成し、.use(...)で適切なメトリクスオブジェクトをアタッチ。 - 評価実行
EvaluationRunner(pipeline)をインスタンス化し、evaluate()を呼び出します。ランナーはPipelineResultsオブジェクトを返し、集約・出力が可能です。 - テスト実行
Testオブジェクトのリスト(例:GreaterOrEqualThan)を供給し、自動的にリグレッションを検出。 - 拡張 ビルトインカタログがカバーしていないニーズには、
CustomMetricのサブクラスを作成するか、新しいメトリクスクラスを実装。
例のスニペット(単一メトリクス)
from continuous_eval.metrics.retrieval import PrecisionRecallF1
datum = {
"question": "What is the capital of France?",
"retrieved_context": [
"Paris is the capital of France and its largest city.",
"Lyon is a major city in France."
],
"ground_truth_context": ["Paris is the capital of France."],
"answer": "Paris",
"ground_truths": ["Paris"],
}
metric = PrecisionRecallF1()
print(metric(**datum)) # → {'context_precision': ..., 'context_recall': ..., 'context_f1': ...}
いつ使うべきか
- 検索品質、リランキング効果、生成の正確性の別々のスコアが必要な RAG システム開発者。
- 新しいモデルやプロンプトをリリースする前に自動的なリグレッションチェック(テスト)を希望する LLM プロダクトチーム。
- 複数の LLM ベースモジュールを評価し、再現可能でモジュール化されたベンチマークスイートを必要とする研究者。
- PII 検出、事実性など、独自の LLM ジャッジメトリクスをカスタムで導入したい企業。
すぐに始める方法
# ライブラリのインストール
python3 -m pip install continuous-eval
# 例とドキュメントのためにリポジトリをクローン
git clone https://github.com/relari-ai/continuous-eval.git && cd continuous-eval
poetry install --all-extras # オプション、すべてのメトリクスの追加依存関係を取得
# ビルトインの例(検索データセット)を実行
python -m examples.run_retrieval_eval # (README にリンクされた examples リポジトリを参照)
LLMベースのメトリクスを使用する予定がある場合は、.env ファイルに少なくとも1つの LLM API キーを設定してください。
拡張性とコミュニティ
- カスタムメトリクス –
CustomMetricクラスを使用するか、BaseMetricをサブクラス化して、独自の LLM エンドポイントへの呼び出しを含む任意のスコアリングロジックを追加。 - オープンソース – Apache 2.0 ライセンス、貢献ガイド付き、サポート用の Discord コミュニティあり。
- ドキュメント – 完全な API リファレンスとチュートリアルは https://continuous-eval.docs.relari.ai/ で利用可能。
ライセンス
Apache 2.0(リポジトリの LICENSE ファイルを参照)。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト