powered by TechFeed
表示モード
Deep Dive

LangGraphが3年・月間6,500万DLで証明した「AIエージェントをグラフ構造で設計する」本質 — どこをモデルに任せ、どこをコードで固めるか

7月22日、LangChainが「3 Years of Graph Engineering with LangGraph」と題した記事を公開した。グラフ構造でAIエージェントを設計する「グラフエンジニアリング」の本質と、LangGraphの3年間の開発で得た実践的な知見が詳しくまとめられている。

7月22日、LangChainが「3 Years of Graph Engineering with LangGraph」と題した記事を公開した。グラフ構造でAIエージェントを設計する「グラフエンジニアリング」の本質と、LangGraphの3年間の開発で得た実践的な知見が詳しくまとめられている。


「グラフエンジニアリング」という言葉の登場

プロンプトエンジニアリング、コンテキストエンジニアリング、ループエンジニアリング——X(旧Twitter)のAIコミュニティは次々と新しい用語を生み出す。今週末話題になったのが「グラフエンジニアリング」だ。

バズワードの是非はともかく、LangChainはこのアプローチを3年前からすでに実践してきた。LangGraphは現在、月間6,500万ダウンロードを超え、スタートアップから大企業まで幅広く採用されている。


グラフがエージェント設計に向いている理由

LangGraphにおけるグラフの構成要素は2つだ。

  • ノード(Node):実際の処理を担う。決定論的なコード、単一のLLM呼び出し、ツール呼び出し、さらには内部ループを持つフル機能のエージェントも配置できる。
  • エッジ(Edge):次の処理への遷移を定義する。固定の遷移と、ノードの出力や状態に基づく条件分岐の両方が使える。

このモデルの本質はステートマシンだ。LLMに全ての判断を委ねるのではなく、「ここはモデルが考える場所」「ここはコードで確実に処理する場所」を明示的に分離できる。

実際のユースケースとして記事が示すのが、3種のサブエージェント(GitHubエージェント、Notionエージェント、Slackエージェント)を束ねるナレッジベースエージェントだ。ワークフローは「分類 → 検索 → 統合」の3段階に固定されている。

モデルは価値を発揮できる箇所だけで推論し、残りはコードが処理する。結果としてコストが下がり、速度が上がり、挙動が予測しやすくなる


3年間の開発で得た知見

エージェントのグラフはDAGにならない

DAG(有向非巡回グラフ)——要するにループのない一方向グラフ——は多くのワークフローエンジンの前提だが、本番エージェントにはループが不可欠だ。失敗したツール呼び出しのリトライ、追加情報の要求、検証後の回答修正、ヒューマンインザループでの一時停止と再開……これらはすべてサイクルを必要とする。

ループエンジニアリングはグラフの代替ではなく、グラフの単純な形の一つに過ぎない。注目すべきは、LangChainフレームワークが提供するシンプルなエージェントループ自体も、内部実装はLangGraphの上に構築されているという点だ。つまりLangGraphはLangChainエコシステムの外側にある別レイヤーではなく、LangChain自身の基盤として採用されている。バズワードとして消費されるには足りない、実績と信頼の裏付けがそこにある。

動的なエッジ遷移が重要になる

すべてのエッジを事前定義できるとは限らない。マップリデュースがその典型例だ。入力を複数の断片に分割し、それぞれワーカーに渡して結果を統合する処理では、ワーカー数が入力に依存するため事前に決められない。

LangGraphはこれをSend APIで解決している。ノードが実行時に1つ以上の下流ノードへ動的にルーティングできる仕組みだ。「リサーチはファンアウトして統合する」という構造は決まっていても、ソースが何件になるかは実行時までわからない——そういった構造の既知性とランタイムの可変性が混在するケースに対応する。

グラフを使うべきでない場面もある

決定論的なパスへの無理な押し込みが逆効果になるケースもある。記事が例に挙げるのはディープリサーチだ。計画・委任・検索・読解・統合が流動的に絡み合うタスクは、事前にパスを定義しにくい。

LangChain自身も初期のディープリサーチをLangGraphのワークフローで構築していたが、後によりエージェントハーネス寄りのコアループに移行した。GPT Researcherも同様に、グラフ型のマルチエージェントパイプラインからDeep Agentsへ切り替えている。


今、何が変わったか

グラフ構造でエージェントを設計すること自体は新しくない。変わったのはノードの中身だ。

初期のノードは決定論的なコードか単一のLLM呼び出しだった。現在はエージェント自体が十分に信頼できるレベルに達したため、ノードの中にフル機能のエージェントを埋め込むパターンが現実的になった。コーディングエージェントはその好例だ。

記事が示すドキュメント管理エージェントの例では、Slackのリクエストからレビュー可能なプルリクエストを生成するワークフローを以下の構成で実現している。

  • 固定ステップ:SlackやLinearの操作はAPIコールで処理
  • モデルステップ:分類と統合はツールなしの単一LLM呼び出し
  • エージェントステップ:リファレンスドキュメントと概念ドキュメントの更新は、それぞれのコードベースに対してオープンエンドに動作するエージェントが担当

この決定論とエージェント性の混在こそが、予測可能性・性能・効率のバランスを生む設計の核心だ。


詳細は3 Years of Graph Engineering with LangGraphを参照していただきたい。