本記事は以下のblog内容を機械翻訳したものです。
https://blog.langchain.com/deep-agents/
Deep Agents
LLMを使ってツールをループで呼び出すのが、エージェントの最もシンプルな形です。しかし、このアーキテクチャでは、「浅い」エージェントが生まれ、より長く複雑なタスクの計画と実行が難しくなることがあります。 “Deep Research”、“Manus”、“Claude Code” などのアプリケーションは、計画ツール、サブエージェント、ファイルシステムへのアクセス、詳細なプロンプトの組み合わせを実装することで、この制限を回避しています。
謝辞:この探求は主にClaude Codeと、それを使ってコーディング以外にも使用している人々の報告に触発されました。Claude Codeは何を汎用的にし、その特性を抽象化し、一般化できるのでしょうか?
深い(ディープ)エージェントの現実
現時点で最も支配的なエージェントアーキテクチャは、最もシンプルなものです。ループで実行し、ツールを呼び出すというものです。
しかし、これを素朴に行うと、エージェントは少し「浅い」ものになりがちです。「浅い」とは、エージェントがより長い時間軸で計画を立て、より複雑なタスクを実行できないことを指します。
調査とコーディングは、この傾向を打ち破るエージェントが作成された2つの分野として浮上してきました。主要なモデルプロバイダーはすべて、Deep Researchと「非同期」コーディングタスク用のエージェントを持っています。多くのスタートアップや顧客が、それぞれの特定の分野向けにこれらのバージョンを作成しています。
これらのエージェントを「深い(ディープ)エージェント」と呼んでいます。なぜなら、トピックを深く掘り下げることができるからです。一般的に、より複雑なタスクの計画がより得意で、それらの目標に対してより長い時間軸で実行できます。
これらのエージェントは、なぜ深く掘り下げることができるのでしょうか?
コアアルゴリズムは実際には同じです。LLMがループで実行され、ツールを呼び出しているだけです。簡単に構築できるナイーブなエージェントとの違いは次のとおりです。
- 詳細なシステムプロンプト
- 計画ツール
- サブエージェント
- ファイルシステム
深いエージェントの特徴
詳細なシステムプロンプト
Claude Codeの再作成されたシステムプロンプトは長いです。これらは、ツールの使用方法に関する詳細な指示を含んでいます。特定の状況下での振る舞い方に関する例(few shotプロンプト)も含まれています。
Claude Codeは例外ではありません。最高のコーディングまたはディープリサーチエージェントのほとんどが、かなり複雑なシステムプロンプトを持っています。これらのシステムプロンプトがないと、エージェントはそれほど深く掘り下げられません。プロンプティングは依然として重要です!
計画ツール
Claude CodeはTodoリストツールを使用しています。面白いことに、これは何も実行しません!基本的にno-opです。エージェントを軌道に乗せるためのコンテキストエンジニアリング戦略にすぎません。
深いエージェントは、より長い時間軸で複雑なタスクを実行するのに優れています。計画(no-opツール呼び出しを介して行われたとしても)はその大きな要素です。
サブエージェント
Claude Codeはサブエージェントを生成できます。これにより、タスクを分割できます。カスタムサブエージェントを作成して、より多くの制御することもできます。これにより、"コンテキスト管理とプロンプトのショートカット"が実現します。
深いエージェントはトピックを深く掘り下げます。これは主に、個々のタスクに特化したサブエージェントを起動し、それらのサブエージェントがそこで深く掘り下げることを許可することで実現されます。
ファイルシステム
Claude Codeは(言うまでもありませんが)ファイルシステムにアクセスでき、タスクの完了だけでなく、メモを取るためにもファイルシステムを修正できます。また、すべてのエージェント(およびサブエージェント)が共同作業するための共有ワークスペースとしても機能します。
Manusは、ファイルシステムを「メモリ」として大幅に使用する別の深いエージェントの例です。
深いエージェントは長期間実行され、管理する必要がある大量のコンテキストを蓄積します。ファイルシステムを手元に置いて(そして後でそこから読み取る)、これを行うのに役立ちます。
深いエージェントの構築
誰もが自分の特定の分野向けに深いエージェントを構築しやすくするために、週末にオープンソースパッケージ(deepagents)をハックしました。pip install deepagentsで簡単にインストールでき、こちらで使い方を説明しています。
このパッケージは、自分のカスタムバージョンを作成できる汎用的な深いエージェントを作成しようと試みています。
上記の特性に対応する組み込みコンポーネントが付属しています。
- Claude Codeに触発されたシステムプロンプトですが、より汎用的に変更されています
- Claude Codeと同じno-op Todoリスト計画ツール
- サブエージェントの生成と、独自のサブエージェントの指定機能
- エージェントの状態(既存のLangGraphの概念)を使用する「仮想ファイルシステム」のモック
カスタムプロンプト(より大きなシステムプロンプトにカスタム指示として挿入されます)、カスタムツール、カスタムサブエージェントを渡すことで、独自の深いエージェントを簡単に作成できます。deepagentsの上に構築された「ディープリサーチ」エージェントの簡単な例を作成しました。
