ジェネラティブエージェンツの大嶋です。
「AIエージェントキャッチアップ #14 - LangGraph Agent Protocol」という勉強会を開催しました。
generative-agents.connpass.com
アーカイブ動画はこちらです。
LangGraph Agent Protocol
今回は、LangGraphの「Agent Protocol」について、公式ブログやAPI仕様を読んだりしてみました。
公式ブログはこちらです。
GitHubリポジトリはこちらです。
今回のポイント
Agent Protocolの概要
LangGraphのAgent Protocolは、LLMエージェントの提供方法をフレームワークに依存せず標準化する試みです。
OpenAPIの仕様が以下のページで公開されています。
以下の3つのリソースに対するCRUDや各種操作が定義されています。
- Thread:マルチターンのやりとりをとりまとめる単位
- Run:エージェントの実行単位
- Store:長期記憶
LangGraph Platformはこのプロトコルのスーパーセットを実装しているとのことです。
RunのAPI
例として、「Run」というリソースに対するAPIをいくつかみてみます。
Run、つまりエージェントの実行は、Background・Stream Output・Wait for Outputの3種類で実行できます。 それぞれ以下のようにエンドポイントが用意されています。
- Backgroundで実行するときは
POST /threads/runs
- Stream Outputで実行するときは
POST /threads/runs/stream
- Wait for Outputで実行するときは
POST /threads/runs/wait
これらのエンドポイントにはinterrupt_before
やstream_mode
、stream_subgraphs
といったパラメータがあります。
フレームワークに依存しないプロトコルという趣旨のことも書かれていますが、実際にはかなりLangGraphに特化したプロトコルだと言えます。
E2BのAgent Protocol
「Agent Protocol」と聞いて思い出すのは、E2Bの「Agent Protocol」です。 こちらはかなり以前から公開されているものですが、TaskとStepというリソースが簡単に定義されているのみとなっています。
以前はe2b-devというGitHubのOrganization配下にありましたが、現在は個人のGitHubアカウントのほうに移動されており、あまり継続的なメンテナンスなどもされていないようです。
エージェントの共通的な部分だけをプロトコルにしようとしたところ、かなり薄い内容になってしまい実用性としては難しかったのかもしれません。
これに対してLangGraphのAgent Protocolのほうは、LangGraphに特化している代わりに実用性がある、という印象です。
LangGraphとAutoGenの連携
LangGraphのAgent Protocolに関する公式ブログでは、AutoGenをLangGraphから呼び出し、LangGraph Platformにデプロイするサンプルも紹介されていました。
配信中は動作するところまでいきませんでしたが、しばらくした後確認すると、LangGraph Platformで動いている様子を見ることができました。
実装としてはLangGraphのノード内でAutoGenのエージェントを実行しているだけであり、AutoGenと連携するための特別な処理などがあるわけではありません。
AutoGenをAgent Protocolで動かすためのアダプタとしてLangGraph・LangGraph Platformを使っているということです。
実用的な場面がどれだけあるかは分かりませんが、公式でこのようなサンプルがあること自体は嬉しいですね。
次回のご案内
以上、今回はLangGraphの「Agent Protocol」をキャッチアップしました。
次回は「AIエージェントキャッチアップ #15 - PydanticAI」ということで、Pydanticによるエージェントフレームワーク「PydanticAI」がテーマです!
generative-agents.connpass.com
ご興味・お時間ある方はぜひご参加ください!
また、その次の回以降のテーマも募集しているので、気になるエージェントのOSSなどあれば教えてください!