Agent Mentor Learn

検証と品質保証: 「正しそう」をすり抜けさせない

このコースはエージェントの出力を受け入れることを扱います。ここ数コースで、エージェントは動くようになり、そして長く動くようになりました――コース7 のハーネスループ、コース8 のコンテキスト管理、コース9 のチェックポイントと復旧です。しかし「実行を終えた」と「正しくできた」は別のことです。エージェントは非決定的で、同じタスクが 2 回の実行で 2 つの異なる経路をたどり、従来のテストの前提(「入力 X を与えれば経路 Y をたどり、出力 Z が得られる」)はそのまま崩れます。本コースは、その前提のもとで堅実な受け入れ検査を行う方法を教えます。まず「完了に見える」と「完了している」を切り分け、次に何を検証するか(最終状態を優先し、プロセスは最後の砦とする)、何で検証するか(pass/fail を出す決定的な検証器が先、LLM ジャッジは自由形式のテキストにのみ)、いくつのケースで検証するか(実タスク 20 件から始める――数百件を貯め込むまで待たない)を決めます。そして最後に、自分のエージェント向けの評価トラックを構築します。1 タスクにつき 1 ループ、最後にレポート。こうすればプロンプトの変更がスコアの変化として現れます。このシリーズの最初の 9 つのコースを終えた読者向けです。一般的なソフトウェアテストの方法論は扱わず(ユニットテストの書き方は範囲外です)、特定の評価フレームワークやプラットフォームの API も、モデル訓練側のベンチマーク構築も扱いません。評価を CI に組み込むことはエンジニアリングの常識として言及するにとどめ、深入りはしません。

コース構成

  1. 「完了に見える」は「完了している」ではない
  2. 何を検証するか: 終状態を優先し、プロセスは補助に
  3. 決定的な検証器: pass/fail を出せる検査だけが有効
  4. LLM ジャッジ: ルーブリック、フォーマット、そして判定させてはいけないもの
  5. 評価セット: 現実のタスク20件から始める
  6. ハンズオン: エージェント用の評価トラックを構築する

学習目標

このコースを終えると、次のことができるようになります:

  • エージェントの非決定性が従来のテストの経路の前提をどう壊すか、そして実行できるチェックがないとき「完了に見える」がなぜ唯一のシグナルになってしまうのかを説明する
  • エージェントのタスクに計測可能な成功基準を定義し、最終状態を検証するか要所に状態チェックポイントを置くかを判断する――軌跡を 1 ステップずつ監査するのではなく
  • 最も速く、最も信頼でき、最もスケールする順に検証器を選ぶ: 決定的なチェック(完全一致、スクリプトによる比較、テストスイート)を先に置き、厳しすぎる検証器が正しい出力を落とすといった罠を見分ける
  • 自由形式の出力向けに LLM ジャッジを設計する: 多次元のルーブリック、制約された出力形式、推論してから採点――そして作業をしたモデルが採点すべきでない理由と、問題を探せと言われたジャッジが必ず何かを見つけてしまう理由を説明する
  • 実タスク 20 件程度から評価セットを構築する: 実際の分布に合わせ、エッジケースを足し、1 件ごとの磨きより件数を優先し、過学習に備えてホールドアウトを取っておく――そして効果量が大きいときに初期の数件で十分な理由を説明する
  • 自分のエージェント向けに再現可能な評価トラックを構築する: 1 タスクにつき 1 回のハーネスループ、決定的な検証器と LLM ジャッジによる階層的な採点、合格率にとどまらない実行時間と呼び出し回数のメトリクスの記録――そしてそれを使ってプロンプトの変更 1 つの実際の効果を計測する

前提知識

  • このシリーズの最初の 9 つのコースを終えている、または同等の知識がある
  • stop_reason 駆動のハーネスループを手書きでき、tool_use / tool_result の対応づけを理解している(コース7)
  • チェックポイントと副作用の台帳がどうディスクに落ちるかを知っている(コース9。本コースの評価トラックはハーネスループの骨格を再利用します)
  • 基本的な JavaScript / Node.js のコードを読み書きできる(レッスン6 では一緒に書き進めます)

想定学習時間

約 3〜4 時間(各レッスンのハンズオン演習を含む)。