コンテンツにスキップ

モジュール XII — 品質、評価、テスト

モジュール XII は一つの問いに答えます — 自分のエージェントはまだ正しいことをしているか? — 候補出力をバージョン管理されたゴールデンスイートに対してスコアリングし、その結果を正規の モジュール横断エビデンスとして発行することによって。これは Intelligence レイヤーのモジュールです: 測定するだけであり、対象を実行することも、インフラに作用することもありません。本ページは、 評価モジュールが現在何を行うか、そしてその誠実な限界についてのリファレンスです。

何を測定するか(そして何を決して実行しないか)

Section titled “何を測定するか(そして何を決して実行しないか)”

XII は測定レイヤーであって、実行レイヤーではありません。候補出力は既に生成された状態で XII に 到達します — テストサンドボックス(モジュール XVII)から、CI から、リクエスト内のインラインで、 あるいはサンプリングされた実セッションのシグナルとして — そして XII はそれをスイートのケースに 対してスコアリングします。XII が呼び出す唯一のモデルはジャッジです(llm_judge スコアラー 用); 対象のエージェントやモデル自体を実行することは決してありません。出力の生成はサンドボックスの 仕事であり、XII の仕事ではありません。

スコアラーのセットはプラグ可能です。決定論的で純粋な組み込みスコアラーが一般的な契約を カバーします — exactcontainsnot_containsregexjson_validjson_equalnumeric_range。それらと並んで、Judge ポートを通じてモデルを呼び出しルーブリックに対して採点する llm_judge スコアラーが存在します。

スイート、ラン、そして正規のアーティファクト

Section titled “スイート、ラン、そして正規のアーティファクト”

スイートはバージョン管理されたゴールデンデータセットです: そのケース、デフォルトスコアラー、 合格しきい値、回帰しきい値を保持します。ケースはバージョンごとに追記専用かつ不変です — ケースの 修正は新しい suite_version を発行するのであって、その場での編集ではありません。そのため、過去の いかなる判定を生み出したデータセットも常に再構築可能です。

ランはスイート内の各ケースをスコアリングし、scorepass_rate を集約し、3 つのものを 永続化します: 追記専用のケースごとのエビデンス、可変なラン集約、そして 1 つのコア EvalResult — 正規のアーティファクト(SuiteSubjectKindSubjectIDScorePassedOccurredAtMetrics)であり、コンプライアンス(XIII)と UI が XII 自身の テーブルを知ることなく読み取ります。ランは同期的に実行されます; ラン上の SSE ストリームは 永続化されたランをリプレイするもの(ケースごとのフレーム、その後サマリー)であって、作用は しません。ベースラインに対する回帰は regressed をセットし、コア FindingKind = eval_regression)を書き込み、デリバリーモジュール(ヘルス/通知)がルーティングできる よう、ベストエフォートで finding.reported としてバス上に発行されます。 読み取り側では、スコアカードがサブジェクトごとに合格率、平均スコア、トレンドを集約し、 CSV/JSON としてエクスポートします。

候補出力は決して永続化されません — どのソースからのものであっても。ケースごとの結果は、 一方向の詳細ハッシュと、UI 用にクランプされ除去されたラベルのみを格納します; 除去はストレージの 前にハンドラーが行うものであり、ストアに対して前提とすることは決してありません。モニターは 実セッションの行動シグナル — その状態、ファインディング数、最大重大度、トークン/コストの数値 (コアの SessionFindingCostRecord シグナルから引かれる)— をスコアリングするのであって、 プラットフォームが一切永続化しない生の出力テキストは決してスコアリングしません。ゴールデン フィクスチャは一つの限定された例外です: オペレーター認可済み、オプトイン、非本番のコンテンツで、 スイートを実際に実行できるよう書き込み前にハンドラーがクランプします。

ジャッジのキャリブレーション、バイアス緩和、CI 回帰ゲート

Section titled “ジャッジのキャリブレーション、バイアス緩和、CI 回帰ゲート”

ジャッジの判定は測定された後にのみ信頼されます。人手でラベル付けされたキャリブレーションセット (ガイド付き olivares evals label セッションで構築)がキャリブレーションランに投入され、 人間のリファレンスに対してジャッジを測定します: 95% Wilson 区間付きの一致率、Cohen のカッパ (クラス不均衡の下では一致率だけでは弁護できない)、分母付きの感度/特異度、そして冗長性バイアスの 相関。レポートは追記専用のエビデンスです; 目標 — 一致率 ≥ 0.85 かつ 定義済みカッパ ≥ 0.6 — はランごとに引き上げられますが、決して引き下げられません。人間ラベルがすべて合格のセットは 偶然補正された一致率を測定できず、何も証明しません。

バイアス緩和は組み込まれており、かつ測定されます: ジャッジプロンプトは判定の前に推論を 強制し(分析は処理途中で破棄される — 最小データ)、長さに報酬を与えないよう指示します; A/B 比較のオプトイン・ペアワイズモードは、共有された各ケースを提示順序を入れ替えて 2 回判定し、 両方の順序が一致したときにのみ勝者を宣言し、測定された position_consistency レートを 報告します。

回帰ゲートPOST /gate、CLI evals gate)は、これらすべてをブロッキングな CI 判定に 変換します: ベースラインに対する回帰、スイートしきい値を下回る合格率、または未キャリブレーション のジャッジはゲートを失敗させます(exit 1); ジャッジ資格情報の欠如は宣言された警告に ディグレードし、決してサイレントな合格にはなりません。CI でのジャッジコストは、決定論的な シード付きケースサンプル、コンテンツ + ジャッジモデルのピン + プロンプトバージョンをキーとする 判定キャッシュ、そして上限を超えた支出を拒否する FinOps 予算プリフライトによって制御されます。 失敗したゲートからの唯一の脱出口はガバナンス下のオーバーライド — 管理者ティア、書面理由、 監査済み — であり、これは CI が再チェックする実効判定を変えるのであって、記録された判定を変える ことは決してありません。報告されるすべてのレートはその分母と 95% 区間を伴って提供されます; 完全な方法論とソースについてはリポジトリ内の docs/EVAL-METHODOLOGY.md を参照してください。