エージェント評価準備チェックリスト
LangChain のエンジニアが、エージェント評価のインフラ構築前に必ず行うべき手動レビューや基準策定など、実践的な準備ステップを詳述したチェックリストを提供している。
キーポイント
事前調査の徹底
評価基盤を構築する前に、20〜50 件の実際のエージェントトレースを手動でレビューし、失敗パターンを理解することが最優先されるべきである。
明確な成功基準の定義
曖昧さを排除した単一タスクに対する明確な成功基準を定義し、機能評価と回帰テストを区別して管理する必要がある。
失敗原因の特定と責任所在
各失敗の原因を特定・説明可能にし、評価の所有権をドメイン専門家 1 名に割り当てることで、インフラやデータの問題をエージェント自体の欠陥と区別する。
シンプルさからの開始
複雑なアーキテクチャが整う前に、まずコアタスクを完了できるかを確認する最もシンプルなエンドツーエンド評価から始め、証拠に基づいてのみ複雑化を進める。
重要な引用
Start with the simplest eval that gives you signal.
Before building any infrastructure, spend 30 minutes reading through real agent traces. You'll learn more about failure patterns from this than from any automated system.
Rule out infrastructure and data pipeline issues before blaming the agent.
影響分析・編集コメントを表示
影響分析
この記事は、エージェント開発における「評価」の質を決定づける重要な前工程(プレワーク)を明確化しており、多くの開発者が陥りがちな「ツール導入先行・分析不足」というミスを防ぐ指針となる。実践的なチェックリスト形式で提供されているため、現場チームが即座に適用可能であり、エージェントシステムの信頼性向上とデプロイ成功率の向上に直接寄与する。
編集コメント
エージェント開発において、評価ツールの選定や導入よりも先に「何を評価し、どう分析するか」という設計思想を固めることの重要性を説く貴重な記事です。ツール依存になりがちな開発現場に対し、人間による洞察の価値を再認識させる一冊と言えます。
*Victor Moreira 著、LangChain のデプロイエンジニア*
このチェックリストは、「エージェント観測性が評価を可能にする」という記事の practical companion(実践的な相棒)です。その記事では、なぜエージェントの評価が従来のソフトウェアテストと異なるのか、コアとなる観測性のプリミティブ(実行、トレース、スレッド)を紹介し、それらがどのように評価レベルにマッピングされるかを解説しています。エージェント評価が初めての方は、まずそちらの記事をお読みください。
本記事では、*「どのように行うか」*に焦点を当て、エージェントの評価を構築・実行・リリースするためのステップバイステップのチェックリストを提供します。
信号(シグナル)を得られる最もシンプルな評価から始めましょう。 複雑なアーキテクチャがまだ変化している場合でも、エージェントが中核タスクを完了できるかどうかを検証する数個のエンドツーエンドの評価を行うことで、すぐにベースラインを得ることができます。単純なアプローチでは実際の失敗を見逃しているという証拠がある場合にのみ、複雑さを追加してください。
🤔
詳細な解説には興味がないですか?
以下の完全なチェックリストへスキップしてください。
エージェント評価を構築する前に
0:00 /0:421×
LangSmith を使用して、トレースから注釈キュー、そしてデータセットと実験へと移行します。
☑️ 評価インフラストラクチャを構築する前に、20〜50 の実際のエージェントのトレースを手動でレビューしてください
☑️ 単一のタスクに対する曖昧さのない成功基準を定義してください
☑️ 能力評価と回帰評価を分離する
☑️ 各失敗が発生した理由を特定し、明確に説明できるようにする
☑️ 評価の所有権を単一のドメイン専門家へ割り当てる
☑️ エージェントを責める前に、インフラやデータパイプラインの問題を除外する
深掘り
評価基盤を構築する前に、20〜50 の実際のエージェントトレースを手動でレビューする
LangSmith を使用して、トレースから注釈キュー、さらにデータセットと実験へと移行します。
いかなるインフラも構築する前に、30 分かけて実際のエージェントトレースを読み込みます。これにより、自動化システムよりもはるかに多くの失敗パターンを学ぶことができます。LangSmith の traces(トレース)や annotation queues(注釈キュー)は、この目的に非常に優れています。
単一のタスクに対して曖昧さのない成功基準を定義する
2 人の専門家が合格・不合格の判断で合意できない場合、そのタスクは再検討が必要です:
- 不明確な成功基準:「この文書をうまく要約してください。」
- 明確な成功基準:「この会議議事録から主要なアクションアイテムを 3 つ抽出してください。各項目は 20 語未満とし、発言者があれば所有者を含めてください。」
機能評価と回帰評価を分離する
両方とも必要です。なぜなら、それぞれ異なる目的を果たすからです。機能評価は困難なタスクにおける進捗を測定することでエージェントの能力を引き上げ、一方、回帰評価(regression evals)は既に動作している機能を保護します。この分離を行わないと、既存の行動のみを守ることに終始して改善が止まるか、新しい機能の追求に没頭しすぎて回帰(regressions)をリリースしてしまうかのどちらかになります。
- 機能評価は「何ができるのか?」という問いに答えます。最初は合格率低めから始め、乗り越えるべき課題を提供します。
- 回帰評価は「まだ動作しているか?」という問いに答えます。合格率は約100% を目指し、性能の低下を検出します。
各失敗の原因を特定し、明確に説明できるようにする
なぜ何かが失敗したのかを説明できない場合、自動化された評価(automated evals)を構築する前に、より多くのエラー分析を行う必要があります。ここが、評価作業の60〜80% を費やすべき場所です。以下のプロセスに従ってください:
- トレースの収集:本番環境またはテストから代表的な失敗事例を収集する
- オープンコーディング(Open coding):ドメインの専門家とトレースを見直し、事前にカテゴリ分類することなく目に見えるすべての課題を記録する(または、当社の注釈キューを使用して、専門家に各自でトレースレビューを行わせる)
- カテゴリ分け:課題を失敗の分類体系(プロンプトの問題、ツール設計の問題、モデルの制限、ツールの故障、データ不足など)にグループ化する
- 反復:新しい失敗カテゴリが発見されなくなるまで繰り返しレビューする
カテゴリ分類が完了したら、修正方法は根本原因によって異なります:
- プロンプトの問題:エージェントの理解が誤ったのは、指示が不明確だったため → プロンプトを修正する
- ツール設計の問題:ツールインターフェースによりエージェントがミスを犯しやすくなっていた → パラメータを再設計し、例を追加して境界を明確化する
- モデルの限界:指示は明確だったが、LLM(大規模言語モデル)がエッジケースに一般化できていない → 例を追加する、異なるアーキテクチャを試す、または別のモデルを使用する
- まだ不明:パターンが見えるほど失敗事例を分析していない → まずエラー分析をさらに実施する
評価の所有権を単一のドメイン専門家に委譲する
誰かが評価プロセスの責任者となる必要があります。具体的には、データセットの維持、ジャッジの再較正、新しい失敗モードの選別、「十分良好」とは何かの判断です。理想的には、曖昧なケースにおける品質の裁定者として、単一のドメイン専門家が機能し、委員会による設計ではなく行動すべきです。
エージェントを責める前に、インフラストラクチャとデータパイプラインの問題を除外する
Witan Labs チームは、単一の抽出バグによりベンチマークが 50% から 73% に変化したことを発見しました。インフラストラクチャ上の問題(タイムアウト、不正な API レスポンス、陳腐化したキャッシュなど)は、頻繁に推論の失敗のように見せかけます。まずはデータパイプラインを確認してください。
評価レベルを選択する
Single-step vs. Full-turn vs. Multi-turn evals
すべての評価が同じものをテストするわけではありません。エージェントの振る舞いの適切なレベルに合わせた評価を行ってください。各レベルの詳細については、"Agent Observability Powers Agent Evaluation" をご覧ください。
Single-step vs. Full-turn vs. Multi-turn evals
☑️ 3 つの評価レベル(シングルステップ(実行)、フルターン(トレース)、マルチターン(スレッド))を理解する
☑️ まずトレースレベル(フルターン)評価から始め、必要に応じてランレベルとスレッドレベルを重ねていく
Deep dive
Single-step evals
これらは、「エージェントは適切なツールを選択したか?」「有効な API 呼び出しを生成したか?」という問いに答えるものです。自動化が最も容易ですが、安定したエージェントアーキテクチャが必要です。まだツールの定義を変更中である場合、ランレベルの評価は機能しなくなる可能性があります。
Full-turn evals
ここが多くのチームが始めるべき場所です。3 つの次元全体で完全なトレースを評価します:
- 最終応答:出力は正しく、有用ですか?
- 軌跡:エージェントは合理的な経路をたどりましたか?(必ずしもあなたが予想した正確な経路である必要はありません。有効な経路であれば構いません)
- ステート変更:エージェントは適切なアーティファクトを作成しましたか?(ファイルの作成、データベースの更新、会議のスケジュール設定など)
ステート変更の評価は見過ごされがちですが、単に「言う」だけでなく実際に「行う」エージェントにとっては極めて重要です。例えば、エージェントが会議をスケジュールする場合、「会議がスケジュールされました!」と言ったかどうかを確認するだけでは不十分です。正しい時刻、参加者、説明を含むカレンダーイベントが実際に存在するかを検証する必要があります。コードを作成する場合はそのコードを実行し、データベースを更新する場合は該当する行をクエリしてください。最終応答で「完了!」と表示されていても、実際のステートは間違っている可能性があります。
多ターン評価(Multi-turn evals)
実装が最も難しいレベルです。トレースレベルの評価が確立された後に段階的に導入してください。
💡
実践的なヒント: N-1 テストを活用してください。本番環境からの実際の会話プレフィックス(最初の N-1 ターン分)を取得し、エージェントには最終ターンのみを生成させます。これにより、完全な合成多ターンシミュレーションで生じる誤差の累積問題を回避できます。
まずはトレースレベル(全ターン)評価から始め、必要に応じてランレベルやスレッドレベルを追加する
トレースレベルの評価は、1 回の評価あたりに得られる信号量が最も大きいです。ランレベルは特定のステップのデバッグに有用です。エージェントが多ターン会話を行う場合、スレッドレベルの評価が重要になります。
データセット構築

☑️ すべてのタスクを曖昧さのないものとし、解決可能であることを証明する参照ソリューションを含めること
☑️ 正例(振る舞いが発生すべきケース)と負例(振る舞いが発生すべきでないケース)の両方をテストすること
☑️ データセット構造が選択した評価レベルに合致していることを確認すること
☑️ エージェントの種類(コーディング、対話型、リサーチなど)に合わせてデータセットをカスタマイズすること
☑️ 本番環境のデータがない場合はシード例を生成すること
☑️ ドッグフーディングでのエラー、適応された外部ベンチマーク、手書きの振る舞いテストからデータを収集すること
☑️ 継続的な改善のためのトレーサビリティとデータセットを連携させるフライホイールを構築すること
詳細解説
すべてのタスクを曖昧さのないものとし、解決可能であることを証明する参照ソリューションを含めること
- 曖昧な例:「NYC への良いフライトを探して。」
- 明確な例:「SFO から JFK への往復フライトで、12 月 15 日〜17 日に出発し、12 月 22 日に帰国、予算は 400 ドル以下、エコノミークラスのものを検索して。」
エージェントが不可能な場合(情報が不足している、制約条件が実現不可能など)は、タスク自体に問題があるだけで、エージェントが悪いわけではありません。すべてのタスクには参照ソリューションを含め、解決可能であることを証明し、評価のための基準となるようにしてください。
☑️ Ensure every task is unambiguous, with a reference solution that proves it's solvable
☑️ Test both positive cases (behavior should occur) and negative cases (behavior should not occur)
☑️ Ensure dataset structure matches your chosen evaluation level
☑️ Tailor datasets to your agent type (coding, conversational, research)
☑️ Generate seed examples if you lack production data
☑️ Source from dogfooding errors, adapted external benchmarks, and hand-written behavior tests
☑️ Set up a trace-to-dataset flywheel for continuous improvement
ポジティブケース(行動が発生すべき場合)とネガティブケース(行動が発生すべきでない場合)の両方をテストする
「必要な時に検索したか」だけをテストすると、何でも検索してしまうエージェントを最適化することになります。ネガティブケースも必ずテストしてください。期待される動作を確認するためだけでなく、仮説を反証するための例を含めてください。
データセット構造は選択した評価レベルに一致させること
- ランレベル(単一ステップ)の評価には、参照となるツール呼び出しまたは判断が必要
- トレースレベル(1 フルターン)の評価には、期待される最終出力および/または状態変化が必要
- スレッドレベル(複数ターン)の評価には、期待される文脈保持を伴う複数ターンの会話シーケンスが必要
エージェントタイプ(コーディング、対話型、リサーチ)に合わせてデータセットを調整する
- コーディングエージェント:品質評価基準とともに、決定論的なテストスイート(パス/フェイルする単体テスト)を含める
- 対話型エージェント:多次元基準、タスク完了、および対話の質(共感、明確さ)を含む
- リサーチエージェント:根拠チェック(主張はソースによって裏付けられているか?)と網羅性チェック(主要な事実は含まれているか?)を含める
本番データがない場合はシード例を生成する
タスクにおける変動の主要次元(クエリ複雑度、トピック、エッジケースの種類)を定義する。それらの次元をカバーする約 20 の入力例を手動で作成し、既存のエージェントで実行した上でレビュー・修正を行い、信頼できるグランドトゥルースとして保存してください。
💡
実践的なヒント: 20〜50 の手動レビュー済みで確信のある例は、検証していない数百の合成データよりも優れた結果を出します。ここでは質が量に勝ります!
ドッグフーディングからのエラー、外部ベンチマークの適応、手書きの動作テストからソースを取得する
コールドスタートを乗り越えたら、新しい評価指標を発見するための継続的なパイプラインが必要です。以下の 3 つの戦略を組み合わせるのが効果的です。
- エージェントを毎日ドッグフーディングし、発生したすべてのエラーを評価指標に変換します。これはプロダクションモニタリングとは異なります。チームが意図的に、実際のワークフロー全体を通じてエージェントに負荷テストを行うのです。
- Terminal Bench や BFCL などの外部ベンチマークからタスクを抽出し、自社の状況に合わせて適応させます。ベンチマークを総体として実行するのではなく、自社が重視する能力を検証できるタスクを選び抜き、エージェント向けに適応させてください。
- 「ツール呼び出しの並列化が可能か?」「曖昧なリクエストに対して確認質問を行うか?」など、重要だと考える特定の動作に焦点を当てたテストを手書きで記述します。
このアプローチの具体的な例については、「Deep Agents 用の評価指標をどのように構築しているか」「How we build evals for Deep Agents」 をご覧ください。
グレーダー設計

☑️ 評価次元ごとに専門的なグレーダーを選択する:客観的チェックにはコードベースを、主観的評価には LLM-as-judge(LLM を審査員として用いる手法)を、曖昧なケースには人間を、バージョン比較にはペアワイズ比較をデフォルトとする
☑️ ガイドライン(インライン、ランタイム)と評価器(非同期、品質評価)を区別する
☑️ 数値スケールよりも二進式の合格/不合格を優先する
☑️ LLM-as-a-Judge による採点者を人間の嗜好にキャリブレーションする
☑️ 正確な経路ではなく結果に対して採点し、段階的な進捗に対する部分的な加点を組み込む
☑️ 汎用的な市販指標ではなく、エラー分析から導き出されたカスタム評価器を使用する
詳細解説
評価次元ごとに専門化された採点者を選択する
Guardrails(ガードレール)と Evaluators(評価器)の比較表:
- Guardrails: 実行中、ユーザーが出力を見る前。ミリ秒単位で高速である必要がある。危険または破損した出力をブロックする目的。PII 検出、フォーマット検証、安全性フィルタなどが例。
- Evaluators: 生成後、非同期に処理。数秒から数分かかる場合がありコストがかかる可能性がある。品質を測定し回帰を検知する目的。LLM-as-judge スコアリング、トラジェクトリ分析などが例。
客観的に正解が存在する場合、コードベースの評価器をデフォルトとする。LLM-as-a-Judge による採点 は客観的なタスクにおいて信頼性が低く、一貫性のない判断が実際の回帰を隠してしまう可能性がある。決定論的比較に切り替えることで、一貫性の欠如を解消し、より明確なシグナルを提供できる場合が多い。LLM-as-a-Judge は真に主観的な評価に限定して使用する。
💡
実践的なヒント: 正しさ(correctness)を評価する単一の巨大な評価器を作成しようとするのではなく、評価を各次元ごとの専門的な評価器に分解してください。例えば、Witan Labs チームは 5 つの専門評価器(コンテンツの正確性、構造、視覚的フォーマット、数式シナリオ、テキスト品質)を構築し、それぞれに次元に応じた閾値を設定しました。これにより、実際にどこが失敗しているのかについて、より明確なシグナルを得ることができます!
ガイドラインと評価器の区別
- 採点スコアリング、軌跡分析
| Grader Type | Best For | Watch Out For |
|---|---|---|
| Code-based(コードベース) | 決定論的チェック、ツール呼び出し検証、出力フォーマット、実行結果 | 有効だが予期しないフォーマットに対して誤って失敗する可能性がある |
| LLM-as-judge(LLM による評価者) | 微妙な品質、ルールに基づくスコアリング、オープンエンドタスク | 人間との較正が必要(Align Evals を参照) |
| Human(人間) | 較正、主観的基準、エッジケース | 高コスト、低速、スケーラブルではない |
安全性チェックとフォーマット検証はガイドラインであり、インラインで実行されるべきです。品質評価と回帰テストは評価器であり、非同期で実行されます。この 2 つを混同しないでください。
数値スケールよりもバイナリの合格/不合格を優先する
1 から 5 のスケールは、隣接するスコア間の主観的な差異を生じさせ、統計的有意性を確保するにはより大きなサンプルサイズが必要となります。一方、バイナリ方式は明確な思考を強制します:エージェントが成功したか、しなかったかのどちらかです。複雑なタスクは常に複数のバイナリチェックに分解することができます。
注記:最新の研究では、LLM-as-judge(LLM を評価者として用いる手法)を特に使用する際に、短いスケール(0-5)が人間と LLM のアライメントをより強くもたらす可能性を示唆していますが、バイナリ方式は人間のレビューヤーにとってシンプルであり、反復作業も迅速です。
評価者としての LLM を人間の嗜好にキャリブレーションする
- LangSmith の Align Evaluator 機能を使用して、20 件以上のラベル付き例から始め、生産環境レベルの信頼性を得るために約 100 件まで増やす
- 評価者の出力に推論(reasoning)を含める;これにより精度が向上し、なぜそのようにスコア付けされたのかを監査できるようになる(Anthropic の「Demystifying Evals」でもこれが強調されている)
- 定期的に再キャリブレーションを行う;評価者は時間とともにドリフト(ずれる)し、単一の評価者がすべてのベンチマークで均一に信頼できるわけではない
- 少数ショット例(few-shot examples)を使用して評価者の一貫性を高める;LangSmith では修正内容を自動的少数ショット例としてポップアップさせることができる
成果を厳格に評価し、正確な経路ではなく部分的な進捗に対して加点を行う
エージェントは創造的な解決策を見出します。Anthropic は Demystifying Evals で「エージェントがたどった経路を評価するのではなく、その結果を生み出したかを評価すべきだ」と述べています。もし「ツール A → B → C をこの順序で必ず呼び出すこと」を必須条件とすれば、より賢いルートを見つけたエージェントは失敗扱いになってしまいます。*より良い方法:* 「会議が正しくスケジュールされたか?」と問い、「check_availability を create_event の前に呼び出したか?」とは問わないことです。
問題を正しく特定したが最終ステップで失敗したエージェントの方が、最初から失敗するエージェントよりも優れています。メトリクスが進捗の積み重ねを反映させるよう、部分的な加点(partial credit)を組み込んでください。
汎用的な市販指標ではなく、エラー分析に基づいたカスタム評価器を使用する
「有用性」や「一貫性」といった市販の指標は、誤った安心感を生み出します。重要なのは、上記のエラー分析プロセスを通じて発見された、*あなたの*特定の失敗モードを検知できる評価器です。
実行と反復

☑️ オフライン、オンライン、アドホックの評価を区別し、これらすべてを活用する
☑️ 非決定性(non-determinism)への対応として、タスクごとに複数の試行を実行する
☑️ 失敗した評価のトレースを手動でレビューし、採点者の公平性を検証する
☑️ 各試行が共有状態のないクリーンで隔離された環境で実行されることを確認する
☑️ 評価を機能カテゴリごとにタグ付けし、各評価が何を測定しているかを文書化するとともに、品質 alongside エフェシエンシー・メトリクス(ステップ数、ツール呼び出し数、レイテンシ)を追跡する
☑️ 合格率が頭打ちになるタイミングを見極め、それに応じてテストスイートを進化させる
☑️ 直接測定すべき本番環境での行動に関係のない評価は削除する
☑️ プロンプト最適化だけでなく、ツールインターフェースの設計とテストにも投資する
☑️ タスク失敗(エージェントが誤った)と評価失敗(グラダーが誤った)を区別する
詳細解説
オフライン、オンライン、アドホックの評価を区別し、これらすべてを活用する
このチェックリストの大部分はオフライン評価に焦点を当てていますが、これは意図的なものです。オフライン評価では、キュレーションされたデータセット、制御された実験、本番リリース前の反復を通じて改善を図ることができます。エージェントが本番環境に到達した後は、オンライン評価とアドホック評価も必要になります。
タイミング
内容
使用タイミング
オフライン
キュレーションされたデータセット、デプロイ前に実行
リリース前の変更テスト
オンライン
本番環境のトレースにおける継続的な評価
実際のトラフィックでの失敗検出
アドホック
取り込まれたトレースの探索的分析
予期せぬパターンの発見(Insights を参照)
**以下の「本番環境準備」セクションでは、オンライン評価の設定とアドホックなトレース探索のスケジューリングについて詳細に解説します。
非決定性を考慮するため、タスクごとに複数の試行を実行する
モデルの出力は実行ごとに変動します。コストが許容される範囲であれば、複数の 反復 を使用してください。複数の試行を実行する際は、改善を宣言する前に信頼区間を計算してください。単一の実行によるベンチマークはノイズが多いためです。非決定性のエージェントに対しては、製品要件に応じて、pass@k(k 回の試行のうち少なくとも 1 回が成功)または pass^k(k 回の試行すべてが成功)という指標の使用を検討してください。
品質指標とともに運用メトリクスも追跡してください:ターン数、トークン使用量、レイテンシ、タスクあたりのコスト。95% の精度を誇るエージェントでも、10 倍の遅さがある場合は改善とはみなされません。
評価を機能カテゴリでタグ付けし、各指標が何を測定するかを文書化するとともに、効率メトリクスも品質指標とともに追跡する
評価は発生源ではなく、何を検証しているかによってグループ化してください。file_operations(ファイル操作)、retrieval(検索)、tool_use(ツール使用)、memory(メモリ)、conversation(会話)といったカテゴリは、単一の集計スコアと個別のテスト結果の中間に位置する「中観的な」パフォーマンス像を提供します。各評価にはドキュストリング(docstring)を追加し、どのようにエージェントの機能を測定するかを説明してください。これにより、スイートが成長しても意図が明確に保たれ、ツール定義の変更後にツール使用に関する評価のみを実行するなど、ターゲットを絞ったサブセットの実行が可能になります。
すべての実験にメタデータを付与し、フィルタリング、グループ化、比較を行えるようにして、重要な次元間で実行結果を比較できるようにしましょう。これにより、「GPT-4.1 から Claude Sonnet に切り替えたことで精度が向上したか?」や「このデータセットでどのプロンプトバージョンが後退したか?」といった質問に、ログを検索することなく簡単に回答できます。LangSmith は利用可能な場合に自動的に git 情報をキャプチャしますが、モデルとプロンプトのメタデータを明示的にタグ付けすることは、実験ボリュームが増大するにつれてすぐに効果を発揮します。
品質が確立されたら、効率性でモデルを比較してください。精度が 95% でも 10 倍遅いエージェントは、改善とはみなされない可能性があります。観測ステップ数/理想ステップ数、観測ツール呼び出し数/理想ツール呼び出し数、観測レイテンシ/理想レイテンシといった比率を追跡しましょう。これは「結果を評価し、正確な経路を評価しない」という方針と矛盾しません。理想の軌道は正しさではなく効率性を測定するものです。創造的なルートを見つけたエージェントも合格しますが、そこに到達するのに時間がかかったかどうかを確認できます。具体的な例については、Deep Agents 用の評価指標フレームワークをご覧ください。
失敗した評価のトレースを手動レビューして、グラダーの公平性を検証する
「失敗」とされたタスクが、実はグラダーが想定していなかった創造的かつ有効な解決策である可能性があります。グラダーが公平に評価しているかどうかを知るには、トレースを読むことが唯一の方法です。
パス率が頭打ちになったと認識し、テストスイートをそれに応じて進化させる
パス率が頭打ちになり、同じ種類のタスクを追加しても新たな失敗モードが明らかにならなくなったときは、進化のときです:より難しいタスクを追加するか、新しい機能をテストするか、あるいは異なる次元へシフトしてください。飽和した評価セットで延々と作業を続けるのは労力の無駄です。
本番環境で重要と考える動作を直接測定する評価のみを残す
すべての評価は時間とともにシステムにプレッシャーをかけます。無計画に数百のテストを追加したくなる誘惑がありますが、それは進歩の錯覚を生み出します。その結果、本番環境で本当に重要なことを反映していない評価スイートに対して最適化してしまうことになります。評価の数が多いことが、エージェントが優れていることにはなりません。ターゲットを絞った評価を構築し、定期的にシグナルを与えなくなったものを剪定してください。このアプローチの具体的な例については、Deep Agents 用の評価の作り方 をご覧ください。
ツールインターフェースの設計とテストに投資し、プロンプト最適化だけに頼らない
ツール設計は、エージェントのエラーの特定のクラス全体を排除します。Anthropic のチーム は、SWE-bench エージェントを構築する際、プロンプトよりもツールに多くの時間を費やしたと指摘しています。モデルが実際にツールをどのように使用するかをテストしてください:異なるパラメータ形式(差分 vs 完全書き換え、JSON vs マークダウン)を試したり、ミスを起こしにくくするためにインターフェースを再設計したり、例を含む明確なドキュメントに投資してください。目標は、単にミスが「 unlikely(まれ)」になることではなく、構造的に不可能にすることです。例えば、絶対パスを必須とすることで、ナビゲーションエラーの特定のクラス全体を排除できます。
タスク失敗(エージェントが間違えた)と評価失敗(採点者が間違えた)を区別する
実行ステータスを明示的に追跡してください(完了、エラー、タイムアウト)。タイムアウトを「誤った推論」としてマークする採点者は、シグナルを汚染します。メトリクスを清潔に保つために、タスク失敗と評価失敗を分離してください。
本番環境への準備

☑️ 一貫して高い合格率を示す能力評価を回帰テストスイートへ昇格させる**
☑️ 自動化された品質ゲート付きで回帰評価を CI/CD パイプラインに統合する
☑️ ユーザーフィードバックを収集する
☑️ 本番トラフィックに対して オンライン評価 を設定する
☑️ 自動化されたチェックを超えて、本番のトレースを定期的に手動で探索するスケジュールを組む
☑️ プロンプトとツール定義をコードと共にバージョン管理する
☑️ 本番障害がデータセット、エラー分析、評価改善にフィードバックされるようにする
詳細解説
回帰評価を CI/CD パイプラインに統合し、自動化された品質ゲートを実装する
典型的なフローは以下の通りです:
- コードまたはプロンプトの変更がパイプラインをトリガーする(git push、PromptHub の更新、または手動トリガーによる)
- オフライン評価でユニットテスト、統合テスト、および厳選されたデータセットに対する評価を、安価で高速なグラダー(grader:評価者)を用いて実行する
- オフライン評価が通過した場合にプレビューデプロイを実施する
- オンライン評価でライブデータを用いた LLM-as-judge グラダー(LLM による評価者)によりプレビューに対して評価を実行する
- すべての品質ゲートを通過した場合のみ本番環境へプロモートし、そうでない場合は失敗したトレースを注釈キューにルーティングしてチームにアラートを出す
CI においてはすべてのコミットに対して安価なコードベースのグラダーを使用してください。高コストな LLM-as-judge による評価は、プレビューまたは本番環境での評価に限定してください。GitHub Actions を用いた完全な実装例については、LangSmith の CI/CD パイプラインガイド を参照してください。
ユーザーフィードバックの収集
エージェントを本番環境に展開した後、ユーザーフィードバック は最も貴重なシグナルの一つとなります。自動評価(automated evals)では、すでに把握している失敗モードしか検出できません。しかし、ユーザーはあなたが知らない失敗モードを浮き彫りにします:データセットで見逃されたエッジケース、技術的には正しいが実用的でない出力、そして予期せぬ方法で破綻するワークフローなどです。
このフィードバックを構造化された形で収集することで、それをデータセットにフィードバックし、評価者(graders)を実世界の期待に合わせて調整し、実際にエージェントを利用している人々にとって重要な改善点を優先順位付けすることができます。
自動チェックを超えて定期的に本番環境のトレースを手動で探索する
自動的な合格/不合格判定だけに頼らないでください。定期的に本番環境のトレースを探索し、評価者がカバーしていない予期せぬパターンや失敗モード、驚くべきユーザー行動、あるいは改善の機会を探ってください。そのための素晴らしい方法として、Insights Agent を活用できます!
プロンプトとツール定義のバージョン管理
LangSmith を使えば、プロンプトのバージョン管理 が容易になります。これを行わない場合、評価結果を特定の変更点と関連付けたり、どの編集が回帰(regression)を引き起こしたのかを把握したりすることができません。
本番環境での失敗を、データセット・エラー分析・評価改善にフィードバックさせる

本番環境での成功と失敗は、データセット・エラー分析・評価改善のすべてにフィードバックされるべきです。これが、エージェントを時間とともにより良くしていくためのフライングホイール(回転する車輪)なのです!
これらすべての項目を初日から揃える必要はありません。現在自分がいる段階に最も合致するセクションを選び、その項目を確実に達成した上で、そこから拡張していってください。信頼性の高いエージェントをリリースしているチームとは、最も洗練された評価インフラを持つチームではありません。むしろ、早期から評価を開始し、決して反復改善(イテレーション)を止めなかったチームなのです。
完全なチェックリスト
評価(evals)を構築する前に
⬜️ 評価インフラを構築する前に、20〜50 の実際のエージェントのトレースを手動でレビューする
⬜️ 単一のタスクに対する曖昧さのない成功基準を定義する
⬜️ 能力評価(capability evals)と回帰テスト(regression evals)を分離する
⬜️ 各失敗が発生した理由を特定し、説明できる状態にする
⬜️ 評価の責任者を単一のドメインエキスパートに割り当てる
⬜️ エージェントを責める前に、インフラやデータパイプラインの問題を除外する
評価レベルを選択する
⬜️ 3 つの評価レベルを理解する:シングルステップ(実行)、フルターン(トレース)、マルチターン(スレッド)
⬜️ まずトレースレベル(フルターン)の評価から始め、必要に応じてランレベルとスレッドレベルを段階的に追加する
データセット構築
⬜️ すべてのタスクを曖昧さのないものとし、解決可能であることを証明する参照ソリューションを用意すること
⬜️ 肯定的なケース(行動が発生すべき場合)と否定的なケース(行動が発生すべきでない場合)の両方をテストすること
⬜️ データセット構造が選択した評価レベルに合致していることを確認すること
⬜️ エージェントの種類(コーディング、対話型、リサーチ用など)に合わせてデータセットをカスタマイズすること
⬜️ 本番環境のデータがない場合はシード例を生成すること
⬜️ ドッグフーディングでのエラー、適応された外部ベンチマーク、手書きの動作テストからデータを収集すること
⬜️ 継続的な改善のために、トレースとデータセットをつなぐフライホイール(循環プロセス)を構築すること
グレーダー設計
⬜️ 評価次元ごとに専門的なグレーダーを選択する:客観的チェックにはコードベースをデフォルトとし、主観的評価には LLM-as-judge(LLM を判事として用いる手法)、曖昧なケースには人間、バージョン比較にはペアワイズ方式を使用すること
⬜️ ガイドライン(インライン型、ランタイム型)と評価者(非同期処理、品質評価用)を明確に区別すること
⬜️ 数値スケールよりもバイナリの合格/不合格を採用すること
⬜️ LLM-as-a-Judge グレーダーを人間の嗜好に合わせてキャリブレーションすること
⬜️ 正確な実行パスではなく結果に対して採点し、段階的な進捗に対する部分的な加点を組み込むこと
⬜️ 汎用的な市販指標ではなく、エラー分析から導き出されたカスタム評価器を使用すること
実行と反復
⬜️ オフライン、オンライン、アドホックの評価を区別し、これらすべてを活用すること
⬜️ 非決定性を考慮するため、タスクごとに複数回の試行を実行すること
⬜️ 失敗した評価のトレースを手動でレビューし、グレーダーの公平性を検証すること
⬜️ 各試行が共有状態のないクリーンで隔離された環境で実行されることを確認する
⬜️ 評価を機能カテゴリ別にタグ付けし、各評価が何を測定しているかを文書化するとともに、効率性指標(ステップ数、ツール呼び出し回数、レイテンシ)も品質指標と共に追跡する
⬜️ 合格率が頭打ちになるタイミングを見極め、それに応じてテストスイートを進化させる
⬜️ 本番環境で重要視する動作を直接測定する評価のみを残す
⬜️ プロンプト最適化だけでなく、ツールのインターフェース設計とテストにも投資する
⬜️ タスクの失敗(エージェントが誤った)と評価の失敗(採点者が誤った)を区別する
本番環境への準備完了
⬜️ 一貫して高い合格率を示す機能評価を回帰テストスイートへ昇格させる
⬜️ 回帰評価を CI/CD パイプラインに統合し、自動化された品質ゲートを設ける
⬜️ ユーザーフィードバックを収集する
⬜️ 本番トラフィックに対して オンライン評価 を設定する
⬜️ 自動化されたチェックを超えて、定期的に本番環境のトレースを手動で探索するスケジュールを組む
⬜️ コードと共にプロンプトとツールの定義もバージョン管理する
⬜️ 本番環境での失敗が、データセット、エラー分析、評価改善へとフィードバックされることを確保する
関連コンテンツ
image.png)
エージェントアーキテクチャ
LangSmith
オープンソース
LangSmith と LangChain OSS が EU AI 法要件の達成をどのように支援するか


J. タルボット、
B. ウェン
2026 年 4 月 27 日
7 分
image.png)
事例研究
LangSmith
信用生成(Credit Genie)がインサイトエージェント(Insights Agent)を活用して AI 金融アシスタントを改善した方法




D. リー、
J. ンガイ、
G. ロサノ・パリオ、
C. ユアン
2026 年 4 月 20 日
5 分

観測可能性(Observability)と評価(Evals)
LangSmith
LangSmith における再利用可能な評価器(Evaluator)と評価テンプレート


C. Qiao,
J. Talbot
2026 年 4 月 16 日
4 分
S
e
e
w
h
a
t
y
o
u
r
a
g
e
n
t
i
s
</d
原文を表示
*By Victor Moreira, Deployed Engineer @ LangChain*
This checklist is a practical companion to "Agent Observability Powers Agent Evaluation", which covers *why* agent evaluation is different from traditional software testing, introduces the core observability primitives (runs, traces, threads), and explains how they map to evaluation levels. Read that post first if you're new to agent evaluation.
This post focuses on the *how,* a step-by-step checklist for building, running, and shipping agent evals.
Start with the simplest eval that gives you signal. A few end-to-end evals that test whether your agent completes its core tasks will give you a baseline immediately, even if your architecture is still changing. Only add complexity when you have evidence that simpler approaches are missing real failures.
🤔
Don't care for the deep dive?
**Skip to
**
Before you build evals
0:00 /0:421×
Use LangSmith to go from traces to the annotation queue to datasets & experiments
☑️ Manually review 20-50 real agent traces before building any eval infrastructure
☑️ Define unambiguous success criteria for a single task
☑️ Separate capability evals from regression evals
☑️ Ensure you can identify and articulate why each failure occurs
☑️ Assign eval ownership to a single domain expert
☑️ Rule out infrastructure and data pipeline issues before blaming the agent
Deep dive
Manually review 20-50 real agent traces before building any eval infrastructure
Use LangSmith to go from traces to the annotation queue to datasets & experiments.
Before building any infrastructure, spend 30 minutes reading through real agent traces. You'll learn more about failure patterns from this than from any automated system. LangSmith's traces and annotation queues are excellent for this.
Define unambiguous success criteria for a single task
If two experts can't agree on pass/fail, the task needs refinement:
- Unclear success: “Summarize this document well.”
- Clear success: “Extract the 3 main action items from this meeting transcript. Each should be < 20 words and include an owner if mentioned.”
Separate capability evals from regression evals
You need both because they serve different purposes. Capability evals push your agent forward by measuring progress on hard tasks, while regression evals protect what already works. Without the separation, you'll either stop improving because you're only guarding existing behavior, or you'll ship regressions because you're only chasing new capabilities.
- Capability evals answer “what can it do?”Start with a low pass rate and give you a hill to climb.
- Regression evals answer “does it still work?”Should have ~100% pass rate and catch backsliding.
Ensure you can identify and articulate why each failure occurs
If you can't articulate why something failed, you need more error analysis before building automated evals. This is where you should spend 60-80% of your eval effort. Follow this process:
- Gather traces: Collect representative failures from production or testing
- Open coding: Review traces with a domain expert, noting every issue you see without pre-categorizing (or use our annotation queue to have subject matter experts review traces on their own)
- Categorize: Group issues into a failure taxonomy (prompt problems, tool design problems, model limitations, tool failures, data gaps, etc.)
- Iterate: Keep reviewing until you stop discovering new failure categories
Once you've categorized, the fix depends on the root cause:
- Prompt problem: The agent misunderstood because your instructions were unclear → fix the prompt
- Tool design problem: The tool interface made it easy for the agent to make mistakes → redesign parameters, add examples, clarify boundaries
- Model limitation: Instructions were clear but the LLM doesn't generalize to edge cases → add examples, try a different architecture, or use a different model
- Don't know yet: You haven't looked at enough failures to see the pattern → do more error analysis first
Assign eval ownership to a single domain expert
Someone needs to own the eval process: maintaining datasets, recalibrating judges, triaging new failure modes, and deciding what “good enough” means. Ideally one domain expert acts as the quality arbiter for ambiguous cases rather than designing by committee.
Rule out infrastructure and data pipeline issues before blaming the agent
The Witan Labs team found that a single extraction bug moved their benchmark from 50% to 73%. Infrastructure issues (timeouts, malformed API responses, stale caches) frequently masquerade as reasoning failures. Check the data pipeline first.
Choose your evaluation level
Not all evals test the same thing. Match your evaluation to the right level of agent behavior. For a deep dive on each level, see "Agent Observability Powers Agent Evaluation".
Single-step vs. Full-turn vs. Multi-turn evals
☑️ Understand the three evaluation levels: single-step (run), full-turn (trace), and multi-turn (thread)
☑️ Start with trace-level (full-turn) evals, then layer in run-level and thread-level as needed
Deep dive
Single-step evals
These answer: “Did the agent choose the right tool?” “Did it generate a valid API call?” They're the easiest to automate but require stable agent architecture; if you're still changing your tool definitions, run-level evals may break.
Full-turn evals
This is where most teams should start. Grade a full trace across three dimensions:
- Final response: Is the output correct and useful?
- Trajectory: Did the agent take a reasonable path? (Not necessarily the exact path you expected, just a valid one)
- State changes: Did the agent create the right artifacts? (files written, database updated, meeting scheduled, etc.)
State change evaluation is often overlooked but critical for agents that *do* things, not just *say* things. For example, if your agent schedules meetings, don't just check that it said “Meeting scheduled!” Verify the calendar event actually exists with the right time, attendees, and description. If it writes code, run the code. If it updates a database, query the rows. The final response can say “Done!” while the actual state is wrong.
Multi-turn evals
The hardest level to implement, layer them in after your trace-level evals are solid.
💡
Practical tip: Use N-1 testing. Take real conversation prefixes from production (the first N-1 turns) and let the agent generate only the final turn. This avoids the compounding error problem of fully synthetic multi-turn simulations.
Start with trace-level (full-turn) evals, then layer in run-level and thread-level as needed
Trace-level gives you the most signal per eval. Run-level is useful for debugging specific steps. Thread-level matters when your agent has multi-turn conversations.
Dataset construction

☑️ Ensure every task is unambiguous, with a reference solution that proves it's solvable
☑️ Test both positive cases (behavior should occur) and negative cases (behavior should not occur)
☑️ Ensure dataset structure matches your chosen evaluation level
☑️ Tailor datasets to your agent type (coding, conversational, research)
☑️ Generate seed examples if you lack production data
☑️ Source from dogfooding errors, adapted external benchmarks, and hand-written behavior tests
☑️ Set up a trace-to-dataset flywheel for continuous improvement
Deep dive
Ensure every task is unambiguous, with a reference solution that proves it's solvable
- Ambiguous: “Find me good flights to NYC.”
- Unambiguous: “Find roundtrip flights from SFO to JFK, departing Dec 15-17, returning Dec 22, under $400, economy class.”
If the agent can't possibly succeed (missing info, impossible constraints), the task is broken, not the agent. Include a reference solution for every task so you can prove it's solvable and have a baseline to grade against.
Test both positive cases (behavior should occur) and negative cases (behavior should not occur)
If you only test “did it search when it should?”, you'll optimize for an agent that searches everything. Test the negative cases too. Include examples designed to falsify your assumptions, not just confirm expected behavior.
Ensure dataset structure matches your chosen evaluation level
- Run-level (single-step) evals need reference tool calls or decisions
- Trace-level (full-turn) evals need expected final outputs and/or state changes
- Thread-level (multi-turn) evals need multi-turn conversation sequences with expected context retention
Tailor datasets to your agent type (coding, conversational, research)
- Coding agents: Include deterministic test suites (unit tests that pass/fail) alongside quality rubrics
- Conversational agents: Include multi-dimensional criteria, task completion and interaction quality (empathy, clarity)
- Research agents: Include groundedness checks (are claims supported by sources?) and coverage checks (are key facts included?)
Generate seed examples if you lack production data
Define the key dimensions of variation for your task (query complexity, topic, edge case type). Manually create ~20 example inputs covering those dimensions, run them through your existing agent, review and modify them to store as reliable ground truths.
💡
Practical tip: 20-50 hand-reviewed examples you're confident in will outperform hundreds of synthetic examples you haven't verified. Quality beats quantity here!
Source from dogfooding errors, adapted external benchmarks, and hand-written behavior tests
Once you're past the cold start, you need an ongoing pipeline for discovering new evals. Three strategies work well together:
- Dogfood your agent daily and turn every error into an eval. This is different from production monitoring; it's your team intentionally stress-testing the agent across real workflows.
- Pull and adapt tasks from external benchmarks like Terminal Bench or BFCL. Don't run full benchmarks in aggregate; cherry-pick tasks that test capabilities you care about and adapt them for your agent.
- Write focused tests by hand for specific behaviors you think are important, like “does the agent parallelize tool calls?” or “does it ask clarifying questions for vague requests?”
See “How we build evals for Deep Agents” for a concrete example of this approach.
Grader design

☑️ Select specialized graders per evaluation dimension: default to code-based for objective checks, LLM-as-judge for subjective assessments, human for ambiguous cases, and pairwise for version comparison
☑️ Distinguish guardrails (inline, runtime) from evaluators (async, quality assessment)
☑️ Prefer binary pass/fail over numeric scales
☑️ Calibrate LLM-as-a-Judge graders to human preferences
☑️ Grade the outcome, not the exact path, and build in partial credit for incremental progress
☑️ Use custom evaluators derived from your error analysis, not generic off-the-shelf metrics
Deep dive
Select specialized graders per evaluation dimension
Guardrails
Evaluators
When
During execution, before user sees output
After generation, asynchronously
Speed
Milliseconds (must be fast)
Seconds to minutes (can be expensive)
Purpose
Block dangerous or malformed outputs
Measure quality and catch regressions
Examples
PII detection, format validation, safety filters
LLM-as-judge scoring, trajectory analysis
Default to code-based evaluators when there's an objectively correct answer. LLM-as-judge grading for objective tasks can be unreliable, inconsistent judgments can mask real regressions. Switching to deterministic comparison can often eliminate inconsistency and provide better signal. Reserve LLM-as-judge for genuinely subjective assessments.
💡
Practical Tip: Rather than trying to create a *correctness* evaluator, decompose evaluation into specialized graders per dimension rather than one monolithic grader.For example: the Witan Labs team built 5 specialized evaluators (content accuracy, structure, visual formatting, formula scenarios, text quality), each with dimension-appropriate thresholds. This gives you clearer signal about what's actually failing!
Distinguish guardrails from evaluators
-judge scoring, trajectory analysis
Grader Type
Best For
Watch Out For
Code-based
Deterministic checks, tool call verification, output format, execution results
Can false-fail on valid but unexpected formats
LLM-as-judge
Nuanced quality, rubric-based scoring, open-ended tasks
Requires calibration with humans (see Align Evals)
Human
Calibration, subjective criteria, edge cases
Expensive, slow, hard to scale
Safety checks and format validation are guardrails, they should run inline. Quality assessment and regression testing are evaluators, they run async. Don't confuse the two.
Prefer binary pass/fail over numeric scales
A 1-5 scale introduces subjective differences between adjacent scores and requires larger sample sizes for statistical significance. Binary forces clearer thinking: either the agent succeeded or it didn't. You can always decompose a complex task into multiple binary checks.
Note: recent research suggests short scales (0-5) may yield stronger human-LLM alignment when using LLM-as-judge specifically, but binary remains simpler for human reviewers and faster iteration.
Calibrate LLM-as-a-Judge graders to human preferences
- Start with 20+ labeled examples using LangSmith's Align Evaluator feature, then grow toward ~100 for production-grade confidence
- Include reasoning in the judge's output; this improves accuracy and lets you audit why it scored something (Anthropic's Demystifying Evals emphasizes this as well)
- Recalibrate regularly; judges drift over time and no single judge is uniformly reliable across all benchmarks
- Use few-shot examples to improve evaluator consistency; corrections can auto-populate as few-shot examples in LangSmith
Grade the outcome, not the exact path, and build in partial credit for incremental progress
Agents find creative solutions. As Anthropic puts it in Demystifying Evals: “Don't grade the path the agent took, grade what it produced.” If you require “must call tool A → B → C in that order,” you'll fail agents that found a smarter route. *Better:* “Did the meeting get scheduled correctly?” not “Did it call check_availability before create_event?”
An agent that correctly identifies the problem but fails at the final step is better than one that fails immediately. Build in partial credit so your metrics reflect incremental progress.
Use custom evaluators derived from your error analysis, not generic off-the-shelf metrics
Off-the-shelf metrics like “helpfulness” or “coherence” create false confidence. The evaluators that matter are the ones that catch *your* specific failure modes, discovered through the error analysis process above.
Running & iterating

☑️ Distinguish between offline, online, and ad-hoc evaluation and use all three
☑️ Run multiple trials per task to account for non-determinism
☑️ Manually review traces for failed evaluations to verify grader fairness
☑️ Ensure each trial runs in a clean, isolated environment with no shared state
☑️ Tag evals by capability category, document what each measures, and track efficiency metrics (step count, tool calls, latency) alongside quality
☑️ Recognize when pass rates plateau and evolve your test suite accordingly
☑️ Only keep evals that directly measure a production behavior you care about
☑️ Invest in tool interface design and testing, not just prompt optimization
☑️ Distinguish between task failures (agent got it wrong) and evaluation failures (grader got it wrong)
Deep dive
Distinguish between offline, online, and ad-hoc evaluation and use all three
Most of this checklist focuses on offline evaluation, and that's intentional. Offline evals are where you improve with: curated datasets, controlled experiments, iterating before you ship. You'll also need online and ad-hoc evaluation once your agent hits production.
Timing
What It Is
When to Use
Offline
Curated datasets, run pre-deployment
Testing changes before they ship
Online
Continuous evaluation on production traces
Catching failures in real traffic
Ad-hoc
Exploratory analysis of ingested traces
Discovering patterns you didn't anticipate (see Insights)
**The Production readiness section below covers setting up online evaluations and scheduling ad-hoc trace exploration in detail.
Run multiple trials per task to account for non-determinism
Model outputs vary between runs. Use multiple repetitions if not cost prohibitive. When running multiple trials, compute confidence intervals before declaring improvement—single-run benchmarks are noisy. For non-deterministic agents, consider using pass@k (at least one of k attempts succeeds) or pass^k (all k attempts succeed) metrics depending on your product requirements.
Track operational metrics alongside quality: turns taken, token usage, latency, cost per task. An agent that's 95% accurate but 10x slower might not be an improvement.
Tag evals by capability category, document what each measures, and track efficiency metrics alongside quality
Group evals by what they test, not where they come from. Categories like file_operations, retrieval, tool_use, memory, and conversation give you a “middle view” of performance between a single aggregate score and individual test results. Add a docstring to each eval explaining how it measures an agent capability. This keeps intent clear as the suite grows and lets you run targeted subsets (e.g., only tool_use evals after changing a tool definition).
Attach metadata to every experiment so you can filter, group, and compare runs across dimensions that matter. This makes it easy to answer questions like “did switching from GPT-4.1 to Claude Sonnet improve accuracy?” or “which prompt version regressed on this dataset?” without digging through logs. LangSmith automatically captures git info when available, but explicitly tagging model and prompt metadata pays off quickly as your experiment volume grows.
Once quality is established, compare models on efficiency. An agent that's 95% accurate but 10x slower might not be an improvement. Track ratios like observed steps / ideal steps, observed tool calls / ideal tool calls, and observed latency / ideal latency. This doesn't conflict with “grade the outcome, not the exact path”: ideal trajectories measure efficiency, not correctness. You still pass an agent that found a creative route, but you can see if it took longer to get there. See the metrics framework in How we build evals for Deep Agents for a worked example.
Manually review traces for failed evaluations to verify grader fairness
A “failed” task might actually be a creative valid solution your grader didn't anticipate. Reading traces is how you know if your graders are being fair.
Recognize when pass rates plateau and evolve your test suite accordingly
When your pass rate plateaus and adding more tasks of the same type stops revealing new failure modes, it's time to evolve: add harder tasks, test new capabilities, or shift to different dimensions. Grinding on a saturated eval set wastes effort.
Only keep evals that directly measure a production behavior you care about
Every eval applies pressure on your system over time. It's tempting to blindly add hundreds of tests, but this creates an illusion of progress. You end up optimizing for an eval suite that doesn't reflect what matters in production. More evals does not equal better agents. Build targeted evals, and periodically prune the ones that no longer give you signal. For a concrete example of this approach, see How we build evals for Deep Agents.
Invest in tool interface design and testing, not just prompt optimization
Tool design eliminates entire classes of agent errors. Anthropic's team noted they spent more time optimizing tools than prompts when building their SWE-bench agent. Test how the model actually uses your tools: try different parameter formats (diffs vs full rewrites, JSON vs. markdown), redesign interfaces to make mistakes harder, and invest in clear documentation with examples. The goal is to make mistakes structurally impossible, not just unlikely. For example, requiring absolute file paths eliminates an entire class of navigation errors.
Distinguish between task failures (agent got it wrong) and evaluation failures (grader got it wrong)
Track run status explicitly (complete, error, timeout). A grader that marks a timeout as “incorrect reasoning” pollutes your signal. Separate task failures from evaluation failures to keep your metrics clean.
Production readiness

☑️ Promote capability evals with consistently high pass rates into your regression suite**
☑️ Integrate regression evals into your CI/CD pipeline with automated quality gates
☑️ Capture user feedback
☑️ Set up online evaluations for production traffic
☑️ Schedule regular manual exploration of production traces beyond automated checks
☑️ Version your prompts and tool definitions alongside your code
☑️ Ensure production failures feed back into datasets, error analysis, and eval improvements
Deep dive
Integrate regression evals into your CI/CD pipeline with automated quality gates
A typical flow:
- Code or prompt change triggers the pipeline (via git push, PromptHub update, or manual trigger)
- Offline evals run unit tests, integration tests, and evaluation against curated datasets using cheap, fast graders
- Preview deployment goes up if offline evals pass
- Online evals run against the preview with live data using LLM-as-judge graders
- Promote to production only if all quality gates pass, otherwise route failing traces to annotation queues and alert the team
Use cheap code-based graders in CI for every commit. Reserve expensive LLM-as-judge evaluations for preview/production evaluation. See LangSmith's CI/CD pipeline guide for a full implementation example with GitHub Actions.
Capture user feedback
Once your agent is in production, user feedback becomes one of your most valuable signals. Automated evals can only catch the failure modes you already know about. Users will surface the ones you don't: edge cases your dataset missed, outputs that are technically correct but unhelpful, and workflows that break in ways you never anticipated.
Capturing this feedback in a structured way lets you feed it back into your datasets, calibrate your graders against real-world expectations, and prioritize the improvements that actually matter to the people using your agent.
Schedule regular manual exploration of production traces beyond automated checks
Don't rely solely on automated pass/fail. Periodically explore production traces for unexpected patterns or failure modes your graders don't cover, surprising user behaviors, or opportunities to improve. Our Insights Agent is a great way to do this!
Version your prompts and tool definitions
LangSmith makes it easy to version your prompts. Without this, you can't correlate eval results with specific changes or know which edit caused a regression.
Ensure production failures feed back into datasets, error analysis, and eval improvements

Production successes and failures should feed back into your datasets, error analysis, and eval improvements. This is the flywheel that makes your agent better over time!
You don't need all of these items on day one. Pick the section that matches where you are right now, nail those items, and expand from there. The teams that ship reliable agents aren't the ones with the most sophisticated eval infrastructure - they're the ones who started evaluating early and never stopped iterating.
The full checklist
Before you build evals
⬜️ Manually review 20-50 real agent traces before building any eval infrastructure
⬜️ Define unambiguous success criteria for a single task
⬜️ Separate capability evals from regression evals
⬜️ Ensure you can identify and articulate why each failure occurs
⬜️ Assign eval ownership to a single domain expert
⬜️ Rule out infrastructure and data pipeline issues before blaming the agent
Choose your evaluation level
⬜️ Understand the three evaluation levels: single-step (run), full-turn (trace), and multi-turn (thread)
⬜️ Start with trace-level (full-turn) evals, then layer in run-level and thread-level as needed
Dataset construction
⬜️ Ensure every task is unambiguous, with a reference solution that proves it's solvable
⬜️ Test both positive cases (behavior should occur) and negative cases (behavior should not occur)
⬜️ Ensure dataset structure matches your chosen evaluation level
⬜️ Tailor datasets to your agent type (coding, conversational, research)
⬜️ Generate seed examples if you lack production data
⬜️ Source from dogfooding errors, adapted external benchmarks, and hand-written behavior tests
⬜️ Set up a trace-to-dataset flywheel for continuous improvement
Grader design
⬜️ Select specialized graders per evaluation dimension: default to code-based for objective checks, LLM-as-judge for subjective assessments, human for ambiguous cases, and pairwise for version comparison
⬜️ Distinguish guardrails (inline, runtime) from evaluators (async, quality assessment)
⬜️ Prefer binary pass/fail over numeric scales
⬜️ Calibrate LLM-as-a-Judge graders to human preferences
⬜️ Grade the outcome, not the exact path, and build in partial credit for incremental progress
⬜️ Use custom evaluators derived from your error analysis, not generic off-the-shelf metrics
Running & iterating
⬜️ Distinguish between offline, online, and ad-hoc evaluation and use all three
⬜️ Run multiple trials per task to account for non-determinism
⬜️ Manually review traces for failed evaluations to verify grader fairness
⬜️ Ensure each trial runs in a clean, isolated environment with no shared state
⬜️ Tag evals by capability category, document what each measures, and track efficiency metrics (step count, tool calls, latency) alongside quality
⬜️ Recognize when pass rates plateau and evolve your test suite accordingly
⬜️ Only keep evals that directly measure a production behavior you care about
⬜️ Invest in tool interface design and testing, not just prompt optimization
⬜️ Distinguish between task failures (agent got it wrong) and evaluation failures (grader got it wrong)
Production readiness
⬜️ Promote capability evals with consistently high pass rates into your regression suite
⬜️ Integrate regression evals into your CI/CD pipeline with automated quality gates
⬜️ Capture user feedback
⬜️ Set up online evaluations for production traffic
⬜️ Schedule regular manual exploration of production traces beyond automated checks
⬜️ Version your prompts and tool definitions alongside your code
⬜️ Ensure production failures feed back into datasets, error analysis, and eval improvements
Related content
.png)
Agent Architecture
LangSmith
Open Source
How LangSmith and LangChain OSS Help You Meet EU AI Act Requirements


J. Talbot,
B. Weng
April 27, 2026
7
min
.png)
Case Studies
LangSmith
How Credit Genie used Insights Agent to improve their AI financial assistant




D. Li,
J. Ngai,
G. Lozano Palacio,
C. Yuan
April 20, 2026
5
min

Observability & Evals
LangSmith
Reusable Evaluators and Evaluator Templates in LangSmith


C. Qiao,
J. Talbot
April 16, 2026
4
min
S
e
e
w
h
a
t
y
o
u
r
a
g
e
n
t
i
s
関連記事
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み