framework-selection について
framework-selectionは、タスクや制御フローの要件に応じてLangChain、LangGraph、Deep Agentsを選ぶためのスキルガイドです。各レイヤーの組み合わせ方と、次に使うスキルも案内します。
主な機能
- 01フレームワーク選択ガイド
- 023つのフレームワーク層の解説
- 03フレームワーク併用の指針
- 04ミドルウェア機能の比較
活用シーン
- 01エージェント実装前のフレームワーク選択
- 02プロジェクトに必要な次のスキル選び
- 03Deep AgentsとLangGraphサブエージェントの併用
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ langchain-ai/ skills-benchmarks --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-fundamentals、langchain-rag、langchain-middleware
LangGraph — 制御フローを自分で管理する必要がある場合に使用します
最適な用途:
- 分岐ロジックやループを持つエージェント(例:正しい結果が得られるまで再試行する、リフレクション)
- 中間結果によって異なる経路に分岐する、複数ステップのワークフロー
- 特定のステップでのhuman-in-the-loop承認
- 並列のファンアウト/ファンイン(map-reduce パターン)
- セッション内の呼び出し間での状態の永続化
あまり適さない用途:
- 計画、ファイル管理、サブエージェントへの委任を任せたい場合(代わりに 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 にはミドルウェアはありません。動作はノードとエッジに直接組み込みます。