はじめる
スイートを書く
スイートは 2 つのファイルと 1 つのデータセットでできています。oloproof init は両方の雛形を作成し、その雛形にはコメントが付いています。最初のオンボーディングの検証で、機能の欠落ではなく文字列 1 つの欠落のために 4 回の試行が失われたからです。
プロジェクトファイル
oloproof.yaml は、何を測定し、何がその測定を行うかを宣言します。
version: 1
project: example
dataset: data/example.jsonl
system:
name: example-support-bot
version: "1"
callable: app:answer
config: {}
evaluators:
- type: exact_match
criterion: exact_label
field: labelsystem.callable はテスト対象へのインポートパスです。criterion は、この評価器の結果に対してメトリクス、しきい値、レポートがすべて使う名前なので、ゲートで見て分かる単語を選ぶ価値があります。
評価器の種類
このファイルが受け付けるすべての type: を系統別に示します。拒否されたフィールドには、その評価器が受け付けるフィールドの一覧が返されるので、推測を誤っても 1 回実行すれば正しいものにたどり着けます。
| 系統 | 種類 |
|---|---|
| 決定的 | exact_match、contains、regex、json_schema |
| LLM ジャッジ | rubric_judge、groundedness_judge、citation_support_judge, probability_judge, cascade |
| モデル | model_classifier |
| 検索 | hit_rate、recall、mrr、ndcg、citation_validity |
| エージェント | agent_max_steps、agent_tool_called、agent_no_tool_loop、agent_tool_sequence、agent_no_undeclared_tool、agent_constraints_satisfied |
| マルチエージェント | agent_route、agent_tool_permissions、agent_max_handoffs |
| 予測 | predictive_correct、predictive_precision、predictive_recall、predictive_ranking、predictive_brier、predictive_log_loss、predictive_absolute_error |
OpenAI 以外のエンドポイント上の LLM ジャッジには、さらに 2 つのフィールド base_url: と api_key_env: が必要です。キーは呼び出し時に環境変数から読み取られ、保存されることはありません。
実行する
oloproof run実行は、すべてのケースを実行し、各ケースをすべての評価器で判定し、その結果をコンテンツアドレス方式のレコードとして保存します。変更のないシステムと変更のないデータセットに対してもう一度実行すると、すでにあるものが再利用されます。そのため、繰り返しの実行にはほとんどコストがかからず、計測もされません。
oloproof plan RUN_ID --run は、判断できなかったルールに決着をつけるのに何が必要かを、その実行が実際に費やした量をもとに見積もって報告します。代わりに比較 ID を渡す場合は、フラグは不要です。
反復測定
1 回だけ測定したケースは、1 回起きたことしか教えてくれません。replicates: は各ケースを複数回測定し、同一の測定の間で判定が変わったケースがいくつあったかを報告します。
どの比較を信頼するよりも前に、この数値は知っておく価値があります。稼働中のアシスタントに対しては、観測されたケースのおよそ 9 件に 1 件で、同一の実行の間に判定が変わりました。
次に読むページ
- システムが行ったことを記録する では、アーティファクト、使用量、レイテンシのメトリクスを扱います。
- RAG の評価、エージェントとツール、分類器と回帰器 では、検索、エージェント、予測の各種類を扱います。
- CI のゲート では、判断を終了コードに変換します。
- ジャッジ では、LLM ジャッジがリリースをゲートする前に満たすべき条件を扱います。
- 基本概念 では、4 つの判断状態と、分母が重要な理由を説明します。