
(上の画像をクリックすると、このレッスンのビデオが視聴できます)
マルチエージェント設計パターン
複数のエージェントを含むプロジェクトに取り組み始めると、マルチエージェント設計パターンを考慮する必要があります。しかし、いつマルチエージェントに切り替えるべきか、その利点が何かはすぐには明確にならないかもしれません。
はじめに
このレッスンでは、以下の質問に答えることを目指します:
- マルチエージェントが適用されるシナリオとは?
- 単一のエージェントが複数のタスクを処理する場合と比べて、マルチエージェントを使用する利点は何か?
- マルチエージェント設計パターンを実装するための構成要素とは?
- 複数のエージェントがどのように相互作用しているかをどのように可視化するか?
学習目標
このレッスンの後、以下ができるようになります:
- マルチエージェントが適用されるシナリオを特定する
- 単一エージェントよりもマルチエージェントを使用する利点を認識する
- マルチエージェント設計パターンを実装するための構成要素を理解する
全体像は?
マルチエージェントは、複数のエージェントが協力して共通の目標を達成するための設計パターンです。
このパターンは、ロボティクス、自律システム、分散コンピューティングなど、さまざまな分野で広く使用されています。
マルチエージェントが適用されるシナリオ
では、どのようなシナリオがマルチエージェントの使用に適しているのでしょうか?答えは、多くのシナリオでマルチエージェントの使用が有益であるということです。特に以下の場合が挙げられます:
- 大規模な作業負荷: 大規模な作業負荷は小さなタスクに分割され、異なるエージェントに割り当てることで並列処理が可能になり、処理が速くなります。例えば、大量のデータ処理タスクがこれに該当します。
- 複雑なタスク: 複雑なタスクも、大規模な作業負荷と同様に小さなサブタスクに分割され、それぞれのタスクに特化したエージェントに割り当てることができます。例えば、自動運転車では、ナビゲーション、障害物検知、他の車両との通信を管理するエージェントがそれぞれ存在します。
- 多様な専門知識: 異なるエージェントが多様な専門知識を持つことで、単一のエージェントよりも効率的にタスクの異なる側面を処理できます。例えば、医療分野では、診断、治療計画、患者モニタリングを管理するエージェントがそれぞれ存在します。
単一エージェントよりもマルチエージェントを使用する利点
単一エージェントシステムは単純なタスクには適しているかもしれませんが、より複雑なタスクにはマルチエージェントを使用することでいくつかの利点があります:
- 専門性: 各エージェントが特定のタスクに特化できます。単一エージェントでは、すべてをこなせるものの、複雑なタスクに直面した際に混乱する可能性があります。例えば、適切でないタスクを処理してしまうことがあります。
- スケーラビリティ: システムを拡張する際、単一エージェントを過負荷にするよりも、エージェントを追加する方が簡単です。
- フォールトトレランス: 1つのエージェントが故障しても、他のエージェントが機能を続けることでシステムの信頼性を確保できます。
例として、ユーザーの旅行を予約する場合を考えてみましょう。単一エージェントシステムでは、フライトの検索からホテルやレンタカーの予約まで、旅行予約プロセスのすべての側面を処理する必要があります。これを単一エージェントで実現するには、これらすべてのタスクを処理するツールを持つ必要があります。しかし、これにより、保守や拡張が難しい複雑で一枚岩的なシステムが生まれる可能性があります。一方、マルチエージェントシステムでは、フライト検索、ホテル予約、レンタカー予約に特化した異なるエージェントを持つことができます。これにより、システムはよりモジュール化され、保守が容易で、拡張性も向上します。
これは、家族経営の旅行代理店とフランチャイズ型の旅行代理店を比較するようなものです。家族経営の代理店では、1人のエージェントが旅行予約プロセスのすべての側面を処理しますが、フランチャイズ型では、異なるエージェントが異なる側面を処理します。
マルチエージェント設計パターンを実装するための構成要素
マルチエージェント設計パターンを実装する前に、このパターンを構成する要素を理解する必要があります。
再び、ユーザーの旅行を予約する例を見てみましょう。この場合、構成要素には以下が含まれます:
- エージェント間の通信: フライト検索、ホテル予約、レンタカー予約のエージェントが、ユーザーの好みや制約に関する情報を共有し、通信する必要があります。この通信のプロトコルや方法を決定する必要があります。具体的には、フライト検索エージェントがホテル予約エージェントと通信して、ホテルがフライトの日程に合わせて予約されるようにする必要があります。つまり、どのエージェントが情報を共有し、どのように共有するかを決定する必要があります。
- 調整メカニズム: エージェントは、ユーザーの好みや制約を満たすために行動を調整する必要があります。例えば、ユーザーの好みとして「空港に近いホテルを希望する」というものがあり、制約として「レンタカーは空港でしか利用できない」というものがある場合、ホテル予約エージェントはレンタカー予約エージェントと調整して、ユーザーの好みや制約を満たす必要があります。つまり、エージェントがどのように行動を調整するかを決定する必要があります。
- エージェントのアーキテクチャ: エージェントは、ユーザーとのやり取りから意思決定を行い、学習するための内部構造を持つ必要があります。例えば、フライト検索エージェントは、ユーザーにどのフライトを推奨するかを決定するための内部構造を持つ必要があります。つまり、エージェントがどのように意思決定を行い、ユーザーとのやり取りから学習するかを決定する必要があります。例えば、フライト検索エージェントが過去の好みに基づいてユーザーにフライトを推奨するために機械学習モデルを使用することが考えられます。
- マルチエージェントの相互作用の可視性: 複数のエージェントがどのように相互作用しているかを可視化する必要があります。これには、エージェントの活動や相互作用を追跡するためのツールや技術が必要です。これには、ログ記録やモニタリングツール、可視化ツール、パフォーマンス指標が含まれる場合があります。
- マルチエージェントパターン: マルチエージェントシステムを実装するためのさまざまなパターンがあります。例えば、集中型、分散型、ハイブリッド型のアーキテクチャがあります。ユースケースに最適なパターンを選択する必要があります。
- 人間の介入: 多くの場合、人間が介入する場面があり、エージェントに人間の介入を求めるタイミングを指示する必要があります。例えば、エージェントが推奨しなかった特定のホテルやフライトをユーザーが要求する場合や、フライトやホテルを予約する前に確認を求める場合などです。
マルチエージェントの相互作用の可視性
複数のエージェントがどのように相互作用しているかを可視化することは重要です。この可視性は、デバッグ、最適化、システム全体の効果を確保するために不可欠です。これを実現するためには、エージェントの活動や相互作用を追跡するためのツールや技術が必要です。これには、ログ記録やモニタリングツール、可視化ツール、パフォーマンス指標が含まれます。
例えば、ユーザーの旅行を予約する場合、各エージェントのステータス、ユーザーの好みや制約、エージェント間の相互作用を表示するダッシュボードを用意することができます。このダッシュボードには、ユーザーの旅行日程、フライトエージェントが推奨するフライト、ホテルエージェントが推奨するホテル、レンタカーエージェントが推奨するレンタカーが表示されます。これにより、エージェントがどのように相互作用しているか、ユーザーの好みや制約が満たされているかを明確に把握できます。
以下の各側面を詳しく見ていきましょう。
- ログ記録とモニタリングツール: 各エージェントが行ったアクションをログに記録します。ログエントリには、アクションを行ったエージェント、行ったアクション、アクションが行われた時間、アクションの結果に関する情報が含まれます。この情報は、デバッグや最適化などに使用できます。
- 可視化ツール: 可視化ツールは、エージェント間の相互作用を直感的に把握するのに役立ちます。例えば、エージェント間の情報の流れを示すグラフを作成することができます。これにより、ボトルネックや非効率性、その他のシステム上の問題を特定するのに役立ちます。
- パフォーマンス指標: パフォーマンス指標は、マルチエージェントシステムの効果を追跡するのに役立ちます。例えば、タスクを完了するのにかかった時間、単位時間あたりに完了したタスクの数、エージェントが行った推奨の正確性などを追跡することができます。この情報は、改善点を特定し、システムを最適化するのに役立ちます。
マルチエージェントパターン
マルチエージェントアプリを作成するために使用できる具体的なパターンをいくつか見ていきましょう。以下は、検討する価値のある興味深いパターンです:
グループチャット
このパターンは、複数のエージェントが互いに通信できるグループチャットアプリケーションを作成したい場合に役立ちます。このパターンの典型的なユースケースには、チームコラボレーション、カスタマーサポート、ソーシャルネットワーキングが含まれます。
このパターンでは、各エージェントがグループチャット内のユーザーを表し、メッセージングプロトコルを使用してエージェント間でメッセージが交換されます。エージェントはグループチャットにメッセージを送信し、グループチャットからメッセージを受信し、他のエージェントからのメッセージに応答できます。
このパターンは、すべてのメッセージが中央サーバーを介してルーティングされる集中型アーキテクチャ、またはメッセージが直接交換される分散型アーキテクチャを使用して実装できます。

ハンドオフ
このパターンは、複数のエージェントがタスクを互いに引き継ぐアプリケーションを作成したい場合に役立ちます。
このパターンの典型的なユースケースには、カスタマーサポート、タスク管理、ワークフローの自動化が含まれます。
このパターンでは、各エージェントがタスクまたはワークフロー内のステップを表し、エージェントは事前に定義されたルールに基づいてタスクを他のエージェントに引き継ぐことができます。

協調フィルタリング
このパターンは、複数のエージェントが協力してユーザーに推奨を行うアプリケーションを作成したい場合に役立ちます。
複数のエージェントが協力する理由は、各エージェントが異なる専門知識を持ち、推奨プロセスに異なる方法で貢献できるからです。
例えば、ユーザーが株式市場で購入するのに最適な株を推奨してほしい場合を考えてみましょう。
- 業界の専門家: 1つのエージェントは特定の業界の専門家である可能性があります。
- テクニカル分析: 別のエージェントはテクニカル分析の専門家である可能性があります。
- ファンダメンタル分析: さらに別のエージェントはファンダメンタル分析の専門家である可能性があります。これらのエージェントが協力することで、ユーザーにより包括的な推奨を提供できます。

シナリオ: 返金プロセス
顧客が商品の返金を求めているシナリオを考えてみましょう。このプロセスには多くのエージェントが関与する可能性がありますが、このプロセスに特化したエージェントと、他のプロセスでも使用できる一般的なエージェントに分けてみましょう。
返金プロセスに特化したエージェント:
以下は、返金プロセスに関与する可能性のあるエージェントの例です:
- 顧客エージェント: このエージェントは顧客を表し、返金プロセスを開始する役割を担います。
- 販売者エージェント: このエージェントは販売者を表し、返金を処理する役割を担います。
- 支払いエージェント: このエージェントは支払いプロセスを表し、顧客への返金を処理する役割を担います。
- 解決エージェント: このエージェントは解決プロセスを表し、返金プロセス中に発生する問題を解決する役割を担います。
- コンプライアンスエージェント: このエージェントはコンプライアンスプロセスを表し、返金プロセスが規制やポリシーに準拠していることを確認する役割を担います。
一般的なエージェント:
これらのエージェントは、ビジネスの他の部分でも使用できます。
- 配送エージェント: このエージェントは配送プロセスを表し、商品を販売者に返送する役割を担います。このエージェントは、返金プロセスだけでなく、例えば購入時の商品配送にも使用できます。
- フィードバックエージェント: このエージェントはフィードバックプロセスを表し、顧客からのフィ
顧客サポートプロセスのためのマルチエージェントシステムを設計します。プロセスに関与するエージェント、それぞれの役割と責任、そしてそれらがどのように相互作用するかを特定してください。顧客サポートプロセスに特化したエージェントだけでなく、ビジネスの他の部分でも使用できる一般的なエージェントも考慮してください。
読む前に少し考えてみてください。必要なエージェントは思ったより多いかもしれません。
TIP: 顧客サポートプロセスの異なる段階を考慮し、またシステムに必要なエージェントも検討してください。
解決策
解決策
知識チェック
質問: マルチエージェントを使用するべきタイミングは?
解決策クイズ
まとめ
このレッスンでは、マルチエージェントデザインパターンについて学びました。具体的には、マルチエージェントが適用されるシナリオ、単一エージェントよりもマルチエージェントを使用する利点、マルチエージェントデザインパターンを実装するための構成要素、そして複数のエージェントがどのように相互作用しているかを可視化する方法についてです。
マルチエージェントデザインパターンについてさらに質問がありますか?
Azure AI Foundry Discordに参加して、他の学習者と交流したり、オフィスアワーに参加したり、AIエージェントに関する質問に答えてもらいましょう。
追加リソース
前のレッスン
計画設計
次のレッスン
AIエージェントにおけるメタ認知
免責事項:
この文書はAI翻訳サービスCo-op Translatorを使用して翻訳されています。正確性を追求しておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があります。元の言語で記載された文書が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用に起因する誤解や誤った解釈について、当方は責任を負いません。