Skip to content

LangGraph アーキテクチャ総览

源码版本1.2.9

一言で

LangGraph は Channel + Pregel ループ をカーネルとするステートマシン式エージェントオーケストレーションフレームワークです。StateGraph は構築レイヤでノード/エッジを Pregel の実行可能体へコンパイルし、実行時は PregelLoop.tick が「channel を読む → タスクを调度する → channel へ書く → checkpoint」を収束まで繰り返します。その間 StreamMux でマルチモードのストリーミング出力を行い、interrupt/Command でヒューマンインザループを実現し、BaseCheckpointSaver 系がスレッド単位の永続化を担い、@entrypoint/@task が関数型の等価 API を提供します。

レイヤ構成

各レイヤを一言で

  • 起動と設定:RunnableConfig が thread_id/store/checkpointer を運び、StateSnapshot は get_state が返す不変スナップショットです。
  • Graph 構築:StateGraph がユーザ入口で、add_node/add_edge/add_conditional_edges がトポロジを定義し、compile が CompiledStateGraph(Pregel インスタンス)を産出します。
  • Pregel エンジン:Pregel がコンパイル産物で、stream/invoke/astream が入口。PregelLoop.tick が単ステップを実行し、PregelRunner がタスクを並列実行し、_algo がタスク準備/書き戻し/中断判定を担います。
  • Channel:BaseChannel が update/consume/checkpoint セマンティクスを抽象化し、LastValue はデフォルトの上書き、Topic は pub/sub、Binop は二項演算子の集約です。
  • Checkpoint:BaseCheckpointSaver インターフェースが put/get/list を定義し、InMemory/Sqlite/Postgres の三実装が同期/非同期をサポートします。
  • ストリーミング:StreamMux がマルチモード mux/demux を行い、各 transformer(values/updates/messages/debug/lifecycle/subgraph/checkpoints/tasks)が異なるビューを産出します。
  • 機能 API:@entrypoint が関数を Pregel 実行可能体に変え、@task が並列可能なサブタスクを宣言します。
  • 中断とサブグラフ:interrupt() がヒューマンインザループ中断を起こし、Command(resume/goto/update) がリカバリと遷移を駆動し、Send が fan-out を実現します。

レイヤ分離の動機

LangGraph は「グラフをどう定義するか」(graph 構築)、「どう実行するか」(Pregel)、「状態をどう更新するか」(channel)、「どう永続化するか」(checkpoint)、「どう見るか」(stream)、「関数型でどう等価にするか」(func)、「人とどうやり取りするか」(interrupt)、「どう编排するか」(subgraph) を完全に疎結合にしています。これにより checkpoint バックエンドを変えても実行ロジックに影響せず、stream モードを変えてもグラフ定義に影響せず、中断を追加しても channel を変えずに済みます。Pregel は唯一の中枢で、すべての実行パスは最終的に PregelLoop.tick を経由します。

よくある誤読

  • 「LangGraph は LangChain のグラフラッパー」——違います。独立した Pregel 実行エンジンを持ち、LangChain の chain/agent 抽象に依存せず単独で使えます。
  • 「channel は state のこと」——channel は状態の更新セマンティクス層です。異なる channel 型(LastValue/Topic/Binop)が状態のマージ方法を決める点が、普通のステートマシンより強力です。
  • 「@entrypoint は StateGraph の糖衣構文」——機能は等価ですが実装は異なります。func API は FunctionalAPI パスを経由し最終的に Pregel にコンパイルされますが、並列と join のセマンティクスは通常の関数に近いです。

推薦読書順序

まず 起動と設定 を読み、次に StateGraphPregel エンジン を読み、その後 PregelLoop tickChannelCheckpointストリーミング機能 API中断とリカバリサブグラフ编排 の順に下へ展開してください。

公式資料:LangGraph ドキュメント · GitHub