あなたのエージェントは本当に良くなったのか、それとも「気がする」だけか
最終更新
良いエージェント評価は「今週のエージェントは前より悪くなった気がする」という曖昧な感覚を、 チームが行動できる数字に変えてくれます。 Anthropicの工学チームが書いた 《Demystifying evals for AI agents》 は、Claude Codeのような製品で得た教訓を凝縮した良ガイドです。 この記事では、読んで感じ入った点をいくつか共有します。
なぜエージェント評価は思ったより難しいのか
単一ターンのLLM評価はとてもクリーンです(プロンプトを入れる、応答を得る、評定者が採点する)。 エージェントはそのシンプルさを完全に壊します。複数ターンでツールを使い、環境状態を変更し、 中間結果に基づいて戦略を調整するため、ミスは伝播し副作用は積み重なります。 軌跡が酷く見えても最終結果は完璧であることもあれば、その逆もあります。
Memex自身の知識ベースエージェントを例にしましょう。 あなたが何かを記録すると、エージェントは LS、Grep、Read、Edit、Write といったツールに加えて「インサイトを更新する」「整理をスキップする」などの上位の動作で、 複数の回にわたってファイルシステムを操作します。 一部の結果は客観的に検証できます(ファイルは正しく書かれた?リンクは解決する?)。 一部は本質的に主観的です(このスライスは正しい?このインサイトは見せる価値がある?)。
なぜエージェント評価は難しいのか
Memexの知識ベースエージェントを例に
fact_id リンクは保持されている?構造はP.A.R.A.に沿っている?
分類は妥当?
分割の粒度は適切?
エージェントは多くのツールを備え、多ターンで呼び出し、状態を変え、変化に応じて戦略を調整します。 最終出力には客観的に検証可能なものと、主観的にしか判断できないものが含まれ、評価は両方を扱う必要があります。
評価フレームワークの用語
Anthropicの記事は、後の議論を扱いやすくする、小さく正確な用語を定義しています。
- タスク(Task):明確な入力と成功基準を持つ単一のテストケース。
- 試行(Trial):タスクへの単一の試み。出力がばらつくため複数回実行します。
- 評定者(Grader):出力のある側面を採点するロジック。1つのタスクに複数。
- トランスクリプト(Transcript):試行の完全な記録。推論とツール呼び出しを含みます。
- 結果(Outcome):試行終了時の環境の最終状態。
- 評価ハーネス(Eval harness):試行を編成し、ステップを記録し、集計するランナー。
- 評価スイート(Eval suite):ある能力や挙動を測る関連タスクの集合。
Anthropicの評価フレームワーク
harness、suite、task、grader、metric、trial の階層関係
評価ハーネスは実行環境を提供し、エージェントを定義し、スイートを配信し、 タスクを並行実行し、各ステップを記録し、評定者を適用し、結果を集約します。
3種類のエージェント評定者
実用的な評価設計はたいてい3種類の評定者を組み合わせ、タスクの各側面に最適なものを選びます。
コードベースの評定者
文字列マッチング、類似度計算、ツール呼び出し検証、テストの合否などで結果を採点します。 評定者自体が決定的なコードで、高速、低コスト、再現性、デバッグしやすさが利点です。 正解の変種に対しては脆く、主観的な品質には弱いので、機械的に検証できる出力に限定して使います。
モデルベースの評定者(LLM-as-judge)
LLM-as-judgeが自然言語のルーブリックを適用します。参照解や複数評価者を加えると信頼性が上がります。 ただし、確率的な評定者で確率的なエージェントを採点しているため、 人間の評価との校正が信頼性維持に不可欠です。
人手の評定者
SMEレビュー、クラウド判断、A/Bテスト、評定者間一致。遅く高価ですが、曖昧な品質のゴールドスタンダードです。 主な役目はモデルベース評定者の校正と、自動採点が揺れる主観的な境界の解決です。
エージェントを評価する方法
エージェント評価は通常、3種類の評定方式を組み合わせます
非決定性:pass@k と pass^k
エージェントの挙動は実行ごとに変動します。 昨日通ったタスクが今日は失敗するかもしれません。 原文は補完し合う2つの指標を提示しています。
pass@k:k 回のうち少なくとも1回成功
pass@k は k 回の試行のうち少なくとも1回成功する確率です。k が増えると上昇します。試行が多いほど少なくとも1回成功する確率は高くなり、 通常 pass@1 が初回成功で気にする値です(エンドユーザーは滅多に再試行しないため)。
pass^k:k 回すべて成功
pass^k は k 回の試行ですべて成功する確率です。k が増えると下降し、より多くの試行で一貫性を要求するほどハードルは高くなります。 「毎回ちゃんと動く」べきユーザー向けエージェントはこの数値で生死が決まります。
エージェント評価の非決定性をどう捉えるか
Anthropicは2つの補完的な指標を推奨
何回試せば少なくとも1回成功するか。pass@1 を100%に近づけたい(初回で完了させるのが理想です)。
連続 k 回すべて成功できるか。許容できる k が大きいほど、 本番でエージェントが安定して動くことを意味します。
k=1 では2つの指標は同一です(どちらも1回ごとの成功率)。k=10 では正反対の物語を語ります:pass@k は100%に近づき、pass^k は0%に近づきます。 満たすべきユーザー期待に合わせて選びましょう。
ゼロから評価を始めるための提言
原文の後半は実用的なアドバイスで満ちています。 ここでは私たちが繰り返し戻ってくるエッセンスをまとめます。
Anthropicの評価提言
なぜ / いつ / どうやって
効果的な評価はチームが自信を持ってエージェントをリリースできるようにします。 プロンプトを変えても、ランタイムを変えても、モデルをアップグレードしても、 評価は「エージェントは本当に良くなったのか?」という核心の問いに答えます。
エージェント開発のあらゆる段階で評価は有用です。 早期は成功基準を明確にし、後期は品質ドリフトを防ぎます。 早く始めるほど、構築コストは低くなります。
複数の評定者を意図的に組み合わせ、スコアの合成方法を決める:加重?全合格?ハイブリッド?
実際の失敗から 20〜50個の単純なタスク を最初に定義する。 少量のサンプルで初期反復に大きな効果(80/20の法則)。
2人の領域専門家が同じ判定に至るほど明確なタスクを書く。0% pass@100 は壊れたタスクの兆候であり、エージェントが無能なわけではない。
すべきとすべきでないの両方を網羅し、片側最適化を避ける。
評価環境を分離する。共有状態、残ファイル、リソース不足は試行の独立性を壊す。
評価スイートを生きた成果物として扱う。トランスクリプトを読み、 安定した能力タスクを回帰スイートに昇格させ、スコアが意外なら評定者を見直す。
ドメインエキスパートやプロダクトチームに貢献を開放する。 彼らがユーザーと要件に最も近い。
原文では Harbor、Braintrust、LangSmith、Arize、Langfuse などの評価フレームワークも紹介されています。 MemexのAgent harnessでより多く使ったあと、私たちの実体験を共有します。
エージェント評価がMemexにとって意味すること
Memexはあなたのスマホでマルチエージェントシステム全体を動かしています。 Card Agent、PKM Agent、Comment Agent、Insight Agent、そしてあなた自身が作るカスタムエージェント。 各エージェントは自律しており、ツールを使い、知識ベースの状態を変更します。 Anthropicの語彙は私たちの品質に対する考え方とぴったり対応します。 記録の種類ごとにタスクを定義し、検証可能な結果と判断するしかない出力に対して評定者を混ぜ、 ユーザーが毎日体験するものに pass^k の信頼性目標を設けます。
評価は「より良い」とは何かについてのチーム自身との会話です。 その会話を早く始めるほど、エージェントはスロットマシンよりも、 リリースのたびに改善されるチームメイトのように感じられます。
原文全体は Anthropicエンジニアリングブログ をご覧ください。Memexの実装に興味があれば、ソースコードはオープンで、スマホでAIエージェントを動かすために本当に必要なことはエージェントアーキテクチャをより深くカバーしています。
FAQ:AIエージェント評価のよくある質問
AIエージェント評価とは何ですか?
エージェント評価は、AIエージェントに対するプログラム化されたテストです。入力タスクを与え、自身のツールセットで実行させ、評定者が運行記録と最終状態をもとにスコアを付けます。単一ターンのLLMテストと違い、エージェント評価は多段階のツール呼び出し、状態変化、部分点を扱う必要があります。
pass@k と pass^k はどう違いますか?
pass@kはk回のうち少なくとも1回成功する確率で、kが大きいほど高くなります。pass^kはk回すべて成功する確率で、kが大きいほど低くなります。pass@1は初回成功率の指標、pass^kは「毎回ちゃんと動かないと困る」ユーザー向け体験の信頼性指標として用いられます。
コード/モデル/人手の評定者、どれを使うべきですか?
3つすべてを次元ごとに使い分けます。コードで決定的に検証できる結果にはコード評定者、自由形式の出力やトーンにはモデル評定者(LLM-as-judge)、モデル評定者の校正や主観領域の解決には人手評定者を使います。Anthropicは1つに絞るのではなく組み合わせを推奨しています。
エージェント評価スイートはタスク何件から始めればいいですか?
実際の失敗から選んだ20〜50件で十分始められます。Anthropicは80/20の法則を強調しており、少数の良いタスクが初期反復で最大の価値を生みます。エージェントが成熟したら拡張し、安定したタスクは回帰スイートへ「卒業」させます。
なぜ pass@100 = 0% は通常タスクが壊れているサインなのですか?
フロンティアモデルが100回試して解けない場合、最も可能性が高いのはタスク仕様が曖昧、評定者が厳しすぎる、もしくは実行環境が正解を阻んでいることです。Anthropicはモデルの能力を疑う前に、タスク仕様と評定者を見直すことを推奨しています。