framework-selection について
framework-selection は、LangChain、LangGraph、Deep Agents から選ぶための判断ガイドです。ワークフローの複雑さに応じたフレームワークの選択と、各レイヤーの組み合わせ方を開発者に示します。
主な機能
- 01タスク要件に基づくフレームワーク選択
- 02各フレームワークの機能とトレードオフの比較
- 03選択後に参照するスキルの提示
- 04フレームワーク各レイヤーの組み合わせ方を解説
活用シーン
- 01エージェント開発開始前のフレームワーク選定
- 02単純なエージェントループと独自制御フローの選択
- 03計画、メモリ、委任の要否を判断
- 04Deep Agents のオーケストレーションと LangGraph のワークフローを併用
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ langchain-ai/ langchain-skills --skill framework-selectionインストール後、Claude Code で/framework-selectionを入力して読み込まれたか確認します。
詳細
┌─────────────────────────────────────────┐
│ Deep Agents │ ← highest level: batteries included
│ (planning, memory, skills, files) │
├─────────────────────────────────────────┤
│ LangGraph │ ← orchestration: graphs, loops, state
│ (nodes, edges, state, persistence) │
├─────────────────────────────────────────┤
│ LangChain │ ← foundation: models, tools, chains
│ (models, tools, prompts, RAG) │
└─────────────────────────────────────────┘
上位レイヤーを選んでも、下位レイヤーを使えなくなるわけではありません。Deep Agents 内で LangGraph のグラフを、両方の内部で LangChain のプリミティブを使用できます。
他のスキルを選んだり、エージェントのコードを書いたりする前に、あらゆるプロジェクトの最初にこのスキルを読み込んでください。 選択するフレームワークによって、次に呼び出す他のスキルが決まります。
判断ガイド
次の質問に順番に答えてください。
| 質問 | はい → | いいえ → |
|---|---|---|
| タスクには、作業をサブタスクに分割すること、長時間のセッションにわたるファイル管理、永続メモリ、または必要に応じたスキルの読み込みが必要ですか? | Deep Agents | ↓ |
| タスクには、ループ、動的な分岐、並列ワーカー、Human-in-the-loop、カスタム状態など、複雑な制御フローが必要ですか? | LangGraph | ↓ |
| 入力を受け取り、ツールを実行して結果を返す、単一目的のエージェントですか? | LangChain(create_agent) | ↓ |
| エージェントループを含まない、純粋なモデル呼び出し、チェーン、または検索パイプラインですか? | LangChain(チェーン) | — |
フレームワークの概要
LangChain — タスクが限定的で自己完結している場合に使用
最適な用途:
- 固定されたツールセットを使う単一目的のエージェント
- RAG パイプラインとドキュメントに関する質問応答
- モデル呼び出し、プロンプトテンプレート、出力の解析
- エージェントのロジックが単純な、素早いプロトタイプ作成
あまり適さないケース:
- エージェントが多くのステップにわたって計画を立てる必要がある
- 状態を複数のセッションにわたって保持する必要がある
- 制御フローが条件分岐または反復処理を含む
次に呼び出すスキル: langchain-models、langchain-rag、langchain-middleware
LangGraph — 制御フローを自分で管理する必要がある場合に使用
最適な用途:
- 分岐ロジックやループを含むエージェント(例:正解するまでの再試行、振り返り)
- 中間結果に応じて異なる経路をたどる、複数ステップのワークフロー
- 特定のステップでの Human-in-the-loop による承認
- 並列のファンアウト/ファンイン(MapReduce パターン)
- セッション内で呼び出しをまたいで保持される永続状態
あまり適さないケース:
- 計画、ファイル管理、サブエージェントへの委任を任せたい(代わりに Deep Agents を使用)
- シンプルなエージェントで十分なほど、ワークフローが単純
次に呼び出すスキル: langgraph-fundamentals、langgraph-human-in-the-loop、langgraph-persistence
最適な用途:
- 作業を ToDo リストに分解する必要がある長期的なタスク
- セッションをまたいでファイルの読み込み、書き込み、管理が必要なエージェント
- サブタスクを専門のサブエージェントに委任する場合
- 必要に応じてドメイン固有のスキルを読み込む場合
- 複数のセッションをまたいで保持される永続メモリ
適さない用途:
- 単一目的のエージェントで十分な単純なタスク
- グラフのすべてのエッジを正確に手動で制御する必要がある場合(LangGraph を直接使用してください)
ミドルウェア — 組み込みで拡張可能:
Deep Agents には、すぐに使える組み込みのミドルウェア層が用意されています。実装するのではなく、設定して使用します。以下はあらかじめ接続されています。さらに独自のものを追加することもできます。
| ミドルウェア | 提供する機能 | 常時有効? |
|---|---|---|
TodoListMiddleware | write_todos ツール — エージェントが複数ステップのタスクを計画し、進捗を管理します | ✓ |
FilesystemMiddleware | ls、read_file、write_file、edit_file、glob、grep ツール | ✓ |
SubAgentMiddleware | task ツール — 名前付きサブエージェントに作業を委任します | ✓ |
SkillsMiddleware | スキルディレクトリから必要に応じて SKILL.md ファイルを読み込みます | オプトイン |
MemoryMiddleware | Store インスタンスを介してセッション間で長期メモリを保持します | オプトイン |
HumanInTheLoopMiddleware | 割り込みを行い、機密性の高いツール呼び出しの前に人間の承認を求めます | オプトイン |
次に呼び出すスキル: deep-agents-core、deep-agents-memory、deep-agents-orchestration
レイヤーの組み合わせ
フレームワークはレイヤー化されているため、同じプロジェクト内で組み合わせられます。最も一般的なパターンは、Deep Agents を最上位のオーケストレーターとして使用し、専門的なサブエージェントには LangGraph を利用することです。組み合わせる場合
| シナリオ | 推奨パターン |
|---|---|
| メインエージェントには計画機能とメモリが必要だが、あるサブタスクではグラフを正確に制御する必要がある | Deep Agents オーケストレーター → LangGraph サブエージェント |
| 専門的なパイプライン(例:RAG、リフレクションループ)を、より広範なエージェントから呼び出す | ツールまたはサブエージェントとしてラップした LangGraph グラフ |
| 高レベルの調整を行いながら、特定のドメインでは低レベルのグラフを使用する | Deep Agents + サブエージェントとしての LangGraph コンパイル済みグラフ |
実際の仕組み
LangGraph のコンパイル済みグラフは、Deep Agents 内のサブエージェントとして登録できます。つまり、厳密に制御された LangGraph ワークフロー(例:検索と検証のループ)を構築し、それを名前付きサブエージェントとして Deep Agents の task ツールに渡せます。Deep Agents オーケストレーターは、グラフの内部構造を気にすることなく、そのサブエージェントに処理を委任します。
LangChain のツール、チェーン、リトリーバーは、LangGraph のノードと Deep Agents のツールの両方で自由に使用できます。これらは、あらゆるレベルで共有される構成要素です。
クイックリファレンス
| LangChain | LangGraph | Deep Agents | |
|---|---|---|---|
| 制御フロー | 固定(ツールループ) | カスタム(グラフ) | 管理(ミドルウェア) |
| ミドルウェア層 | コールバックのみ | ✗ なし | ✓ 明示的、設定可能 |
| 計画 | ✗ | 手動 | ✓ TodoListMiddleware |
| ファイル管理 | ✗ | 手動 | ✓ FilesystemMiddleware |
| 永続メモリ | ✗ | チェックポインターを使用 | ✓ MemoryMiddleware |
| サブエージェントへの委任 | ✗ | 手動 | ✓ SubAgentMiddleware |
| オンデマンドのスキル | ✗ | ✗ | ✓ SkillsMiddleware |
| Human-in-the-loop | ✗ | 手動割り込み | ✓ HumanInTheLoopMiddleware |
| カスタムグラフエッジ | ✗ | ✓ 完全に制御可能 | 制限あり |
| セットアップの複雑さ | 低 | 中 | 低 |
| 柔軟性 | 中 | 高 | 中 |
ミドルウェアは、LangChain(コールバック)と Deep Agents(明示的なミドルウェア層)に固有の概念です。LangGraph にはミドルウェアはありません。動作はノードとエッジに直接組み込みます。