Re Reference AI

エージェント

マルチエージェントとは

Multi-Agent System / マルチエージェントシステム

複数のAIエージェントが役割を分担し、協調・連携しながらタスクを遂行するアーキテクチャ

エージェント協調

ひとことで言うと

複数のAIエージェントが役割分担して、協力しながら作業を進める仕組み。

概要

マルチエージェント(Multi-Agent System)とは、単一のエージェントに全ての判断を任せるのではなく、それぞれ異なる役割や専門性を持つ複数のAIエージェントを組み合わせ、協調・分業させながら1つの大きなタスクを遂行させるアーキテクチャ。 全体の計画を立てる役割のエージェント、情報を調査する役割のエージェント、コードを書く役割のエージェント等に分業させ、それぞれの出力を統合することで、単一のエージェントに全てを任せるより複雑なタスクに対応しやすくなる。 オーケストレーター(統括役)となるエージェントが他のエージェントへタスクを振り分ける構成が代表的なパターンの1つ。 エージェント間の連携方式には、1つの司令塔役が他を統率する階層型のほか、対等な立場のエージェント同士が議論しながら合意形成する形式など複数のパターンがあり、CrewAIAutoGenといったフレームワークが実装を提供している。

背景

単一のエージェントに複雑なタスクを全て任せると、コンテキストが肥大化したり役割ごとの専門性を発揮しにくくなったりする課題があった。 マルチエージェントは、人間の組織が役割分担によって複雑な業務をこなすのと同様の発想で、エージェントを機能ごとに分割し協調させることで、この課題に対処するため考案された。

アーキテクチャ

代表的な構成として、1つの統括エージェント(オーケストレーター)が全体の計画を立て、専門化された複数のサブエージェントへタスクを振り分ける「階層型」や、エージェント同士が対等な立場でメッセージをやり取りしながら合意形成する「協調型」がある。 エージェント間の連携には、A2Aのような標準プロトコルや、共有のメモリ・メッセージキューが用いられることもある。

ワークフロー

オーケストレーターがタスクを分析し全体計画を立案 → 役割ごとのサブエージェントへタスクを振り分け → 各サブエージェントが並行または逐次に処理を実行 → 結果をオーケストレーターが統合し最終出力を生成する。

コード例

CrewAIで役割分担したマルチエージェントを構築する

from crewai import Agent, Task, Crew

researcher = Agent(
    role="Researcher",
    goal="最新のAI動向を調査する",
    backstory="AI分野に詳しいリサーチャー",
)
writer = Agent(
    role="Writer",
    goal="調査結果を分かりやすくまとめる",
    backstory="テクニカルライター",
)

research_task = Task(description="LLMの最新動向を調べる", agent=researcher)
writing_task = Task(description="調査結果をブログ記事にまとめる", agent=writer)

crew = Crew(agents=[researcher, writer], tasks=[research_task, writing_task])
result = crew.kickoff()

利点

欠点

比較

  • AIエージェントマルチエージェントは、複数のAIエージェントを組み合わせたアーキテクチャ
  • A2AA2Aは、異なる開発元のエージェントを組み合わせたマルチエージェント構成を実現するための標準プロトコルの1つ
  • プランナーマルチエージェント構成では、全体の計画を立てるプランナー役のエージェントを置くことが多い
  • LangGraphLangGraphは、マルチエージェント構成を実装するための代表的なフレームワークの1つ
  • CrewAICrewAIは、役割ベースのマルチエージェントシステムを構築するための代表的なフレームワーク
  • AutoGenAutoGenは、対話ベースのマルチエージェントシステムを構築するための代表的なフレームワーク

関連用語

AIエージェントA2AプランナーエージェンティックAILangGraphCrewAIAutoGenオーケストレーターサブエージェント

よくある質問

マルチエージェントは常に単一エージェントより優れている?

一概には言えない。 タスクが単純な場合は単一エージェントの方がシンプルで済み、複雑で役割分担の効果が大きいタスクほどマルチエージェントの利点が出やすい。

マルチエージェントの連携はどう実装する?

共有のメッセージキューやブラックボード(共有メモリ)を介する方法、A2Aのような標準プロトコルを使う方法、CrewAIAutoGen等のフレームワークが提供する組み込みの連携機構を使う方法がある。

参考文献

関連Zenn記事