MemexMemex/Blog
← 戻る

あなたのエージェントは本当に良くなったのか、それとも「気がする」だけか

最終更新

良いエージェント評価は「今週のエージェントは前より悪くなった気がする」という曖昧な感覚を、 チームが行動できる数字に変えてくれます。 Anthropicの工学チームが書いた 《Demystifying evals for AI agents》 は、Claude Codeのような製品で得た教訓を凝縮した良ガイドです。 この記事では、読んで感じ入った点をいくつか共有します。

なぜエージェント評価は思ったより難しいのか

単一ターンのLLM評価はとてもクリーンです(プロンプトを入れる、応答を得る、評定者が採点する)。 エージェントはそのシンプルさを完全に壊します。複数ターンでツールを使い、環境状態を変更し、 中間結果に基づいて戦略を調整するため、ミスは伝播し副作用は積み重なります。 軌跡が酷く見えても最終結果は完璧であることもあれば、その逆もあります。

Memex自身の知識ベースエージェントを例にしましょう。 あなたが何かを記録すると、エージェントは LSGrepReadEditWrite といったツールに加えて「インサイトを更新する」「整理をスキップする」などの上位の動作で、 複数の回にわたってファイルシステムを操作します。 一部の結果は客観的に検証できます(ファイルは正しく書かれた?リンクは解決する?)。 一部は本質的に主観的です(このスライスは正しい?このインサイトは見せる価値がある?)。

なぜエージェント評価は難しいのか

Memexの知識ベースエージェントを例に

ツールセット
ReadWriteEditGrepLSMoveインサイト更新整理スキップ
知識ベースエージェント · 多ターン実行
LOOP
LS で知識ベース構造を確認、配置場所を決定
Grep で関連履歴を検索、関連性を発見
Read で対象ファイルを読込、編集計画
Edit で書込み、ファイル過大に遭遇、戦略変更し分割
Write で分割書込み + インサイト更新 → ✓ 完了
すべてのステップが知識ベースのファイルシステム状態を変更します。
客観的に検証可能
ファイルは正しく書かれた?
fact_id リンクは保持されている?
構造はP.A.R.A.に沿っている?
主観的で判定が難しい
インサイトの質は?
分類は妥当?
分割の粒度は適切?

エージェントは多くのツールを備え、多ターンで呼び出し、状態を変え、変化に応じて戦略を調整します。 最終出力には客観的に検証可能なものと、主観的にしか判断できないものが含まれ、評価は両方を扱う必要があります。

評価フレームワークの用語

Anthropicの記事は、後の議論を扱いやすくする、小さく正確な用語を定義しています。

  • タスク(Task):明確な入力と成功基準を持つ単一のテストケース。
  • 試行(Trial):タスクへの単一の試み。出力がばらつくため複数回実行します。
  • 評定者(Grader):出力のある側面を採点するロジック。1つのタスクに複数。
  • トランスクリプト(Transcript):試行の完全な記録。推論とツール呼び出しを含みます。
  • 結果(Outcome):試行終了時の環境の最終状態。
  • 評価ハーネス(Eval harness):試行を編成し、ステップを記録し、集計するランナー。
  • 評価スイート(Eval suite):ある能力や挙動を測る関連タスクの集合。

Anthropicの評価フレームワーク

harness、suite、task、grader、metric、trial の階層関係

評価ハーネス Eval harness
評価スイート Eval suite
タスク Task
評定基準 Graders
決定的テストLLM評定状態チェックtool_calls
追跡指標 Tracked metrics
n_turnsn_toolcallstokenslatency
試行 Trials
試行 #1
トランスクリプト + 最終状態
試行 #2
トランスクリプト + 最終状態
...
エージェント実行環境
最終結果
環境の最終状態
評定者による評価
トランスクリプト + 結果 → スコア
階層関係
評価スイート含むN 個のタスク(明確な入力 + 成功基準)
タスク含むN 項目の評定基準
タスク対応N 回のモデル試行
試行対応1つのトランスクリプト + 1つの最終環境状態

評価ハーネスは実行環境を提供し、エージェントを定義し、スイートを配信し、 タスクを並行実行し、各ステップを記録し、評定者を適用し、結果を集約します。

3種類のエージェント評定者

実用的な評価設計はたいてい3種類の評定者を組み合わせ、タスクの各側面に最適なものを選びます。

コードベースの評定者

文字列マッチング、類似度計算、ツール呼び出し検証、テストの合否などで結果を採点します。 評定者自体が決定的なコードで、高速、低コスト、再現性、デバッグしやすさが利点です。 正解の変種に対しては脆く、主観的な品質には弱いので、機械的に検証できる出力に限定して使います。

モデルベースの評定者(LLM-as-judge)

LLM-as-judgeが自然言語のルーブリックを適用します。参照解や複数評価者を加えると信頼性が上がります。 ただし、確率的な評定者で確率的なエージェントを採点しているため、 人間の評価との校正が信頼性維持に不可欠です。

人手の評定者

SMEレビュー、クラウド判断、A/Bテスト、評定者間一致。遅く高価ですが、曖昧な品質のゴールドスタンダードです。 主な役目はモデルベース評定者の校正と、自動採点が揺れる主観的な境界の解決です。

エージェントを評価する方法

エージェント評価は通常、3種類の評定方式を組み合わせます

1
コードベース
文字列マッチング、類似度計算、ツール呼び出し検証、テストの合否などで結果を採点します。 評定者自体が決定的なコードです。
長所 高速、低コスト、客観的、再現性、デバッグしやすい。
短所 正解の変種に対して脆い;主観的な品質には弱い。
適用 出力が客観的に検証できるエージェント。
2
モデルベース
LLM-as-judgeが自然言語のルーブリックを適用します。 参照解や複数評価者を加えると信頼性が上がります。
長所 柔軟、スケーラブル、ニュアンスを捉え、自由形式の出力を扱える。
短所 非決定的でコスト高。確率的なエージェントを確率的な評定者で採点しているため、 人間との校正が不可欠。
適用 コードだけでは検証が難しいエージェント。
3
人間ベース
SMEレビュー、クラウド判断、A/Bテスト、評定者間一致。 遅いが、曖昧な品質のゴールドスタンダード。
長所 権威、ユーザーの実際の感覚に近い。
短所 最も高価で最も遅い;専門家へのアクセスがボトルネックになりがち。
適用 モデルベース評定者の校正と、主観的な境界の解決。

非決定性:pass@k と pass^k

エージェントの挙動は実行ごとに変動します。 昨日通ったタスクが今日は失敗するかもしれません。 原文は補完し合う2つの指標を提示しています。

pass@k:k 回のうち少なくとも1回成功

pass@kk 回の試行のうち少なくとも1回成功する確率です。k が増えると上昇します。試行が多いほど少なくとも1回成功する確率は高くなり、 通常 pass@1 が初回成功で気にする値です(エンドユーザーは滅多に再試行しないため)。

pass^k:k 回すべて成功

pass^kk 回の試行ですべて成功する確率です。k が増えると下降し、より多くの試行で一貫性を要求するほどハードルは高くなります。 「毎回ちゃんと動く」べきユーザー向けエージェントはこの数値で生死が決まります。

エージェント評価の非決定性をどう捉えるか

Anthropicは2つの補完的な指標を推奨

pass@k

何回試せば少なくとも1回成功するか。pass@1 を100%に近づけたい(初回で完了させるのが理想です)。

pass^k

連続 k 回すべて成功できるか。許容できる k が大きいほど、 本番でエージェントが安定して動くことを意味します。

100%75%50%25%0成功率12345678910試行回数 (k)k=1 · 共通の起点
pass@k≥1回成功
pass^k全て成功

k=1 では2つの指標は同一です(どちらも1回ごとの成功率)。k=10 では正反対の物語を語ります:pass@k は100%に近づき、pass^k は0%に近づきます。 満たすべきユーザー期待に合わせて選びましょう。

ゼロから評価を始めるための提言

原文の後半は実用的なアドバイスで満ちています。 ここでは私たちが繰り返し戻ってくるエッセンスをまとめます。

Anthropicの評価提言

なぜ / いつ / どうやって

?
なぜ?

効果的な評価はチームが自信を持ってエージェントをリリースできるようにします。 プロンプトを変えても、ランタイムを変えても、モデルをアップグレードしても、 評価は「エージェントは本当に良くなったのか?」という核心の問いに答えます。

?
いつ?

エージェント開発のあらゆる段階で評価は有用です。 早期は成功基準を明確にし、後期は品質ドリフトを防ぎます。 早く始めるほど、構築コストは低くなります。

?
どうやって?

複数の評定者を意図的に組み合わせ、スコアの合成方法を決める:加重?全合格?ハイブリッド?

実際の失敗から 20〜50個の単純なタスク を最初に定義する。 少量のサンプルで初期反復に大きな効果(80/20の法則)。

2人の領域専門家が同じ判定に至るほど明確なタスクを書く。0% pass@100 は壊れたタスクの兆候であり、エージェントが無能なわけではない。

すべきすべきでないの両方を網羅し、片側最適化を避ける。

評価環境を分離する。共有状態、残ファイル、リソース不足は試行の独立性を壊す。

評価スイートを生きた成果物として扱う。トランスクリプトを読み、 安定した能力タスクを回帰スイートに昇格させ、スコアが意外なら評定者を見直す。

ドメインエキスパートやプロダクトチームに貢献を開放する。 彼らがユーザーと要件に最も近い。

原文では HarborBraintrustLangSmithArizeLangfuse などの評価フレームワークも紹介されています。 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はモデルの能力を疑う前に、タスク仕様と評定者を見直すことを推奨しています。