Skip to content

はじめる

スイートを書く

スイートは 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: label

system.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 件で、同一の実行の間に判定が変わりました。

次に読むページ