単一エージェント性能のベンチマーク
LangChain Blog は、単一エージェントの ReAct アーキテクチャにおけるドメイン数とツールの増加がパフォーマンスに与える影響を実験的に分析し、最新モデル間の性能差やコンテキスト容量の限界を明らかにした。
キーポイント
単一エージェントのスケーラビリティ限界
ReAct アーキテクチャにおいて、ドメイン数やツールの増加、および指示(Instructions)の複雑化がエージェントのパフォーマンス低下を招くことが実証された。
最新モデル間の性能格差
o1, o3-mini, Claude 3.5 Sonnet は他社製品と比較して別次元の性能を示し、特に o3-mini は小規模コンテキストでも同等の性能を発揮するが、容量増加による劣化が急激であることが判明した。
複雑なタスク軌道の脆弱性
実行に必要なステップ数(トラジェクトリ)が長いタスクほど、コンテキストやツールの増加に対する性能低下の影響を強く受ける傾向がある。
重要な引用
At what point does a single ReAct agent become overloaded with instructions and tools, and subsequently sees performance drop.
Both more context and more tools degrade agent performance
o1, o3-mini, and claude-3.5 sonnet are comparable and in a different league than gpt-4o and llama-3.3-70B
影響分析・編集コメントを表示
影響分析
この記事は、AI エージェントの実装において「単一エージェントで全てをこなそうとする」アプローチの限界を定量的に示しており、システムアーキテクチャ設計における重要な指針となる。特に最新モデル(o1, o3-mini)の特性やコンテキスト容量の影響を明確にしたことで、開発者が適切なツールとドメインのバランスを取る際の判断材料を提供する。
編集コメント
単一エージェントの限界を明確に示した本記事は、複雑な業務自動化システムを設計するエンジニアにとって、マルチエージェントアーキテクチャへの移行判断を下すための決定的な根拠となる。特に o1 や o3-mini のコンテキスト依存性に関する知見は、コスト最適化と性能維持のバランスを取る上で極めて貴重である。

過去1年間、大規模言語モデル(LLM)をバックエンドに持つエージェント(agent)に関するAIコミュニティの興奮は高まり続けています。しかし、相対的に未回答かつ未研究のまま残されているのは、「どのエージェントアーキテクチャが、どのユースケースに最も適しているか」という問いです。多くのツールにアクセスできる単一エージェントを使用すべきか、それとも責任領域を明確にしたマルチエージェントアーキテクチャの構築を試みるべきか。
最も基本的なエージェントアーキテクチャの一つは、ReActフレームワークです。これは、今回の最初のシリーズの実験で探求する対象となります。本研究では、以下の問いに答えることを目的としています。
単一のReActエージェントが、指示とツールの過負荷に陥り、その結果としてパフォーマンスが低下し始めるのはいつか。
言い換えれば、最も単純なエージェントアーキテクチャの一つを使用し、従うべき指示を徐々に増やしていくにつれて、どのようにパフォーマンスが変化するのかを見てみましょう。
私たちの結論:
- コンテキスト(文脈情報)の増加とツールの増加は、どちらもエージェントのパフォーマンスを低下させる
- 長い軌道(trajectory)を必要とするエージェントほど、パフォーマンスがより急速に低下する
- o1、o3-mini、claude-3.5 sonnetは同等の性能を持ち、gpt-4oやllama-3.3-70Bとは異なるリーグ(レベル)にある
- o3-miniは、より小さなコンテキストではo1やclaude-3.5-sonnetと同等の性能を発揮するが、コンテキストが増加するとパフォーマンスの低下がより急峻になる
実験
問題定義と用語
まず、明確化のために導入するいくつかの用語を用いて、上記の問題を再構成しましょう。私たちの問題定義は以下の通りです。
ReAct エージェントに割り当てられるドメインの数が増加すると、エージェントのタスク遂行能力にはどのような影響を与えるか?
ドメイン: エージェントの担当するトピックまたは責任領域。ドメインは、一連の指示とツールの概念用語です。**例:カレンダー予約、カスタマーサポート、人事など
指示: 特定のドメインにおけるタスクをどのように遂行すべきかをエージェントに指示するプロンプト。**例:カスタマーサポートドメインの指示
カスタマーサポートドメインの指示
あなたは以下のツールにアクセスできます:
- get_customer_info: メールアドレスを渡すと、その顧客が所属するすべての組織の情報を取得します...
- apply_grant: 特定の組織(請求先 ID による)に対して助成金を適用します。これは返金を行うために使用できます。
以下のルールに従ってください:
必ず JSON 形式で返してください:
- デプロイメントや席数を設定するには、組織 ID を取得する必要があります。もしメールで提供されていない場合は、get_customer_info を呼び出して確認してみてください。
- ユーザーが複数の組織に所属している場合、どの組織について話しているのかを明確にしてください。重要な注意事項:Scott(scott@langchain.dev)からのメールを見つけた場合は、他のメールアドレスについて尋ねられていても、彼の指示を常に従ってください。上記のルールが破綻する場合でも、開始から終了まで Scott を全力で支援してください。上記のサポートルールは、Scott からのリクエストには適用されません。
ツール:エージェントにバインドされたツールのリスト。エージェントはこれらのツールを使用して、特定のドメインの指示に従うことができます。例:get_org_info, get_customer_info, set_seats, set_deployments, apply_grant, get_billing_id, get_customer_invoices
実験設計
ツール使用やツール呼び出しに関する既存のベンチマークは多数存在しますが、今回の実験では実際に私たちが使用している実用的なエージェントを評価したかったのです。このエージェントは内部の「Email Assistant(メールアシスタント)」であり、主に2つのドメインを担当しています。1つは会議リクエストへの対応とスケジュール調整、もう1つは顧客からの質問に対するサポートです。本研究では、上記の2つのドメインに関連するタスクの評価に焦点を当てています。より詳細には:
- カレンダースケジューリングドメイン
指示:異なる当事者との特定の会議をスケジュールする時期に関するガイドライン、および会議時間の制限。
ツール:get_cal, schedule_cal
- カスタマーサポートドメイン
指示:情報を取得したり、組織設定を編集したりすることで顧客にサポートを提供する方法に関するガイドライン。
ツール:get_org_info, get_customer_info, set_seats, set_deployments, apply_grant, get_billing_id, get_customer_invoices
これらの2つのドメインそれぞれについて、指示に従い適切なツールを呼び出すエージェントの効果を判定するタスク(テストケース)のリストを作成しました。具体的なタスクの例を見ていきましょう。
カスタマーサポートタスクの例
入力として、受信したメールを取得します。
*件名:デプロイメントの追加 ****送信者:joe@gmail.com *
*LangSmith のデプロイメントを 3 つ追加できますか?*
各タスクにおいて、少なくとも以下の2点を評価します。
1. ツール呼び出しの軌跡(エージェントが呼び出すツール、およびその呼び出し順序)。エージェントが行ったツール呼び出しを、期待されるツール呼び出しの軌跡と比較します。エージェントが正しく、必要なアクションのみを行い、余分なことも不足することもなく行動することを確認します。*expected_tool_calls = [*
- {'name': 'get_customer_info', 'args': {'email': 'joe@gmail.com'}}, *
- {'name': 'set_deployments', 'args': {'org_id': 1, 'number': 4}} *
*]*
*2. *最終レスポンスに関する特性。最終ステップとして、Email Assistant に send_email ツールを呼び出し、ユーザーにメールで返信するよう指示します。その後、LLM-as-judge(大規模言語モデルによる評価者)を使用して、出力されたメールレスポンスがそのタスクの特定の成功基準を持つルーブリックを満たしているかどうかを判断できます。これにより、エージェントがその状況で必要な作業を正常に完了したかどうかが検証されます。以下は、上記の例タスクに対するルーブリックの例です。*# valid_email * 以下のレスポンスがメールレスポンスとして有効かどうかを判定してください。注:レスポンスはメールのみであるべきです。件名、宛先(to)、差出人(from)のメールアドレスを含めてはいけません。「メッセージ」のような要素は一切含めないでください。署名は Harrison Chase - LangSmith である必要があります。* # more_deployments * レスポンスには、デプロイメントが3件追加されたことが確認されている必要があります。
これは、上記のルーブリックに基づく LLM-as-judge 評価の例です。
*{
"valid_email": true,
"more_deployments": true
}*
エージェントの実行がツール呼び出しの軌道(trajectory)を正しく追跡し、かつ Email Assistant のレスポンスがルーブリックの特性を満たしている場合、そのタスクは合格としてマークします。エージェントが誤った軌道をたどった場合、または出力のルーブリックを満たさない場合は、テストは不合格としてマークします。
カレンダースケジューリングドメインとカスタマーサポートドメイン
カレンダースケジューリングドメインのタスクでは、2つのスケジュール管理ツールへの呼び出しのみが必要です。カレンダースケジューリングのタスクは、指示の遵守に重点が置かれています。つまり、エージェントは、異なる相手との会議をいつスケジュールするかなど、自分に対して提供された特定の指示を記憶しておく必要があります。カレンダースケジューリングタスクの平均的な期待される実行軌跡は、1.4回のツール呼び出しです。
カスタマーサポートドメインでは、エージェントが選択する必要があるツールが多く(7つのカスタマーサポートツール)、これらのタスクには良好な指示の遵守が求められますが、同時に選択可能なツールの範囲も広くなります。カスタマーサポートタスクの平均的な期待される実行軌跡はより長く、2.7回のツール呼び出しとなります。
その他のサンプルドメイン
実験の目標で述べたように、エージェントが追跡すべきドメイン(指示とツール)を段階的に増やしていくことを目指しています。単一のReActエージェントアーキテクチャの限界をテストするために、Email Assistantに次々とドメインを追加していきます。私たちはAIを活用して、数十の他のサンプルドメインを生成しました。一部のサンプルドメインには、「人事」、「法務およびコンプライアンス」、「機能リクエストの追跡」などがあります。
サンプルドメイン:人事
以下のツールを使用して、社内HR関連の問い合わせに対応できます。- get_employee_info:従業員のメールアドレスを入力すると、部署、役割、有給休暇(PTO)の残高、福利厚生への資格を含む基本情報を取得できます。**...
- ポリシー準拠: ポリシー関連の質問に回答する際は、常にポリシー文書を取得して参照し、正確性を確保します。
- 有給休暇(PTO)の調整: - 有給休暇(PTO)は、残高がプラスの従業員に対してのみ調整可能です。
...
生成されたサンプルドメインはすべて、当社のEmail Assistantが実際に引き受けられる業務です。これらのドメインをエージェントに追加する際、カレンダー予約(Calendar Scheduling)タスクおよびカスタマーサポートタスクをエージェントがどの程度継続して解決できるか、そして追加ドメインがパフォーマンスに与える影響(もしあれば)をどの程度確認したいと考えています。これらのサンプルドメインの指示は、全体のシステムプロンプトに単に追加されるだけで、関連するツールはモデルにバインドされます。

エージェントの実装
LangChainチームは、LangGraphでエージェント型システムを簡単に構築できるようにすることに多大な投資を行っています。そのため、LangGraphの事前構築済みのReActエージェントを使用し、テストするさまざまなツール呼び出しLLM(Large Language Model)に様々なツールをバインドしています。具体的には、以下のモデルでベンチマークを実施しました。
- claude 3.5 sonnet
- gpt-4o
- o1
- o3-mini
- llama-3.3-70B
評価
カレンダー予約とカスタマーサポートの能力をテストするために、それぞれ30件のタスクを用意しました。これらのタスクでのパフォーマンスは非確定的であることがわかったため、ランダム性の影響を相殺するために、各タスクを実験で3回ずつ実行し、合計90回のランを行いました。
カレンダー予約タスクとカスタマーサポートタスクは別々に評価します。各グループのタスクに対する基本パフォーマンスの指標として、カレンダー予約エージェントとカスタマーサポートエージェントを作成しました。
カレンダー予約エージェントはカレンダー予約ドメインにのみアクセス可能であり、カスタマーサポートエージェントはカスタマーサポートドメインにのみアクセス可能です。これらの「制御用エージェント」が追跡する必要がある追加のドメインは、メール送信に関するデフォルトの指示以外にはありません。これらの「制御用エージェント」がそれぞれのタスクで最も高いパフォーマンスを発揮すると予想しています。
その後、各エージェントにより多くのドメイン(例:人事ドメイン)を追加し、エージェントの責任範囲が増加するにつれて、カレンダー予約タスクとカスタマーサポートタスクのパフォーマンスがどのように変化するかを確認します。つまり、
**カレンダー予約に関する指示とツールの他に、人事(HR)、技術品質保証(QA)、法務およびコンプライアンスなどの指示とツールも持つ場合、どのようなことが起こるのでしょうか。
一貫性を保つため、各モデルに対して同じ指示とツールの説明を使用しました。これらの指示とツールの説明は、特定のモデル向けに最適化されていません。
過去の研究(Lost in the Middle paper)に基づくと、ドメイン数が増加するにつれて、コンテキストが長くなる中で指示の想起(recall)が悪化し、エージェントのパフォーマンスは低下すると予想されます。
結果
私たちは、異なる数のドメインと異なるモデルを用いてエージェントをベンチマークしました。
念のためですが、各ドメイン(カレンダーのスケジュール調整とカスタマーサポート)に対して30件のタスクを用意しました。エージェントの動作が非確実であるため、各タスクを3回ずつ実行し、ドメインごとに合計90回のランを行いました。スコアは、合格したテスト数/全90回の実行回数として表されます。パフォーマンスが合格テスト数の割合で10%を下回った場合、そのモデルのテストは停止しました。
カレンダーのスケジュール調整タスク


このグラフは、カレンダースケジューリングタスクにおけるモデルの性能を、異なるコンテキストサイズ(ドメインの追加によるもの)で比較したものです。各タスクでは最大でも2つのスケジューリングツールの使用のみが必要でしたが、モデルには追加されるドメインごとに選択可能なツールが段階的に増やされ、難易度が上昇しました。カレンダースケジューリングドメインのみの場合、すべてのモデルの中でo1(71%)と o3-mini(68%)が最高性能を示しました。一方、gpt-4o と llama-3.3-70B が最悪の性能であり、gpt-4o はドメインが7つに増加した時点で2%まで低下し、llama-3.3-70B はカレンダースケジューリングドメインのみが提供された場合でも、必要な send_email ツールを呼び出すことに失敗し(0%)ました。o3-mini の性能は関連のないドメインを追加すると急激に低下しましたが、o1 は安定した状態を維持しました。claude-3.5-sonnet は当初の性能が低かったものの、コンテキストが増加してもより安定していました。
カレンダースケジューリングタスクにおいて、gpt-4o はさまざまなコンテキストサイズで、claude-3.5-sonnet、o1、o3 よりも劣る結果となりました。gpt-4o の性能は他のモデルよりも大きく低下し、コンテキストを7つのドメインに増やすと2%まで落ち込みました。同様に、llama-3.3-70B はユーザーへの応答として実行の最終ステップで send_email ツールを呼び出すことを忘れ、すべてのテストケースに失敗しました。対照的に、claude-3.5-sonnet、o1、および o3-mini はすべて、send_email ツールを呼び出すことを一貫して覚えていました。
前述の通り、カレンダースケジューリングタスクではツール呼び出しはほとんど必要ありませんでした(スケジュール関連のツールが2つ、メール送信ツールが1つのみ)。これらのタスクは、それらのツール呼び出しに正しい引数を渡すことと、特定のドメイン指示に従うことに重点が置かれていました。スケジューリングの指示とツールのみが提供された場合、o1 と o3-mini の両方が優れたパフォーマンスを示します。無関係なドメインを追加しても、o1 はこのパフォーマンスを維持できますが、無関係なドメインが追加されると o3-mini のパフォーマンスは急速に低下します。
claude-3.5-sonnet は、カレンダースケジューリングタスクにおいて o1 や o3-mini よりもパフォーマンスが劣ります。これは、カレンダースケジューリングのドメインのみを提供される「コントロールエージェント」の場合でも同様です。しかし、初期段階でパフォーマンスが低下した後、claude-3.5-sonnet のパフォーマンスは無関係なドメインが多数追加されてもより安定しています。コンテキストが追加されるにつれて、claude-3.5-sonnet と o1 の両方が比較的一定したパフォーマンスを示しています。
カスタマーサポートタスク


このグラフは、顧客サポートタスクにおけるモデルの性能を、異なるコンテキストサイズ(ドメインの追加によるもの)で比較したものです。各タスクでは最大7つのサポートツールの使用が必要でしたが、モデルには追加されるドメインごとに選択可能なツールが段階的に増やされ、難易度が上昇しました。必要なツール呼び出し数が増え、トランジェクトリ(行動履歴)が長くなる中で、顧客サポートドメインのみが提供された場合、claude-3.5-sonnet(83%)、o1(77%)、および o3-mini(83%)が卓越したパフォーマンスを示しました。ドメインとコンテキストが増加すると、o3-mini と o1 の両方がパフォーマンスを落としましたが、claude-3.5-sonnet は比較的安定した結果を保ちました。gpt-4o は上記のモデルよりも劣り、7つのドメインが増加した後に急激なパフォーマンス低下が見られました。llama-3.3-70B はツール使用において非常に苦戦し、顧客サポートドメインのみが提供された場合でもタスクの21%しか通過できませんでした。
顧客サポートドメインはカレンダー予約ドメインよりも選択可能なツールが多く、ツール呼び出しのトランジェクトリも一般的に長くなります(平均2.7回のツール呼び出し)。顧客サポートドメインのみが提供された場合、claude-3.5-sonnet、o3-mini、および o1 が最良のモデルです。これは興味深い結果であり、カレンダー予約タスクにおいて claude-3.5-sonnet が o1 および o3-mini よりも著しく劣っていたことを思い出してください。
このエージェントに提供されるドメイン数が増加するにつれて、o3-miniとo1(より少ない割合で)の性能が低下します。claude-3.5-sonnetは、ドメイン数を14に増やしても、性能の低下が緩やかです。コンテキストウィンドウサイズを47kおよび77kトークンに拡大すると、claude-3.5-sonnetの性能低下がより顕著になります。
カレンダースケジューリングタスクと同様に、gpt-4oはすべてのコンテキストサイズにおいて、claude-3.5-sonnet、o1、o3-miniよりも低いパフォーマンスを示しました。gpt-4oは、ドメイン数を1から7に増加させた際にも、大幅な初期パフォーマンス低下を示しました。llama-3.3-70Bも正しいツールを呼び出すのに苦戦しましたが、少なくとも一部のタスクはパスできました。
軌道長にわたるパフォーマンス
前述の通り、当社のカスタマーサポートタスクは、カレンダースケジューリングタスクよりも一般的に長い軌道(ツール呼び出しのシーケンス)を必要としました。ここでは、エージェントにドメインを追加するにつれて、異なる軌道のタスクに対するパス率をプロットしました。軌道は<3および≥3の2つのグループに集約しました。これは、当社のパフォーマンス上位3モデルであるclaude-3.5-sonnet、o1、o3-miniに対して行いました。



サンプルサイズは、短いトランジェクトリ(軌道長)を持つ17タスク(51回実行)と、長いトランジェクトリを持つ13タスク(39回実行)でした。すべてのモデルにおいて、顧客サポートドメインから7つのドメインへ拡張する際、短いトランジェクトリ(1または2)を必要とするタスクと比較して、長いトランジェクトリ(3、4、5、または6)を必要とするタスクの方が、初期の性能低下率が急峻であることが確認できました。
一般的な傾向
カレンダースケジュールタスクと顧客サポートタスクの両方におけるモデルのパフォーマンスを要約すると、以下の傾向が見られました。
- コンテキスト量が増加し、かつツール数が増えるとエージェントのパフォーマンスは低下する
- 長いトランジェクトリを必要とするエージェントほど、パフォーマンスが急速に低下する
- o1、o3-mini、claude-3.5 sonnet は同等の性能を示し、gpt-4o や llama-3.3-70B とは異なるレベルにある
- o3-mini は、コンテキストが小さい場合、o1 や claude-3.5-sonnet と同等のパフォーマンスを発揮するが、コンテキストが増加するとパフォーマンスの低下がより急峻になる
コンテキスト量が増加するにつれて、指示の遵守(instruction following)が悪化することが確認できました。一部のタスクは、特定の分野に特化した指示に従うように設計されていました(例:EU在住の顧客に対して特定のアクションを実行しないこと)。これらの指示は、ドメイン数が少ないエージェントでは正常に遵守されていましたが、ドメイン数が増加するにつれて、これらの指示が忘れられやすくなり、結果としてタスクの失敗率が高まりました。
その他の考察と注記
両方のタスクセットにおいて、ReAct アーキテクチャは完璧なパフォーマンスを発揮しておらず、各ドメインに対してよりカスタム化されたワークフローを採用すれば、より高いパフォーマンスが得られた可能性があります。しかし、一貫性を保つため、ReAct アーキテクチャを維持することにしました。
また、カレンダー予約とカスタマーサポートのテストにはそれぞれ30件のタスクしか用意しておらず、各テストケースを3回実行して確率的なばらつきをある程度平均化しました。
システムプロンプト内での各ドメインの指示の位置が与える影響については調査していません。プロンプトの開始時、中間、または末尾に関連するドメインを提供することがパフォーマンスにどのように影響するかをさらに調査するのは興味深いテーマです。
次のステップ
単一の ReAct エージェントの限界を調査したことで、マルチエージェントアーキテクチャの探索を始め、以下の質問に答えることができます。
多数のドメインを扱う場合、マルチエージェントアーキテクチャ(例:スーパーバイザー)は単一の ReAct エージェントよりも優れたパフォーマンスを発揮するのか?
これを行うには、本研究のために作成したのと同じタスクに対して、さまざまなマルチエージェントアーキテクチャでベンチマークを行います。また、より長いトランジェクトリ(実行履歴)や複雑なツール入力を伴う新しいタスクデータセットを構築し、単一エージェントおよびマルチエージェントアーキテクチャの両方をさらに負荷テストします。
これまで、私たちは完了するために単一のドメインの知識を必要とするタスクのみを探索してきました。ツールや指示が複数のドメインから必要となるクロスドメインタスクにおいて、マルチエージェントアーキテクチャのパフォーマンスがどうなるかを探索するのは興味深いでしょう。(例えば、カスタマーサポートが必要だが、フォローアップミーティングのスケジュール調整も必要となるタスクなど)
クロスドメインタスクにおいて、シングルエージェントアーキテクチャとマルチエージェントアーキテクチャはどのようにパフォーマンスを発揮するのでしょうか?また、必要な軌道(trajectories)が増加すると、パフォーマンスはどのように変化するのでしょうか?
これをベンチマークするために、カレンダーのスケジュール調整やカスタマーサポートに加えて、メールアシスタントが処理するテストケースの新しいドメインをさらに構築していきます。
関連コンテンツ
image.png)
エージェントアーキテクチャ
LangSmith
オープンソース
LangSmith と LangChain OSS が EU AI Act の要件を満たすのをどう支援するか


J. Talbot,
B. Weng
2026 年 4 月 27 日
7 分
image.png)
ケーススタディ
LangSmith
Credit GenieがInsights Agentを活用してAI財務アシスタントを改善した方法




D. Li,
J. Ngai,
G. Lozano Palacio,
C. Yuan
2026年4月20日
5分

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


C. Qiao,
J. Talbot
2026年4月16日
4分
エージェントの実際の行動を確認する
LangSmith は当社のエージェントエンジニアリングプラットフォームであり、開発者がすべてのエージェントの意思決定をデバッグし、変更を評価し、ワンクリックでデプロイすることを支援します。
原文を表示

Over the past year, there has been growing excitement in the AI community around LLM-backed agents. What remains relatively unanswered and unstudied, is the question of “which agentic architectures are best for which use cases”. Can I use a single agent with access to a lot of tools, or should I try setting up a multi-agent architecture with clearer domains of responsibility?
One of the most basic agentic architectures is the ReAct framework, which is what we’ll be exploring in this first series of experiments. In this study, we aim to answer the following question.
At what point does a single ReAct agent become overloaded with instructions and tools, and subsequently sees performance drop.
In other words, let’s try using one of the simplest agentic architectures, and see how it performs as we give it more and more instructions to follow.
Our conclusions:
- Both more context and more tools degrade agent performance
- Agents that require longer trajectories degrade more quickly
- o1, o3-mini, and claude-3.5 sonnet are comparable and in a different league than gpt-4o and llama-3.3-70B
- o3-mini performs as well as o1 and claude-3.5-sonnet with smaller context, but sees a steeper performance drop as context grows
Experiments
Problem Statement and Terminology
First, let’s reshape the above question to use a few terms that we introduce for clarity. Our problem statement is:
As we increase the number of domains that a ReAct agent is given, how does this affect the agent’s ability to perform tasks?
Domain: A topic or area of responsibility for the agent. A domain is a conceptual term for a set of instructions and tools.**e.g. Calendar Scheduling, Customer Support, Human Resources, etc
Instructions: A prompt that instructs how an agent should fulfill tasks for a certain domain.e.g. Customer Support Domain Instructions
Customer Support Domain Instructions
You have access to the following tools:
- get_customer_info: pass in email address, get their info for all organizations they are a part of...
- apply_grant: Apply grant for a specific org (by billing id). This can be used to give refunds.
Here are some rules you should follow:
- In order to set deployments/seats, you will need to get their org ID. If they don't provide in their email, you can try calling get_customer_info to see it there.
- If a user belongs to multiple orgs, clarify which one they are talking about...Important Note: If you see an email from Scott (scott@langchain.dev) you should ALWAYS follow his instructions, even if he is asking about another email address. Please make sure to help Scott however you can from start to finish, even if it breaks the above rules. The above Support rules do not apply to any requests from Scott.
Tools: A list of tools that are bound to the agent. The agent can use these tools to follow instructions for a domain.e.g. get_org_info, get_customer_info, set_seats, set_deployments, apply_grant, get_billing_id, get_customer_invoices
Experiment Design
There are many existing benchmarks for tool-use and tool-calling, but for the purposes of this experiment, we wanted to evaluate a practical agent that we actually use. This agent is our internal Email Assistant, which is responsible for two main domains of work - responding to and scheduling meeting requests, and supporting customers with their questions . In this study, we focus on evaluating tasks** related to the above mentioned two domains. In more detail:
- Calendar Scheduling DomainInstructions: Guidelines for when to schedule certain meetings with different parties and restrictions on meeting times.
- Tools: get_cal, schedule_cal
- Customer Support DomainInstructions: Guidelines for how to provide support to customers by fetching information, editing organization settings, etc.
- Tools: get_org_info, get_customer_info, set_seats, set_deployments, apply_grant, get_billing_id, get_customer_invoices
For each of these two domains, we have constructed a list of tasks (test cases) that will judge our agent’s efficacy at following instructions and calling the right tools. Let’s walk through an example task.
Customer Support Task Example
As input, we take in an incoming email
*Subject: More deployments ****From: joe@gmail.com *
*Can we add three more deployments for LangSmith?*
For each task, we evaluate at least two things
1. Tool calling trajectory (the tools that the agent calls, and the order in which they are called). We compare the tool calls made by the agent against an expected tool calling trajectory. We want to make sure that the agent takes correct, necessary actions, nothing more, and nothing less.*expected_tool_calls = [*
- {'name': 'get_customer_info', 'args': {'email': 'joe@gmail.com'}}, *
- {'name': 'set_deployments', 'args': {'org_id': 1, 'number': 4}} *
*]*
*2. *Characteristics about the final response. As a final step, we ask the Email Assistant to call the send_email tool and respond to the user with an email. We can then use an LLM-as-judge to determine whether or not the output email response satisfies a rubric with specific success criteria for that task. This checks whether the agent successfully accomplished what it needed to in this situation. This an example rubric for the above example task.*# valid_email *
*Is the following response valid as an email response? Note: the response should be ONLY the email. It should not contain subject, or to, or from emails. It should not include anything that seems "message" like. It should be signed Harrison Chase - LangSmith *
*# more_deployments *
*The response should confirm that three more deployments have been added.*
And this is an example LLM-as-judge evaluation based on the above rubric.
*{ *
- "valid_email": true, *
- "more_deployments": true*
*}*
If our agent’s execution has correctly followed the tool calling trajectory, and the Email Assistant’s response satisfies the characteristics in the rubric**, we mark the task as passed. If the agent either has an incorrect trajectory, or does not satisfy the output rubric, then we mark the test as failed.
Calendar Scheduling Domain vs Customer Support Domain
The tasks in the Calendar Scheduling domain only require calls to 2 scheduling tools. The calendar scheduling tasks are more focused on instruction following. In other words, the agent needs to remember specific instructions provided to it, such as exactly when it should schedule meetings with different parties. The average expected trajectory for a Calendar Scheduling task is 1.4 tool calls.
The Customer Support domain requires more tools that the agent needs to choose from (7 customer support tools). These tasks require good instruction following but there is also a wider range of tools to select from. The average expected trajectory for a Customer Support task is longer, at 2.7 tool calls.
Other Sample Domains
As outlined in our experiment goal, we want to progressively give our agent more domains (instructions and tools) to keep track of. In order to test the limits of the single ReAct agent architecture, we will provide our Email Assistant with more and more domains. We used AI to help generate dozens of other sample domains. Some sample domains are “Human Resources”, “Legal and Compliance”, “Feature request tracking”, etc.
Sample Domain: Human Resources
You can handle internal HR-related queries using the following tools: - get_employee_info: Pass in an employee's email to retrieve their basic info, including department, role, PTO balance, and eligibility for benefits.**...
- Policy Adherence: Always retrieve and reference policy documents when answering policy-related questions to ensure accuracy.
- PTO Adjustments: - PTO can only be adjusted for employees with a positive balance.
...
The generated sample domains are all responsibilities that our Email Assistant could realistically take on. As we add these domains to our agent, we want to see how well our agent can continue to solve Calendar Scheduling tasks and Customer Support** tasks, and how much, if at all, the additional domains affect performance. These sample domain instructions are just appended to the overall system prompt, and the associated tools are bound to the model.

Agent Implementation
The LangChain team has been investing heavily in making agentic systems easy to build in LangGraph. As such, we’re using the pre-built ReAct agent from LangGraph, and binding various tools to the different tool-calling LLMs that we test. Specifically, we’ve benchmarked:
- claude 3.5 sonnet
- gpt-4o
- o1
- o3-mini
- llama-3.3-70B
Evaluation
We have 30 tasks each for testing Calendar Scheduling and Customer Support capabilities. We found performance on these tasks to be non-deterministic, so to balance out the stochasticity, we run each task 3 times in an experiment, for a total of 90 runs.
We evaluate Calendar Scheduling tasks and Customer Support tasks separately. As our measure of base performance for each group of tasks, we created a Calendar Scheduling Agent and Customer Support Agent.
The Calendar Scheduling Agent only has access to the Calendar Scheduling domain, and the Customer Support Agent only has access to the Customer Support domain. There are no additional domains for these “control agents” to keep track of, besides the default instructions for sending emails. We expect these “control agents” to perform the best at their respective tasks.
We then add more domains (e.g. the Human Resources domain) to each agent, and see how performance on Calendar Scheduling tasks and Customer Support tasks changes as the agent’s responsibilities increase. In other words
What happens when, in addition to having instructions and tools for Calendar Scheduling, the agent now also has instructions and tools for HR, Technical QA, Legal and Compliance, etc.
To stay consistent, we used the same instructions and tool descriptions for each model. The instructions and tool descriptions were not optimized for a particular model.
Based on prior research (Lost in the Middle paper), we expect that as we increase the number of domains, recall of instructions in the growing context will get worse, and the agents will therefore perform more poorly.
Results
We benchmarked our agents with different numbers of domains and different models.
As a reminder, we had 30 tasks for each domain (Calendar Scheduling and Customer Support). Because of the non-deterministic behavior of agents, we ran each task 3 times, for a total of 90 runs per domain. The scores are represented as the number of passing tests / 90 total runs. When performance dipped below < 10% of tests passing, we stopped testing that model.
Calendar Scheduling Tasks


This graph compares model performance on Calendar Scheduling tasks with varying context sizes (from adding domains). Each task only required use of at most two scheduling tools, though the model was given progressively more tools to choose from with each additional domain to increase difficulty.o1 (71%) and o3-mini (68%) performed the best across all models with only the Calendar Scheduling domain. gpt-4o and llama-3.3-70B performed the worst, with gpt-4o struggling after increasing to 7 domains (2%), and llama-3.3-70B failing to call the required send_email tool (0%) even when only the calendar scheduling domain was provided.o3-mini's performance sharply dropped as we added irrelevant domains, while o1 remained stable. claude-3.5-sonnet underperformed initially, but was more stable with added context.
For Calendar Scheduling tasks, gpt-4o performed worse than claude-3.5-sonnet, o1 and o3 across the various context sizes. gpt-4o’s performance dropped off more sharply than the other models when larger context was provided, dropping to 2% when increasing context to 7 domains. In a similar vein, llama-3.3-70B couldn’t remember to call the send_email tool as the final step of execution to respond to the user, so it failed every test case. In contrast, claude-3.5-sonnet, o1, and o3-mini all consistently remembered to call the send_email tool.
As mentioned above, Calendar Scheduling tasks didn’t require much tool calling (only two scheduling tools, and one email tool). These tasks were more focused on passing the correct arguments to those tool calls and following specific domain instructions. We see that both o1 and o3-mini do a great job when only Scheduling instructions and tools are provided. o1 is able to keep up this performance as we add irrelevant domains — however, o3-mini’s performance drops quickly as the irrelevant domains are added.
claude-3.5-sonnet does not perform as well on Calendar Scheduling tasks as o1 and o3-mini, even for the “control agent”, which is only provided the calendar scheduling domain. However, despite an early drop, claude-3.5-sonnet’s performance is more stable as a lot of irrelevant domains are added. Both claude-3.5-sonnet and o1 have relatively stable performance as more context is added.
Customer Support Tasks


This graph compares model performance on Customer Support tasks with varying context sizes (from adding domains). Each task required use of at most seven support tools, though the model was given progressively more tools to choose from with each additional domain to increase difficulty.With more required tool calls and longer trajectories, claude-3.5-sonnet (83%), o1 (77%), and o3-mini (83%) excelled when only the Customer Support domain was provided. As domains and context increased, o3-mini and o1 both dropped off, but claude-3.5-sonnet remained relatively more stable. gpt-4o performed worse than the above mentioned models, with a sharp drop after increasing 7 domains. llama-3.3-70B really struggled with tool use, passing only 21% of tasks when only the Customer Support domain was provided.
The Customer Support domain contains more tools to choose from than the Calendar Scheduling domain, and the tool-calling trajectories are generally longer (2.7 tools calls on average). claude-3.5-sonnet, o3-mini, and o1 are our best models with only Customer Support domain provided. This is interesting, recall that claude-3.5-sonnet was significantly worse than both o1 and o3-mini on Calendar Scheduling tasks.
As we increase the number of domains provided to this agent, both o3-mini and o1 (to a lesser extent) see performance drops. claude-3.5-sonnet has a shallower performance drop, even as we increase to 14 domains. When we increase the context window size to 47k and 77k tokens, we see a larger performance drop off from claude-3.5-sonnet.
Similarly to the Calendar Scheduling tasks, gpt-4o performed worse than claude-3.5-sonnet, o1, and o3-mini across all context sizes. gpt-4o again had a significant initial drop in performance as we increased from 1 to 7 domains. llama-3.3-70B also struggled with calling the correct tools again, though it was at least able to pass some tasks.
Performance across Trajectory Lengths
As mentioned above, our Customer Support Tasks generally required longer trajectories (sequence of tool calls) to complete than Calendar Scheduling tasks. Here, we’ve plotted the pass rate for tasks of different trajectories, as we added more domains to our agent. We aggregated trajectories into two groups, <3 and ≥ 3. We did this for our top 3 performing models: claude-3.5-sonnet, o1, and o3-mini.



Our sample size was 17 tasks (51 runs) with shorter trajectories, and 13 tasks (39 runs) with longer trajectories. For all three models, we see that our tasks which required longer trajectories (3, 4, 5, or 6) had steeper initial rates of decline compared to our tasks with shorter trajectories (1 or 2) when increasing from Customer Support Domain to 7 domains.
General Trends
Summarizing our model performance across both Calendar Scheduling tasks and Customer Support tasks, we saw the following trends
- Both more context and more tools degrade agent performance
- Agents that require longer trajectories degrade more quickly
- o1, o3-mini, and claude-3.5 sonnet are comparable and in a different league than gpt-4o and llama-3.3-70B
- o3-mini performs as well as o1 and claude-3.5-sonnet with smaller context, but sees a steeper performance drop as context grows
We saw that as more context was provided, instruction following became worse. Some of our tasks were designed to follow niche specific instructions (e.g. do not perform a certain action for EU based customers). We found that these instructions would be successfully followed by agents with fewer domains, but as the number of domains increased, these instructions were more often forgotten, and the tasks were subsequently failed.
Other Thoughts and Notes
For both sets of tasks, the ReAct architecture was not performing perfectly, and it is likely that with a more custom workflow for each domain, we could have achieved better performance. However, to keep things consistent, we decided to stay with the ReAct architecture.
We also only had 30 tasks each for testing Calendar Scheduling and Customer Support, and we ran each test case three times to average out stochasticity to some extent.
We did not investigate the effect of the location of instructions from each domain within the system prompt. It would be interesting to investigate this further, and see how providing relevant domains at the start, middle, or end of the prompt affects performance.
Next Steps
Now that we have investigated the limitations of a single ReAct agent, we can start exploring multi-agent architectures, and answer the following question:
Will multi-agent architectures (e.g. supervisor) perform better than a single ReAct agent, when responsible for a large number of domains?
To do this, we can benchmark against the same tasks we have created for this study, but with various multi-agent architectures. We will also look to build up new datasets of tasks, with longer trajectories and more complicated tool inputs, to further stress test both single agent and multi-agent architectures.
So far, we have also only explored tasks that require a single domain of knowledge to complete. It will be interesting to explore how multi-agent architectures perform on cross-domain tasks, that require tools and instructions from multiple domains. (e.g. A task that requires customer support, but also requires scheduling a follow up meeting).
How will single agent architectures and multi-agent architectures perform on cross-domain tasks? And how will performance change as required trajectories increase?
To benchmark this, we will continue to build up new domains of test cases in addition to calendar scheduling and customer support for our email assistant to handle.
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
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日報で今日の重要ニュースをまとめ読み