Re Reference AI

エージェント

LangGraphとは

状態遷移をグラフとして定義し、複雑なマルチエージェントアプリケーションを構築するフレームワーク

フレームワークマルチエージェント

ひとことで言うと

AIエージェントの複雑な動きを、図(グラフ)のように設計できるフレームワーク。

概要

LangGraphとは、LangChainのチームが開発した、LLMアプリケーションの処理フローをグラフ(ノードとエッジ)として定義できるフレームワーク。 処理を直線的に連結するLangChainのチェーンと異なり、条件分岐・ループ・複数エージェント間の状態共有といった、より複雑な制御フローを明示的に表現できる点が特徴で、マルチエージェントシステムや長時間状態を保持するエージェントの構築に用いられる。 各ノードの状態を永続化する仕組みも備えており、処理の途中経過を保存して後から再開したり、人間の承認を挟んでから次のステップへ進める人間参加型のフローも構築しやすい。 エージェントの挙動が複雑化しループや条件分岐が増えるほど、LangChainのチェーンだけでは表現しづらくなるため、LangGraphはより本格的なエージェントシステムを構築する際の選択肢として使われる。

背景

自律的なエージェントの処理フローは、単純な直線的な処理の連結だけでは表現しきれない、条件分岐やループ、複数の主体間でのやり取りを伴うことが多い。 LangGraphは、こうした複雑な制御フローをグラフ構造として明示的に定義・管理できるよう開発された。

歴史

2024年: LangChainのチームがLangGraphを公開し、状態を持つ複雑なエージェントアプリケーション構築向けのフレームワークとして展開している。

アーキテクチャ

アプリケーションの各処理ステップをノードとして定義し、ノード間の遷移条件をエッジとして表現するグラフ構造でアプリケーション全体を構築する。 グラフ全体で共有される状態(State)をノード間で読み書きしながら処理を進める。

コード例

StateGraphによる最小構成(概念例)

from typing import TypedDict
from langgraph.graph import StateGraph, END

class State(TypedDict):
    count: int

def increment(state: State) -> State:
    return {"count": state["count"] + 1}

graph = StateGraph(State)
graph.add_node("increment", increment)
graph.set_entry_point("increment")
graph.add_edge("increment", END)

app = graph.compile()
print(app.invoke({"count": 0}))

利点

  • 条件分岐・ループ・並列処理など、複雑な制御フローを明示的なグラフとして表現できる
  • 複数エージェント間で状態を共有するマルチエージェント構成を構築しやすい
  • 状態の永続化機能により、処理の途中経過を保存し後から再開できる

欠点

  • 単純なタスクに対しては、グラフ構造を定義する分オーバーヘッドが大きく感じられやすい
  • LangChainのエコシステムに関する前提知識を要する場合がある
  • グラフが複雑になるほど、状態遷移の全体像を把握するための設計・可視化の工夫が必要になる

比較

  • LangChainLangGraphは、LangChainのチームが開発した、より複雑な状態管理を伴うエージェント構築向けの派生フレームワーク
  • マルチエージェントLangGraphは、マルチエージェント構成を実装するための代表的なフレームワークの1つ
  • CrewAILangGraphとCrewAIは、いずれもマルチエージェントアプリケーションを構築するためのフレームワーク
  • Semantic KernelLangGraphがグラフ構造による明示的な状態遷移の制御を軸にするのに対し、Semantic KernelはLLM統合SDKの一部としてマルチエージェント機能を提供する

関連用語

LangChainマルチエージェントCrewAIAIエージェントSemantic KernelAgent Development KitOpenAI Agents SDK

よくある質問

LangGraphはLangChainがなくても使える?

LangChainのコンポーネントと組み合わせて使うことが多いが、LangGraph単体でもグラフベースのアプリケーションを構築できる。

LangGraphで人間の承認を挟めるか?

処理を任意のノードで一時停止し、人間の確認・承認を経てから次のステップへ進める人間参加型(Human-in-the-loop)のフローを組み込める。

参考文献

関連する比較

LangChain vs LangGraph

LangChainはLLMアプリケーションの部品を組み合わせて直線的な処理(チェーン)を構築するフレームワーク、LangGraphは同じチームが開発した、状態遷移をグラフとして表現し条件分岐・ループ・マルチエージェントに対応するフレームワーク。

LangChainLangGraph

CrewAI vs LangGraph

CrewAIは役割を与えた複数のAIエージェントに協調してタスクを遂行させるPythonのマルチエージェントフレームワーク。LangGraphは状態遷移をグラフとして定義し、複雑なマルチエージェントアプリケーションを構築するLangChainエコシステムのフレームワーク。

CrewAILangGraph

LangGraph vs Semantic Kernel

LangGraphはLangChainのチームが開発する、状態遷移をグラフとして定義するマルチエージェントフレームワーク。Semantic Kernelは、Microsoftが提供するLLM統合SDKで、マルチエージェントのオーケストレーション機能も備える。

LangGraphSemantic Kernel

関連Zenn記事