参考になる複数エージェント+MCPのサンプルです。
この記事の内容
- Microsoftが公開した「Azure AI Travel Agents」サンプルプロジェクトを紹介します
- MCPを活用した複数AIエージェント連携(マルチエージェント)のアーキテクチャを解説します
- LlamaIndex.tsによるオーケストレーションと、各エージェントの役割を説明します
- .NET・Python・Javaなどポリグロット構成のツール群がどう連携するかを解説します
- ローカル環境で無料で試せる方法についても触れます
はじめに:複数のAIエージェントが連携する旅行プランニングシステム
AI技術の進化に伴い、単一のAIだけでなく、複数のAIエージェントが協調して複雑なタスクを処理する「マルチエージェントシステム」が注目されています。今回は、Microsoftが公開したサンプルプロジェクト「Azure AI Travel Agents」を紹介します。このプロジェクトは、複数のAIエージェントが連携して旅行プランを作成するシステムであり、マルチエージェントシステムの構築に興味がある開発者にとって非常に参考になる内容です。
Azure AI Travel Agentsとは?
「Azure AI Travel Agents」は、旅行に関するさまざまなリクエストに応えるAIエージェントのサンプルアプリケーションです。最大の特徴は、MCP(Model Context Protocol) を活用し、複数のエージェントが協調して動作する点にあります。
たとえば、ユーザーが「フランスのパリから10日間、予算5000ユーロで旅行プランを立てて」といったリクエストを投げると、システム内の各エージェントがそれぞれの役割に基づき、情報収集・プランニング・提案などを連携して行い、最適な旅行プランを生成します。
ローカル環境で手軽に試せるデモ
このサンプルは、Azure Container Appsを使用した本格的な構成だけでなく、自身のPC上で無料で動作させることも可能です。Azure環境がない方でも、手軽にマルチエージェントシステムの挙動を試し、ソースコードを読んで学習することができます。
ただし、ローカルのデモ環境では、実際のフライト情報やホテル情報を取得するのではなく、あらかじめ用意されたモックデータ(ダミーデータ)を使用する点にご注意ください。
システムのアーキテクチャ
このシステムのアーキテクチャは、Web UI・Web API・エージェントワークフローサービス、そして複数のツール群で構成されています。
ユーザーはWeb UIを通じてリクエストを送信し、APIを介してエージェントのワークフローが起動します。ワークフロー内では、5つの異なる役割を持つエージェントが、5つの専用ツール(MCPクライアント経由でアクセス)を駆使してタスクを処理します。
特筆すべきは、各ツールが.NET・Python・Javaなど、異なるプログラミング言語で構築されている点です。これは、既存の多様なツールやシステムを連携させる現実的なシナリオを想定した設計と言えます。
LlamaIndex.tsによるAIエージェントのオーケストレーション
システムの中核となるAIエージェントの連携(オーケストレーション)には、エージェントフレームワークであるLlamaIndex.tsが採用されています。Node.jsのバックエンド上で構築されており、エージェント間のインテリジェントなやり取りを管理します。
タスクの振り分け(デリゲーション)
最初に「トリアージエージェント」がユーザーのリクエストを分析し、日程作成・目的地提案など、タスクに応じて最適なエージェントに仕事を割り振ります。
エージェント間の連携(コーディネーション)
LlamaIndex.tsが会話の文脈(コンテキスト)を維持することで、「複数の都市を巡る」といった複雑な問い合わせに対しても、一貫性のある応答が可能になります。
LLMとの統合
Azure OpenAI・OpenAI、またはローカルで動作するLLMなど、さまざまな大規模言語モデルと柔軟に接続できます。
MCP(Model Context Protocol)によるデータとツールの供給
MCP(Model Context Protocol) は、エージェントにリアルタイムのデータと外部ツールへのアクセスを提供するエンジンとしての役割を担います。
リアルタイムデータの提供
「Webサーチエージェント」がBing検索などを通じて、最新の旅行トレンドや情報を取得します。
多様なツールへのアクセス
顧客の感情を分析する.NET製の「感情分析ツール」、旅行スケジュールを立てるPython製の「旅行プランナー」、行き先を提案するJava製の「おすすめツール」など、さまざまなツールに接続します。
このように、MCPがエージェントの能力を拡張し、LlamaIndex.tsがエージェント間の連携を司ることで、高度なタスク処理を実現しています。
Azure Container Appsによるスケーラビリティと回復性
本番環境での運用を想定し、Azure Container Appsをインフラ基盤として採用しています。これにより、モダンなアプリケーションに求められる拡張性と回復性を確保しています。
動的なスケーリング
トラフィックの増減に応じてコンテナインスタンスを自動で調整し、予約が急増しても安定したサービスを提供できます。
ポリグロット・マイクロサービス対応
.NET・Python・Java・Node.jsなどで作られた各ツールを、それぞれ個別のコンテナとして実行できます。
高度な可観測性(Observability)
トレーシング・メトリクス・ログ収集機能が統合されており、システムの状況をリアルタイムで監視できます。
各エージェントの役割
このサンプルでは、以下の5つのエージェントが連携して動作します。
| エージェント | 役割 | 使用ツール |
|---|---|---|
| トリアージエージェント | ユーザーの問い合わせを分析し、適切なエージェントにタスクを振り分ける司令塔 | — |
| カスタマークエリーエージェント | 顧客の感情や意図を分析 | .NET製ツール |
| 目的地提案エージェント | ユーザーの好みに合った旅行先を提案 | Java製ツール |
| 日程プランニングエージェント | 効率的な旅行の日程を作成 | Python製ツール |
| Webサーチエージェント | Bing検索を通じてリアルタイムのデータを取得 | Bing検索 |
これらのエージェントがMCPとAzure Container Appsの能力を活用し、応答性が高く正確な結果をユーザーに提供します。
まとめ
「Azure AI Travel Agents」は、マルチエージェントシステムのアーキテクチャ・LlamaIndex.tsによるオーケストレーション・MCPによるツール連携など、実践的な知見が詰まった優れた学習教材です。
特に以下の点が、このサンプルから得られる重要な学びと言えます。
- MCPを使うことで、異なる言語で実装されたツールをエージェントに統一的に接続できる
- LlamaIndex.tsがエージェント間の文脈管理とタスク振り分けを担うことで、複雑なワークフローを整理できる
- Azure Container Appsを使えば、ポリグロット構成のマイクロサービスをスケーラブルに運用できる
ソースコードはGitHubリポジトリで公開されており、ローカル環境でも手軽に実行して動作を確認できます。マルチエージェントシステムの設計・実装に取り組む方は、ぜひ参考にしてみてください。