AI アプリケーションフレームワーク · 03

LangGraph の詳細解説· ステートフルなマルチエージェントの複雑なアプリケーションを構築する

グラフベースの Agent オーケストレーションフレームワーク。積み木のように簡単!

FRAMEWORK MAP
LangGraph の詳細解説
ステートフルなマルチエージェントの複雑なアプリケーションを構築する
グラフベースの Agent オーケストレーションフレームワーク。積み木のように簡単!
一言で要約

LangGraph は Graph ベースのエージェントオーケストレーションフレームワークで、状態を持つ複数ノードのループ実行型の複雑なアプリケーション構築向けに設計されており、条件分岐、並列実行、人間による介入などの高度な機能をサポートします。

1. LangGraph とは何ですか?

LangGraph はグラフ(Graph)ベースのエージェントオーケストレーションフレームワークで、構築専用ですステートフルマルチノードループ実行の複雑なアプリケーション向けに設計されています。コアとなる3要素:LLM/Agent · Graph(グラフ構造) · State(状態)

  • グラフ構造に基づいて編成し、柔軟にフローを制御する
  • ループ、条件分岐、並列実行をサポート
  • 組み込みの状態管理、長期記憶をサポート
  • Human in the loop による人間の介入をサポート
  • 拡張性が高く、複雑なマルチエージェントシステムに適しています

2. コア概念

Graph(グラフ)

ノード(Node)とエッジ(Edge)で構成され、実行フローを定義する

ノード(ノード)

具体的なタスクを実行する単位。LLM 呼び出し、ツール呼び出し、またはカスタムロジックにすることができる

Edge(エッジ)

ノード間の接続を定義し、条件分岐または無条件分岐にすることができます

State(状態)

グラフ実行中に維持されるグローバル状態で、すべてのノードで共有される

Checkpoint(チェックポイント)

実行状態を保存し、復元と履歴の追跡をサポートする

Agent(インテリジェントエージェント)

グラフベースで構築されたステートフルなエージェント

3. 実行フロー(グラフ実行エンジン)

入力
Input
初期状態
State
実行ノード
Node
更新ステータス
Update
条件判断
Edge
次のノード
Next Node
終了
End
終了条件が満たされるまで、ループして実行する
エッジ(Edge)型
  • Direct Edge無条件エッジ:A → B
  • Conditional Edge条件付きエッジ: A → C(with condition)
条件付き境界の例(JSON)
{
  "from": "agent",
  "condition": "state['next']",
  "edges": {
    "continue": "tools",
    "end": "end"
  }
}

4. 代表的な適用シナリオ

複雑な会話システム

複数ターンの対話、コンテキスト記憶、ツール呼び出しをサポート

マルチエージェント協調

複数のAgentが連携して複雑なタスクを完了し、役割分担が明確

ワークフロー自動化

複雑なフローを自動化し、手動介入を減らす

意思決定と計画のシナリオ

状態ベースの意思決定と計画タスク処理

5. コード例:シンプルな LangGraph を構築する

from langgraph.graph import StateGraph, END
from typing import TypedDict, Annotated, List, Dict, Any

# 1. 状態を定義
class AgentState(TypedDict):
    messages: Annotated[List[Dict[str, Any]], "メッセージ履歴"]
    next: str
    result: str

# 2. グラフを作成
graph = StateGraph(AgentState)

async def agent(state: AgentState):
    # LLM を呼び出してユーザー入力を分析
    return {"next": "tools"}

async def tools(state: AgentState):
    # 外部ツールを呼び出す
    return {"result": "ツールの実行結果"}

async def review(state: AgentState):
    # 結果を確認し、終了するか判断
    if "完了" in state["result"]:
        return {"next": END}
    return {"next": "agent"}

# 3. ノードを追加
graph.add_node("agent", agent)
graph.add_node("tools", tools)
graph.add_node("review", review)

# 4. エッジを追加
graph.set_entry_point("agent")
graph.add_edge("agent", "tools")
graph.add_edge("tools", "review")
graph.add_conditional_edges("review", lambda x: x["next"])

# 5. グラフをコンパイル
app = graph.compile()
状態定義
ノード関数
フロー定義
ループをサポート
条件分岐をサポートする
視覚化された状態

6. 高度な機能

状態の永続化

Memory、SQLite、PostgreSQL、Redis など

チェックポイント機構

任意のチェックポイントから実行を再開できます

人手による介入

Human in the loop — プロセスに人間によるレビューのノードを挿入できます

並列実行

複数ノードの並列処理をサポートし、効率を向上させる

ビジュアルデバッグ

グラフィカルなサポートを提供し、デバッグやフローの理解を容易にする

マルチエージェント対応

マルチエージェント協働の複雑なシステムを簡単に構築する

7. 他のフレームワークとの比較

フレームワーク実行モデル状態管理プロセス制御拡張可能適用シーン可視化
LangChainリニアチェーンシンプルな状態固定フロー中程度シンプルなアプリケーション限定的
LangGraphグラフ構造組み込み状態柔軟(グラフ+条件)複雑なアプリケーション/ワークフロー組み込みサポート
AutoGPT単一エージェントのループ中程度ループ実行中程度自律的なタスク実行なし
MetaGPTマルチエージェント協調中程度ロールベース実行中程度チーム協働タスク限定的

8. エコシステムと統合

モデル
OpenAIAnthropicLlama 3
ツール
検索計算機API
保存
SQLitePostgreSQLRedis
監視/デプロイ
LangSmithログ追跡DockerFastAPI

9. 実例 & オープンソースプロジェクト