LangGraph(ラングラフ)
LangChain社が開発したLLMエージェントのワークフロー構築ライブラリ。有向グラフ(DAG/サイクルグラフ)でエージェントの状態遷移・ツール呼び出し・条件分岐を定義し、複雑なマルチステップ推論を制御可能にする。LangChainエコシステムの中核コンポーネント。
LangGraphとは
LangGraphは、LangChain社が2024年1月に公開したLLMエージェントのワークフロー構築ライブラリである。LLMエージェントの実行フローを有向グラフ(ノード=処理ステップ、エッジ=遷移条件)として定義し、複雑なマルチステップ推論を制御可能にする。LangChainエコシステムの中核として、LangSmith(監視)・LangServe(デプロイ)と統合される。
主な特徴
- 有向グラフベース: ノード(関数/LLM呼び出し/ツール)とエッジ(条件分岐/無条件遷移)でワークフローを定義。DAG(非巡回)だけでなくサイクル(ループ)もサポート
- ステート管理: TypedDictまたはPydanticモデルでグラフ全体の状態を型安全に管理。各ノードは状態の一部を読み書きする
- Human-in-the-Loop: グラフの任意のノードで人間の承認・修正を待つ「中断→再開」パターンを組み込み可能
- チェックポイント: 実行状態をSQLite/PostgreSQL/Redisに永続化。障害時の再開や中断後の継続が可能
- ストリーミング: トークン単位・ノード完了単位のストリーミング出力。リアルタイムUIに対応
- マルチエージェント: 複数のサブグラフを組み合わせてマルチエージェントシステムを構築。Supervisor/Worker パターン等
- LangSmith統合: 実行トレースをLangSmithに自動送信。デバッグ・パフォーマンス分析・A/Bテストが可能
- Python/JS対応: Python(langgraph)とJavaScript/TypeScript(@langchain/langgraph)の2言語で提供
コード例
from langgraph.graph import StateGraph, END
from typing import TypedDict
class AgentState(TypedDict):
messages: list
next_action: str
def call_llm(state: AgentState) -> AgentState:
# LLM呼び出しロジック
return {"messages": state["messages"] + [response], "next_action": "tool"}
def call_tool(state: AgentState) -> AgentState:
# ツール実行ロジック
return {"messages": state["messages"] + [result], "next_action": "end"}
def should_continue(state: AgentState) -> str:
return state["next_action"]
graph = StateGraph(AgentState)
graph.add_node("llm", call_llm)
graph.add_node("tool", call_tool)
graph.add_edge("__start__", "llm")
graph.add_conditional_edges("llm", should_continue, {"tool": "tool", "end": END})
graph.add_edge("tool", "llm")
app = graph.compile()
result = app.invoke({"messages": ["ユーザーの質問"], "next_action": ""})
他フレームワークとの比較
| フレームワーク | 抽象度 | 制御性 | マルチエージェント | 学習コスト | ライセンス |
|---|---|---|---|---|---|
| LangGraph | 低(明示的グラフ) | 高 | ○(サブグラフ) | 中 | MIT |
| AutoGen | 中(会話ベース) | 中 | ○(会話エージェント) | 低 | MIT |
| CrewAI | 高(役割ベース) | 低 | ○(Crew/Task) | 低 | MIT |
| MetaGPT | 高(SOP模倣) | 低 | ○(役割SOP) | 中 | MIT |
ユースケース
- RAGエージェント: 検索→関連性判断→再検索/生成の条件分岐フロー。検索結果が不十分なら自動リトライ
- コード生成エージェント: 生成→テスト実行→エラー修正のループ。テスト全通過で終了
- カスタマーサポート: 意図分類→回答生成→人間承認→送信のHuman-in-the-Loopフロー
- データ分析: SQL生成→実行→結果解釈→追加質問の対話ループ
- マルチエージェントリサーチ: Supervisor→複数Researcher→Synthesizer のグラフ構成
選び方・注意点
- LangChain依存: LangGraphはLangChainエコシステムの一部。LangChainを使っていないプロジェクトでは導入障壁がある
- グラフ定義の冗長性: シンプルなタスクでもノード/エッジの明示的定義が必要。AutoGenやCrewAIの方がコード量は少ない
- デバッグ: グラフが複雑になるとデバッグが困難。LangSmithの利用が事実上必須
- バージョン更新頻度: 2024-2026年で APIが頻繁に変更。ドキュメントとコードの乖離に注意
- LangGraph Cloud: マネージドデプロイサービス(有料)。自前ホスティングも可能だがチェックポイントのインフラ管理が必要
よくある質問(FAQ)
Q1: LangChainなしでLangGraphだけ使える? A: 技術的には可能だが非推奨。LangGraphのノード内でLangChainのChat Models・Tools・Retrieversを使うのが標準パターン。LangChainなしだとツール呼び出しやプロンプト管理を全て自前実装する必要がある。
Q2: LangGraphとLangChainのAgentExecutorの違いは? A: AgentExecutor(旧API)はReAct形式の単一エージェントループのみ。LangGraphは任意のグラフ構造を定義でき、条件分岐・並列実行・サブグラフ・チェックポイントをサポート。2026年時点でLangChain公式もAgentExecutorからLangGraphへの移行を推奨。
Q3: 本番環境で使える成熟度か? A: 2026年時点でv0.2系が安定版。Anthropic・OpenAI・多数のスタートアップが本番利用。ただしAPIの破壊的変更がまだ発生するため、バージョン固定と移行テストが重要。
まとめ
- LangGraphはLLMエージェントのワークフローを有向グラフで定義するLangChain公式ライブラリ
- ループ・条件分岐・Human-in-the-Loop・チェックポイントで複雑なエージェントフローを制御
- LangChainエコシステム(LangSmith/LangServe)との統合が強み
- グラフ定義の冗長性とLangChain依存が注意点