ジェネラティブエージェンツの大嶋です。
運営している勉強会コミュニティStudyCoで「【LangChainゆる勉強会#17】LangGraph Prebuilt Agents」というイベントを開催しました。
アーカイブ動画はこちらです。
今回はLangGraphの「Prebuilt Agents」をさわっていきました。
Prebuilt AgentsについてのLangChain公式ブログはこちらです。
公式ドキュメントはこちらです。
今回のポイント
Prebuilt Agentsの概要
LangGraphは自由自在にワークフローを実装できるフレームワークであり、そのカスタマイズ性に強みがあります。
一方で、よくある構成のAIエージェントであっても、LangGraphではゼロからワークフローを組む必要があります。
LangGraphでそのようなよくある構成のAIエージェントを実装したのが「Prebuilt Agents」です。
今回はLangGraphのPrebuilt Agentsの中でも、以下の3つを試していきました。
- LangGraph Supervisor
- LangGraph Swarm
- trustcall
LangGraph Supervisor
LangGraph Supervisorは、Supervisor型のマルチエージェントをPrebuiltとして提供するものです。
Supervisor型のマルチエージェントについては、LangGraphの公式ドキュメントで以下のように図解されています。
画像引用元:https://langchain-ai.github.io/langgraph/tutorials/multi_agent/agent_supervisor/
langgraph-supervisorというパッケージをインストールして、以下のようにcreate_supervisor関数でSupervisor型のマルチエージェントを実装できます。
from langgraph_supervisor import create_supervisor : workflow = create_supervisor( [research_agent, math_agent], model=model, prompt="..." )
LangGraph Swarm
LangGraph Swarmは、Swarm型のマルチエージェントをPrebuiltとして提供するものです。
Swarm型のマルチエージェントについては、LangGraphの公式ドキュメントで以下のように図解されています。
画像引用元:https://langchain-ai.github.io/langgraph/tutorials/multi_agent/multi-agent-collaboration/
langgraph-swarmというパッケージをインストールして、以下のようにcreate_supervisor関数でSupervisor型のマルチエージェントを実装できます。
from langgraph_swarm import create_swarm : alice = create_react_agent( model, [add, create_handoff_tool(agent_name="Bob")], prompt="You are Alice, an addition expert.", name="Alice", ) bob = create_react_agent( model, [create_handoff_tool(agent_name="Alice", description="Transfer to Alice, she can help with math")], prompt="You are Bob, you speak like a pirate.", name="Bob", ) : workflow = create_swarm( [alice, bob], default_active_agent="Alice" )
trustcall
trustcallは、LLMが大きなJSON形式の出力を扱うことを補助するライブラリ(LangGraphで実装されたワークフロー)です。
LLMに大きなJSONを出力させる場合、以下のような課題が発生しやすいです。
- 複雑なスキーマを正確に出力するのが難しい(OpenAIのStructured Outputsでもサポートされていないスキーマもある)
- JSONの一部だけ変更させたい場合に、全体を出力させると無関係な箇所も変更される場合がある
trustcallは内部でJSON Patchを使うことで、LLMに大きなJSON全体ではなく、その一部だけをうまく扱わせるようにしています。
大きなJSONを出力したいケースで参考になる実装だと言えます。
おわりに
以上、LangGraphのPrebuilt Agentsをさわってみました。
LangChain / LangGraph、その他のテーマで引き続き勉強会を開催していきます。 もしも「こんな話が聞きたい」というテーマがあれば、ぜひお声がけください!