ディープエージェントの評価指標の構築方法
LangChain は、エージェントの振る舞いを定義し改善するために、単なるテスト数の増加ではなく、本番環境で重要な行動に焦点を当てた標的型評価(evals)の設計と運用手法を詳述している。
キーポイント
評価がエージェントの振る舞いを形成する
各評価はシステム全体の振る舞いを変えるベクトルとして機能し、不適切な評価を追加すると本番環境での実際の行動を反映しない「改善の錯覚」を生むリスクがある。
標的型評価の設計原則
本番環境で必要な具体的な行動(例:複数ファイルからの情報取得、5 つ以上のツール呼び出しの正確な実行など)を特定し、それらを測定可能な形で検証する評価を構築すべきである。
自己文書化とタグ付けの重要性
各評価にはその能力をどのように測定するかを説明するドキュストリングを追加し、カテゴリでタグ付けすることで、評価セットの透明性と保守性を高めるアプローチを採用している。
重要な引用
Evals define and shape agent behavior, which is why it's so important to design them thoughtfully.
More evals ≠ better agents. Instead, build targeted evals that reflect desired behaviors in production.
Every eval you keep applies pressure on the overall system over time.
影響分析・編集コメントを表示
影響分析
この記事は、LLM エージェント開発における評価(evals)の質的転換を促す重要な示唆を与えています。単にテストケースを増やすのではなく、本番環境での具体的なユースケースに基づいた「行動定義」こそがシステムの信頼性を高めるという、実務家にとって即座に適用可能なフレームワークを提供しています。これにより、開発チームは評価スイートの管理コストを削減しつつ、より効果的なエージェントの改善サイクルを構築できるようになります。
編集コメント
エージェント開発において「何を作るか」以上に「どう評価するか」がシステムの成否を分けるという、非常に本質的な指摘が含まれています。評価設計の戦略を見直す絶好の機会となる記事です。
主要なポイント
💡 TLDR: 最適なエージェント評価(evals)は、私たちが重視するエージェントの振る舞いを直接測定するものです。ここでは、データをどのように収集し、指標を作成し、時間とともに正確で信頼性の高いエージェントを実現するために、適切にスコープを設定したターゲット型の実験をどのように実行するかについて説明します。
評価はエージェントの振る舞いを形作る
私たちは、Deep Agents の測定と改善を目的とした評価のキュレーションを行ってきました。Deep Agents は、Fleet や Open SWE などの製品を動かす、オープンソースでモデル非依存のエージェントハーンです。評価はエージェントの振る舞いを定義し形作るものであり、そのため慎重に設計することが非常に重要です。
すべての評価は、エージェントシステムの振る舞いをシフトさせるベクトルです。例えば、効率的なファイル読み取りに関する評価が失敗した場合、システムプロンプトや read_file ツールの説明を調整して、その振る舞いが合格するまで微調整することになるでしょう。あなたが維持しているすべての評価は、時間とともに全体システムに圧力をかけます。
評価を追加する際は慎重であることが不可欠です。何百(あるいは数千)ものテストを無批判に追加したくなるかもしれません。しかし、それは、本番環境で私たちが重視する振る舞いを正確に反映していない可能性のある評価スイートで高いスコアを得ることによって「エージェントを改善している」という錯覚を生み出します。
評価セットを増やすこと=エージェントの品質向上ではない。むしろ、本番環境での望ましい動作を反映した、焦点を絞った評価セットを作成すべきです。
Deep Agents を構築する際、私たちは本番環境で重要な動作(例えば、ファイルシステム内の複数のファイルにわたるコンテンツの取得や、5 つ以上のツール呼び出しを正確に連続して実行することなど)をカタログ化します。ベンチマークタスクを集計して使用するのではなく、以下のアプローチで評価セットの選定を行います。
- エージェントに従わせたい動作を決定します。その後、それらの動作を検証可能な方法で測定する焦点を絞った評価セットを調査・選定します。
- 各評価について、エージェントの能力をどのように測定しているかを説明するドキュメントストリング(docstring)を追加します。これにより、各評価が自己文書化されることを保証します。また、「tool_use」などのカテゴリで各評価にタグ付けし、グループ化された実行を可能にします。
- 出力トレースを確認して失敗モードを理解し、評価のカバレッジを更新します。
すべての評価実行を共有の LangSmith プロジェクトにトレースしているため、チームの誰でも問題の分析、修正の実行、特定の評価の価値の見直しを行うことができます。これにより、良質な評価セットの追加と維持に対する共通責任が生まれます。多くのモデルを多数の評価で実行するとコストがかかるため、焦点を絞った評価はエージェントの品質を向上させながら費用を抑えることができます。
このブログ記事では、以下のトピックを取り上げます:
- データの選定方法
- メトリックの定義方法
- 評価の実行方法
データの選定方法
評価セットの出所には、いくつかの方法があります:
- エージェントの社内利用(dogfooding)からのフィードバックを活用する
- Terminal Bench 2.0 や BFCL といった外部ベンチマークから特定の評価指標(evals)を抽出し、しばしば特定のエージェント向けにカスタマイズする
- 私たちにとって重要な振る舞いについては、独自の(職人的な)評価指標やユニットテストを手書きで作成する

私たちは毎日、自社製品としてエージェントを活用しています。発生したすべてのエラーは、評価指標を作成し、エージェントの定義およびコンテキストエンジニアリング(context engineering)のプラクティスを更新する機会となります。💡
注記: SDK のユニットテストおよびインテグレーションテスト(システムプロンプトの渡しの確認、インターラプト設定、サブエージェントルーティングなど)は、モデルの能力評価(model capability evals)とは分離しています。これらのテストを通過するのはどのモデルでも同様であるため、スコアリングに含めても有意な信号(signal)は得られません。ユニットテストやインテグレーションテストを記述することはもちろん重要ですが、本ブログではモデルの能力評価に焦点を当てています。
エージェントのドッグフーディング(社内利用)とトレースの読み取りは、優れた評価データ(evals)の源となります
これによりミスの発見が可能になります。トレースは、エージェントの動作を理解するためのデータを提供します。トレースはしばしば大容量になるため、PollyやInsightsといった組み込みエージェントを使用して、大規模に分析を行います。他のエージェント(例:Claude CodeやDeep Agents CLI)と、LangSmith CLIのようなトレースの取得手段を組み合わせれば、同様のことが可能です。私たちの目標は、各失敗モード(failure mode)を理解し、修正策を提案し、エージェントを再実行し、時間経過に伴う進捗や回帰(regression)を追跡することです。
例えば、バグ修正のPR(プルリクエスト)の大部分は、オープンソースのバックグラウンドコーディングエージェントであるOpen SWEを通じて処理されるようになりました。これを使用するチームは、異なるコンテキスト、規約、目標を持つ多くの異なるコードベースに触れます。これは自然にミスにつながります。Open SWEとのすべてのやり取りはトレースされるため、これらのトレースを評価データとして容易に利用でき、同じミスが再発しないように確認できます。
他の評価指標は、関数呼び出しのための既存のベンチマーク(BFCL など)から抽出・調整されています。コーディングタスクについては、Harbor と連携し、Terminal Bench 2.0 などのデータセットから選択されたタスクをサンドボックス環境で実行します。多くの評価指標はゼロから作成され、read_file ツールのような特定の動作を個別に観察するための焦点を絞ったテストとして機能します。
評価指標はテスト内容を基準にグループ化する
エージェントのパフォーマンスを中立的な視点で把握するため(単一の数値や個々の実行結果ではなく)には、評価指標の分類体系を持つと役立ちます。
💡
ヒント: 評価指標の分類体系は、その出所ではなく「何をテストしているか」に基づいて作成してください。
例えば、FRAMES や BFCL からのタスクを「外部ベンチマーク」とタグ付けしても、それぞれが検索(retrieval)やツール使用をどのように測定しているかは示されません。
以下は、私たちが定義するカテゴリと、それらがテストする内容です:
カテゴリ
テスト内容
file_operations
ファイル関連ツール(read, write, edit, ls, grep, glob)、並列呼び出し、ページネーション
retrieval
ファイル間での情報検索、検索戦略、マルチホップドキュメントの合成
ツール使用
適切なツールの選択、複数ステップの呼び出しチェーン、ターンを跨ぐ状態の追跡
メモリ
シードされたコンテキストの呼び出し、暗黙的な嗜好の抽出、永続情報の保持
会話
曖昧なリクエストに対する明確化質問の投げかけ、正しいアクションを伴う複数ターン対話の維持
要約
コンテキストオーバーフローへの対応、要約トリガーの発動、圧縮後の情報回復
ユニットテスト
SDKの基盤実装 - システムプロンプトのパススルー、インターラプト設定、サブエージェントルーティング、スキルパス解決などがすべて正常に動作するか?
現在、すべての評価(evals)はタスクに対するエージェントのエンドツーエンドの実行です。私たちは評価の構造に意図的に多様性を持たせるよう促しています。入力プロンプトから単一ステップで完了するタスクもあれば、別のモデルがユーザーをシミュレートして10ターン以上かかるものもあります。
指標の定義方法
エージェント用のモデルを選択する際、私たちは正しさ(correctness)から始めます。もしモデルが私たちが重視するタスクを確実に完了できないなら、他の要素は何の意味も持ちません。私たちは評価(evals)で複数のモデルを実行し、発見された課題に対応するため、ハネス(harness)を時間とともに洗練させています。
正しさを測定する方法は、テスト対象によって異なります。内部評価の多くは、「エージェントがツール呼び出しを並列化したか?」といったカスタムアサーションを使用しています。BFCLのような外部ベンチマークでは、データセットの正解と完全一致で評価を行います。エージェントがメモリに正しい情報を保持したかどうかといった、意味的な正しさを問う評価には、LLM-as-a-judge(LLMを審判とする手法)を採用しています。
複数のモデルがその基準を満たすと、次に効率性を評価します。同じタスクを解決するモデルでも、実際には非常に異なる挙動を示すことがあります。モデルのサイズが大きいため、追加のターン数がかかったり、不要なツール呼び出しを行ったり、タスク進行が遅くなることがあります。本番環境では、これらの違いがレイテンシの増加、コストの上昇、そして全体的なユーザー体験の低下として現れます。
各評価者(evaluator)の実行で測定する指標は以下の通りです:
| 指標 | 定義 |
|---|---|
| 正しさ(Correctness) | モデルがタスクを正しく完了したかどうか |
| ステップ比(Step ratio) | 観測されたエージェントのステップ数 / 理想的なエージェントのステップ数 |
| ツール呼び出し比(Tool call ratio) | 観測されたツール呼び出し数 / 理想的なツール呼び出し数 |
| レイテンシ比(Latency ratio) | 観測されたレイテンシ / 理想的なレイテンシ |
| 解決率(Solve rate) | 期待されるステップ数 / 観測されたレイテンシ。タスクが正しく解決されなかった場合はスコア0 |
Solve rate(タスク解決率)は、エージェントがタスクをどのくらい速く完了するかを示す指標で、期待されるステップ数で正規化されています。レイテンシー比と同様に、モデルの往復通信、プロバイダーの応答遅延、間違った選択、ツール実行時間など、タスク完了までのエンドツーエンドの時間を捉えます。理想的な軌道(理想経路)を定義できる単純なタスクの場合、レイテンシー比よりも Solve rate の方が扱いやすい場合があります。なぜなら、Solve rate ではエージェントのタスク所要時間のみを測定すればよいからです。
これにより、特定の評価セットに対してモデルを選択するシンプルな方法が得られます:
- まず正確性を確認します。実際に重視するタスクにおいて、どのモデルが十分な精度を持っているかを確認します。
- 次に効率性を比較します。十分な精度を持つモデルの中で、正確性、レイテンシー、コストの最適なバランスを提供するのはどのモデルかを見極めます。
評価に関連する有用な指標の例
モデル比較を実行可能なものにするためには、モデルがどのように成功し、どのように失敗するかを調査します。これには、正確性を超えて「良好な」実行がどのようなものかを示す具体的な基準点が必要です。私たちが使用する一つの基本要素は、理想的な軌道(ideal trajectory)です。これは、「不要な」アクションを一切含まず、正しい結果を生み出す一連のステップのシーケンスです。
単純で範囲が明確に定義されたタスクでは、変数が十分に限定されているため、最適な経路は通常明らかです。より自由なタスクの場合、これまでのところ最もパフォーマンスの高いモデルを用いて軌道を近似し、モデルやハッチ(harnesses)が改善されるにつれてそのベースラインを再検討します。このように、エージェントの行動を観察することで、理想的な軌道に関する私たちの事前知識を洗練していくことができます。
単純なリクエストを想定してみましょう。
**「今、私が住んでいる場所の現在時刻と天気はどうですか?」
エージェントの理想的な実行軌跡は以下のようになります。
- 必要なツール呼び出しを最小限に抑える(例:ユーザーの特定 → 場所の特定 → 時刻と天気情報の取得)
- 可能な限り独立したツール呼び出しを並列実行する
- 不要な中間ステップを経ずに最終回答を生成する
理想的な軌跡:** 4 ステップ、4 ツール呼び出し、約8秒

次に、技術的には正しいが非効率な実行軌跡と比較してみましょう。
非効率な軌跡: 6 ステップ、5 ツール呼び出し、約14秒。

正しくはあるが非効率な軌跡: エージェントのステップ数6、ツール呼び出し5回。不要なツール呼び出しが含まれており、ツール呼び出しの並列実行が行われていません。
*上記の例は説明用のものです:REPL(対話型シェル)であれば、この特定のタスクをさらに高速に解決できる可能性がありますが、より単純なツール呼び出しのバージョンの方が概念の説明が容易になります。*
両方の実行結果は正解ですが、2番目の実行ではレイテンシとコストが増加し、失敗の機会も増えます。
この枠組みにより、評価(evals)において正解性と効率性の両方を評価することが可能になります。私たちは指標を維持・更新し、実験結果を比較可能な数値に集約しています。
上記の例から、非効率だが正解な実行結果は以下のスコアになります:
| 指標 | 定義 | 例 | 解釈 |
|---|---|---|---|
| 正解性 (Correctness) | モデルがタスクを正しく完了したかどうか | 1 | 実行は成功した |
| ステップ比 (Step ratio) | 観測されたエージェントステップ / 理想的なエージェントステップ | 6 / 4 = 1.5 | 理想より50%多いエージェントステップ;低いほど良い |
| ツール呼び出し比 (Tool call ratio) | 観測されたツール呼び出し / 理想的なツール呼び出し | 5 / 4 = 1.25 | 理想より25%多いツール呼び出し;低いほど良い |
| レイテンシ比 (Latency ratio) | 観測されたレイテンシ / 理想的なレイテンシ | 14 / 8 = 1.75 | 理想より75%遅い;低いほど良い |
| 解決率 (Solve rate) | 期待されるステップ数 / 観測されたレイテンシ(タスクが正しく解決されなかった場合はスコア0) | 4 / 14 = 0.29 秒あたりの期待ステップ数 | 期待される軌道を通る進行速度;高いほど良い |
評価の実行方法
私たちは CI(継続的インテグレーション)環境でクリーンかつ再現性のある状態で評価を実行するため、pytest と GitHub Actions を使用しています。各評価は、指定されたモデルを持つ Deep Agent インスタンスを作成し、タスクを入力して、正解性と効率性の指標を計算します。
コストを節約し、対象とした実験を測定するために、タグを使用して評価(eval)のサブセットを実行することもできます。例えば、ローカルファイルの処理と合成を多く必要とするエージェントを構築する場合、file_operations および tool_use というタグが付いたサブセットに焦点を当てることができます。
export LANGSMITH_API_KEY="lsv2_..."
uv run pytest tests/evals --eval-category file_operations --eval-category tool_use --model baseten:nvidia/zai-org/GLM-5
当社の評価アーキテクチャと実装は、Deep Agents リポジトリ でオープンソースとして公開されています。
次のステップ
私たちは評価スイートを拡大し、オープンソースの LLM(大規模言語モデル)に関するさらなる作業を行っています。近日中に共有したい主な内容は以下の通りです:
- 評価カテゴリ全体における、クローズドなフロンティアモデルに対するオープンモデルの測定結果
- 現実世界でのタスクに対してエージェントをリアルタイムで自動改善するためのメカニズムとしての評価
- 時間経過とともに各エージェントに対して評価をどのように維持、削減、拡張しているかをオープンに共有
Deep Agents は完全にオープンソースです。ぜひお試しくださいご意見をお聞かせください。素晴らしいエージェントと評価の構築を支援できることを楽しみにしています。
関連コンテンツ

概念ガイド
Deep Agents
本番環境向けディープエージェントのランタイム


S. Runkle,
V. Trivedy
2026年4月20日
24分

エージェントアーキテクチャ(Agent Architecture)
ディープエージェント(Deep Agents)
オープンソース(Open Source)
バックグラウンドでサブエージェントを実行する


H. Lovell,
C. Francis
2026年4月16日
4分

観測可能性(Observability)と評価(Evals)
LangSmith
LangSmithにおける再利用可能な評価器と評価テンプレート
4
分
エージェントの実際の動作を確認する
LangSmith(エージェントエンジニアリングプラットフォーム)は、開発者がすべてのエージェントの決定をデバッグし、評価の変更を確認し、ワンクリックでデプロイできるよう支援します。
原文を表示
Key Takeaways
💡 TLDR: The best agent evals directly measure an agent behavior we care about. Here’s how we source data, create metrics, and run well-scoped, targeted experiments over time to make agents more accurate and reliable.
Evals shape agent behavior
We’ve been curating evaluations to measure and improve Deep Agents. Deep Agents is an open source, model agnostic agent harness that powers products like Fleet and Open SWE. Evals define and shape agent behavior, which is why it’s so important to design them thoughtfully.
Every eval is a vector that shifts the behavior of your agentic system. For example, if an eval for efficient file reading fails, you’ll likely tweak the system prompt or the read_file tool description to nudge behavior until it passes. Every eval you keep applies pressure on the overall system over time.
It is crucial to be thoughtful when adding evals. It can be tempting to blindly add hundreds (or thousands) of tests. This leads to an illusion of “improving your agent” by scoring well on an eval suite that may not accurately reflect behaviors you care about in production.
More evals ≠ better agents. Instead, build targeted evals that reflect desired behaviors in production.
When building Deep Agents, we catalog the behaviors that matter in production, such as retrieving content across multiple files in the filesystem or accurately composing 5+ tool calls in sequence. Rather than using benchmark tasks in aggregate, we take the following approach to eval curation:
- Decide which behaviors we want our agent to follow. Then research and curate targeted evals that measure those behaviors in a verifiable way.
- For each eval, add a docstring that explains how it measures an agent capability. This ensures each eval is self-documenting. We also tag each eval with categories like tool_use to enable grouped runs.
- Review output traces to understand failure modes and update eval coverage.
Because we trace every eval run to a shared LangSmith project, anyone on the team can jump in to analyze issues, make fixes, and reassess the value of a given eval. This creates shared responsibility for adding and maintaining good evals. Running many models across many evals can also get expensive, so targeted evals save money while improving your agent.
In this blog we cover:
- How we curate data
- How we define metrics
- How we run the evals
How we curate data
There’s a few ways we source evals:
- Using feedback from dogfooding our agents
- Pulling selected evals from external benchmarks (like Terminal Bench 2.0 or BFCL) and often adapting them for a particular agent
- Writing our own (artisanal) evals and unit tests by hand for behaviors we think are important

💡
Note: We separate SDK unit and integration tests (system prompt passthrough, interrupt config, subagent routing) from model capability evals. Any model passes those tests, so including them in scoring adds no signal. You should absolutely write unit and integration tests, but this blog focuses solely on model capability evals.
Dogfooding agents & reading traces are great sources of evals
This makes finding mistakes possible. Traces give us data to understand agent behavior. Because traces are often large, we use a built-in agent like Polly or Insights to analyze them at scale. You can do the same with other agents (like Claude Code or the Deep Agents CLI) plus a way to pull down traces, like the LangSmith CLI. Our goal is to understand each failure mode, propose a fix, rerun the agent, and track progress and regressions over time.
For example, a large fraction of bug-fix PRs are now driven through Open SWE, our open source background coding agent. Teams using it touch many different codebases with different context, conventions, and goals. This naturally leads to mistakes. Every interaction of Open SWE is traced, so those can easily become evals to make sure the mistake doesn’t happen again.
Other evals are pulled and adjusted from existing benchmarks like BFCL for function calling. For coding tasks, we integrate with Harbor to run selected tasks from datasets like Terminal Bench 2.0 tasks in sandboxed environments. Many evals are written from scratch and act as focused tests to observe isolated behavior, like testing a read_file tool.
We group evals by what they test
It’s helpful to have a taxonomy of evals to get a middle view of how agents perform (not a single number, not individual runs).
💡
Tip: Create that taxonomy by looking at what they test, not where they come from.
For example, tasks from FRAMES and BFCL could be tagged "external benchmarks," but that would not show how they measure retrieval and tool use, respectively.
Here are some categories we define and what they test:
Category
What It Tests
file_operations
File tools (read, write, edit, ls, grep, glob), parallel invocation, pagination
retrieval
Finding information across files, search strategies, multi-hop document synthesis
tool_use
Selecting the right tool, chaining multi-step calls, tracking state across turns
memory
Recalling seeded context, extracting implicit preferences, persisting durable info
conversation
Asking clarifying questions for vague requests, sustaining multi-turn dialogue with correct actions
summarization
Handling context overflow, triggering summarization, recovering info after compaction
unit_tests
SDK plumbing - do our system prompt passthrough, interrupt config, subagent routing, skill path resolution, etc. all work?
Today, all evals are end-to-end runs of an agent on a task. We intentionally encourage diversity in eval structure. Some tasks finish in a single step from an input prompt, while others take 10+ turns with another model simulating a user.
How we define metrics
When choosing a model for our agent, we start with correctness. If a model can’t reliably complete the tasks we care about, nothing else matters. We run multiple models on our evals and refine the harness over time to address the issues we uncover.
Measuring correctness depends on what’s being tested. Most internal evals use custom assertions such as "did the agent parallelize tool calls?". External benchmarks like BFCL use exact matching against ground truth answers from the dataset. For evals where correctness is semantic like whether the agent persisted the correct thing in memory, we use LLM-as-a-judge.
Once several models clear that bar, we move to efficiency. Two models that solve the same task can behave very differently as in practice. One might take extra turns, make unnecessary tool calls, or move through the task more slowly because of model size. In production, those differences show up as higher latency, higher cost, and a worse overall user experience.
All together, the metrics we measure for each evaluator run are:
Metric
Definition
Correctness
Whether the model completed the task correctly
Step ratio
Observed agent steps / ideal agent steps
Tool call ratio
Observed tool calls / ideal tool calls
Latency ratio
Observed latency / ideal latency
Solve rate
Number of expected steps / observed latency, with a score of 0 if the task was not solved correctly
Solve rate measures how quickly an agent solves a task, normalized by the expected number of steps. Like latency ratio, it captures end-to-end time to solve the task, including model round trips, provider latency, wrong turns, and tool execution time. For simple tasks where we can define an ideal trajectory, solve rate can be easier to work with than latency ratio because it only requires measuring the given agent’s task duration.
This gives us a simple way to choose models with a targeted eval set:
- Check correctness first: which models are accurate enough on the tasks you actually care about?
- Then, compare efficiency: among the models that are good enough, which one gives the best tradeoff between correctness, latency, and cost?
Example of useful metrics around evals
To make model comparisons actionable, we examine *how* models succeed and fail. That requires a concrete reference point for what "good" execution looks like beyond accuracy. One primitive we use is an ideal trajectory. This is a sequence of steps that produces a correct outcome with no "unnecessary" actions.
For simple, well-scoped tasks, the variables are defined tightly enough that the optimal path is usually obvious. For more open-ended tasks, we approximate a trajectory using the best-performing model we’ve seen so far, then revisit the baseline as models and harnesses improve. In this way, observing agent behavior helps us refine our priors about ideal trajectories.
Consider a simple request:
"What is the current time and weather where I live?"
An agent’s ideal trajectory might look like this:
- It makes the fewest necessary tool calls (e.g., resolve user → resolve location → fetch time and weather)
- It parallelizes independent tool calls where possible
- It produces the final answer without unnecessary intermediate turns
Ideal trajectory: 4 steps, 4 tool calls, ~8 seconds

Now compare that with a trajectory that is still technically correct, but less efficient.
Inefficient trajectory: 6 steps, 5 tool calls, ~14 seconds.

Correct but inefficient trajectory: 6 agent steps, 5 tool calls, includes an unnecessary tool call, and doesn’t parallelize tool calls.
*The above examples are illustrative: a REPL could solve this particular task even faster, but the simpler tool-calling version makes the idea easier to explain.*
Both runs are correct, but the second run increases latency and cost, and creates more opportunities for failure.
This framing lets us evaluate both correctness and efficiency over evals. We maintain and update metrics to distill the runs into measurable numbers we can use to compare experiments.
From the example above, the inefficient but correct run would score:
Metric
Definition
Example
Interpretation
Correctness
Whether the model completed the task correctly
1
The run succeeded
Step ratio
Observed agent steps / ideal agent steps
6 / 4 = 1.5
50% more agent steps than ideal; lower is better
Tool call ratio
Observed tool calls / ideal tool calls
5 / 4 = 1.25
25% more tool calls than ideal; lower is better
Latency ratio
Observed latency / ideal latency
14 / 8 = 1.75
75% slower than ideal; lower is better
Solve rate
Number of expected steps / observed latency, with a score of 0 if the task was not solved correctly
4 / 14 = 0.29 expected steps per second
Faster progress through the expected trajectory; higher is better
How we run evals
We use pytest with GitHub Actions to run evals in CI so changes run in a clean, reproducible environment. Each eval creates a Deep Agent instance with a given model, feeds it a task, and computes correctness and efficiency metrics.
We can also run a subset of eval using tags save costs and measure targeted experiments. For example, if building an agent that requires a lot of local file processing and synthesis, we may focus on the file_operations and tool_use tagged subsets.
export LANGSMITH_API_KEY="lsv2_..."
uv run pytest tests/evals --eval-category file_operations --eval-category tool_use --model baseten:nvidia/zai-org/GLM-5Our eval architecture and implementation is open sourced in the Deep Agents repository.
What’s next
We’re expanding our eval suite and doing more work around open source LLMs! Some things we’re excited to share soon:
- How Open Models measure against closed frontier models across eval categories
- Evals as a mechanism to auto-improve agents for tasks in real time
- Openly share how we maintain, reduce, and expand evals per agent over time
Deep Agents is fully open source. Try it and let us know what you think! We’re excited to help teams build great agents & evals.
Related content

Conceptual Guide
Deep Agents
The runtime behind production deep agents


S. Runkle,
V. Trivedy
April 20, 2026
24
min

Agent Architecture
Deep Agents
Open Source
Running Subagents in the Background


H. Lovell,
C. Francis
April 16, 2026
4
min

Observability & Evals
LangSmith
Reusable Evaluators and Evaluator Templates in LangSmith


C. Qiao,
J. Talbot
April 16, 2026
4
min
See what your agent is really doing
LangSmith, our agent engineering platform, helps developers debug every agent decision, eval changes, and deploy in one click.
関連記事
今日のまとめ
AI日報で今日の重要ニュースをまとめ読み