勉強会「【LangChainゆる勉強会#17】LangGraph Prebuilt Agents」を開催しました #StudyCo

ジェネラティブエージェンツの大嶋です。

運営している勉強会コミュニティStudyCoで「【LangChainゆる勉強会#17】LangGraph Prebuilt Agents」というイベントを開催しました。

studyco.connpass.com

アーカイブ動画はこちらです。

www.youtube.com

今回はLangGraphの「Prebuilt Agents」をさわっていきました。

Prebuilt AgentsについてのLangChain公式ブログはこちらです。

blog.langchain.dev

公式ドキュメントはこちらです。

langchain-ai.github.io

今回のポイント

Prebuilt Agentsの概要

LangGraphは自由自在にワークフローを実装できるフレームワークであり、そのカスタマイズ性に強みがあります。

一方で、よくある構成のAIエージェントであっても、LangGraphではゼロからワークフローを組む必要があります。

LangGraphでそのようなよくある構成のAIエージェントを実装したのが「Prebuilt Agents」です。

今回はLangGraphのPrebuilt Agentsの中でも、以下の3つを試していきました。

  • LangGraph Supervisor
  • LangGraph Swarm
  • trustcall

LangGraph Supervisor

LangGraph Supervisorは、Supervisor型のマルチエージェントをPrebuiltとして提供するものです。

github.com

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として提供するものです。

github.com

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で実装されたワークフロー)です。

github.com

LLMに大きなJSONを出力させる場合、以下のような課題が発生しやすいです。

  • 複雑なスキーマを正確に出力するのが難しい(OpenAIのStructured Outputsでもサポートされていないスキーマもある)
  • JSONの一部だけ変更させたい場合に、全体を出力させると無関係な箇所も変更される場合がある

trustcallは内部でJSON Patchを使うことで、LLMに大きなJSON全体ではなく、その一部だけをうまく扱わせるようにしています。

大きなJSONを出力したいケースで参考になる実装だと言えます。

おわりに

以上、LangGraphのPrebuilt Agentsをさわってみました。

LangChain / LangGraph、その他のテーマで引き続き勉強会を開催していきます。 もしも「こんな話が聞きたい」というテーマがあれば、ぜひお声がけください!