ai-agents-for-beginners

エージェンティックプロトコルの使用(MCP、A2A、NLWeb)

Agentic Protocols

(上記の画像をクリックして、このレッスンのビデオを視聴できます)

AIエージェントの使用が増えるにつれて、標準化、安全性、オープンイノベーションの支援を保証するプロトコルの必要性も高まっています。このレッスンでは、そのニーズに応えるための3つのプロトコル - Model Context Protocol (MCP)、Agent to Agent (A2A)、およびNatural Language Web (NLWeb)を取り上げます。

はじめに

このレッスンでは以下を学びます:

• MCPがAIエージェントに外部ツールやデータへのアクセスを可能にし、ユーザーのタスクを完了させる方法。

• A2Aが異なるAIエージェント間の通信と協調を可能にする方法。

• NLWebが自然言語インターフェースを任意のウェブサイトに導入し、AIエージェントがコンテンツを発見し対話できるようにする方法。

学習目標

• AIエージェントにおけるMCP、A2A、およびNLWebの基本的な目的と利点を識別する。

• 各プロトコルがLLM、ツール、その他のエージェント間のコミュニケーションと相互作用をどのように促進するかを説明する。

• 複雑なエージェンティックシステム構築において各プロトコルが果たす異なる役割を認識する。

Model Context Protocol

Model Context Protocol (MCP)は、アプリケーションがLLMにコンテキストとツールを標準化された方法で提供するためのオープンスタンダードです。これにより、AIエージェントが一貫した方法で接続できる「ユニバーサルアダプター」が異なるデータソースやツールに対して機能するようになります。

MCPの構成要素、直接API使用と比較した利点、そしてAIエージェントがMCPサーバーをどのように使うかの例を見てみましょう。

MCPのコアコンポーネント

MCPはクライアント-サーバーアーキテクチャ上で動作し、コアコンポーネントは以下のとおりです:

• ホストはLLMアプリケーション(例えばVSCodeのようなコードエディタ)で、MCPサーバーへの接続を開始します。

• クライアントはホストアプリケーション内のコンポーネントで、サーバーとの一対一の接続を維持します。

• サーバーは特定の機能を公開する軽量プログラムです。

プロトコルには、MCPサーバーの機能である三つの主要なプリミティブが含まれています:

• ツール:AIエージェントが呼び出して動作を実行できる個別のアクションや機能です。例えば天気サービスは「天気を取得する」ツール、Eコマースサーバーは「商品を購入する」ツールを公開します。MCPサーバーはそれぞれのツール名、説明、入出力スキーマを機能リストで公開します。

• リソース:MCPサーバーが提供可能な読み取り専用のデータ項目やドキュメントで、クライアントは必要に応じて取得できます。ファイル内容、データベースレコード、ログファイルなどが例です。リソースはテキスト(コードやJSONなど)やバイナリ(画像やPDFなど)です。

• プロンプト:より複雑なワークフローを可能にするために、提案された入力テンプレートが事前定義されています。

MCPの利点

MCPはAIエージェントに大きな利点を提供します:

• 動的ツール検出:エージェントはサーバーから利用可能なツールのリストとその説明を動的に受け取れます。伝統的なAPIでは統合に静的なコーディングが必要なため、APIの変更ごとにコードの更新が求められますが、MCPは「一度統合」するだけで適応性を高めます。

• 異なるLLM間の相互運用性:MCPは複数のLLMで動作し、パフォーマンス向上のためにコアモデルの切り替え柔軟性を提供します。

• 標準化されたセキュリティ:MCPには標準の認証方式が含まれ、複数のMCPサーバー追加時のスケーラビリティを向上させます。これは伝統的なAPIの多数のキーや認証方式管理より簡単です。

MCPの例

MCP Diagram

たとえば、ユーザーがMCPを利用するAIアシスタントで航空券を予約したいとします。

  1. 接続:AIアシスタント(MCPクライアント)が航空会社が提供するMCPサーバーに接続します。

  2. ツール検出:クライアントは航空会社のMCPサーバーに「どんなツールがありますか?」と問い合わせます。サーバーは「航空券検索」や「予約」などのツールを返答します。

  3. ツール呼び出し:ユーザーが「ポートランドからホノルルへのフライトを検索してください」とAIアシスタントに依頼します。アシスタントはLLMを使い、「航空券検索」ツールを呼び出し、出発地や目的地のパラメーターをMCPサーバーに渡します。

  4. 実行と応答:MCPサーバーはラッパーとして航空会社の内部予約APIを実際に呼び出します。取得したフライト情報(例:JSONデータ)をAIアシスタントに返します。

  5. 追加のやり取り:AIアシスタントはフライト選択肢を提示し、ユーザーが選択すると、同じMCPサーバー上の「予約」ツールを呼び出して予約を完了します。

Agent-to-Agentプロトコル (A2A)

MCPがLLMとツールの接続に焦点を当てる一方、Agent-to-Agent (A2A) プロトコルは一歩進めて異なるAIエージェント間の通信と協力を可能にします。A2Aは異なる組織、環境、技術スタックのAIエージェントを接続し、共通のタスクを完了します。

A2Aの構成要素と利点、そして旅行アプリケーションへの適用例を見ていきます。

A2Aのコアコンポーネント

A2Aはエージェント間の通信を可能にし、ユーザーのサブタスクを協力して完了させることに着目しています。プロトコルの各要素はこれに貢献します:

エージェントカード

MCPサーバーがツールリストを共有するのに似て、エージェントカードは以下を含みます:

エージェント実行者

エージェント実行者は、ユーザーチャットのコンテキストをリモートエージェントに渡す役割を持ち、リモートエージェントはこれにより完了すべきタスクを理解します。A2Aサーバーではエージェントが自らのLLMを使い、受信リクエストを解析し自身のツールでタスクを実行します。

アーティファクト

リモートエージェントがタスクを完了すると、その成果物はアーティファクトとして作成されます。アーティファクトはエージェントの作業結果、完了した内容の説明、およびプロトコルを通じて送信されるテキストコンテキストを含みます。送信後、リモートエージェントとの接続は次に必要になるまで閉じられます。

イベントキュー

このコンポーネントは更新の処理やメッセージ伝達に使われます。タスク完了に時間がかかる場合でも、エージェント間の接続が途中で閉じられないようにするため、生産環境のエージェンティックシステムに特に重要です。

A2Aの利点

• 強化されたコラボレーション:異なるベンダーやプラットフォームのエージェントが相互にやりとりし、コンテキストを共有し協力することで、従来は接続されていなかったシステム間の自動化を促進します。

• モデル選択の柔軟性:各A2Aエージェントは要求のサービスに使用するLLMを独自に選択できるため、各エージェントで最適化されたモデルやファインチューニングモデルを利用でき、MCPの一部シナリオで見られる単一LLM接続とは異なります。

• 組み込み認証:A2Aプロトコルに直接認証機能が統合されており、エージェント間の強固なセキュリティフレームワークを提供します。

A2Aの例

A2A Diagram

旅行予約のシナリオを拡張し、今回はA2Aを使います。

  1. ユーザーの複合リクエスト:「来週ホノルルへのフライト、ホテル、レンタカーを含む全行程を予約してください」と「旅行代理店」A2Aクライアント/エージェントに依頼します。

  2. 旅行代理店によるオーケストレーション:複雑なリクエストを受けた旅行代理店は、LLMでタスクを推論し、専門化した他のエージェントと連携する必要があることを判断します。

  3. エージェント間通信:旅行代理店はA2Aプロトコルを使い、「航空会社エージェント」「ホテルエージェント」「レンタカーエージェント」など、異なる企業が作成した下流エージェントに接続します。

  4. タスクの委譲実行:旅行代理店はそれぞれの専門エージェントに具体的なタスク(「ホノルル行きのフライトを探す」「ホテルを予約する」「レンタカーを借りる」)を送信します。これらの専門エージェントは、それぞれのLLMと自身のツール(MCPサーバーを利用可能)を使って専用の処理を行います。

  5. 統合された応答:すべての下流エージェントがタスクを完了すると、旅行代理店は結果(フライト詳細、ホテル確認、レンタカー予約)をまとめ、チャット形式の総合回答をユーザーに返します。

Natural Language Web (NLWeb)

ウェブサイトは長い間、インターネット上で情報やデータにアクセスする際の主要な方法です。

NLWebの構成要素、利点、そしてNLWebがどのように旅行アプリケーションで機能するかの例を見ていきます。

NLWebの構成要素

NLWebの例

NLWeb

再度旅行予約サイトを考えますが、今回はNLWebが動力源となっています。

  1. データ取り込み:既存の製品カタログ(フライト一覧、ホテル説明、ツアーパッケージなど)がSchema.orgでフォーマットされるかRSS経由でロードされます。NLWebのツールがこの構造化データを取り込み、埋め込みを作成してローカルまたはリモートのベクトルデータベースに保存します。

  2. 自然言語クエリ(ユーザー):ユーザーはサイトを訪れ、メニューをナビゲートせずにチャットインターフェースに「来週ホノルルでプール付きの家族向けホテルを探して」と入力します。

  3. NLWeb処理:NLWebアプリはこのクエリを受け取り、LLMに理解を依頼しながら、同時にベクトルデータベースで関連ホテルリストを検索します。

  4. 正確な結果:LLMはデータベース検索結果を解釈し、「家族向け」「プール」「ホノルル」という条件に基づく最適なマッチを特定し、自然言語の応答に整形します。重要なのは、実際のホテル情報を参照し、架空の情報を避けている点です。

  5. AIエージェントの連携:NLWebがMCPサーバーとして機能するため、外部のAI旅行エージェントもこのウェブサイトのNLWebに接続でき、ask MCPメソッドを使って直接問い合わせることができます。例:ask("ホノルルのホテルが推薦するビーガン対応レストランはありますか?")。NLWebはレストラン情報のデータベース(読み込まれていれば)を活用し、構造化されたJSONの応答を返します。

MCP/A2A/NLWebについてもっと質問がありますか?

Microsoft Foundry Discord に参加して他の学習者と交流し、オフィスアワーに参加してAIエージェントに関する質問に答えてもらいましょう。

資料

前回のレッスン

実用AIエージェント

次のレッスン

AIエージェントのためのコンテキストエンジニアリング


免責事項: 本書類は AI 翻訳サービス Co-op Translator を使用して翻訳されています。正確性を期していますが、自動翻訳には誤りや不正確な部分が含まれる可能性があることをご承知おきください。原文の原語版が正式な情報源とみなされるべきです。重要な情報については、専門の人間による翻訳を推奨します。本翻訳の利用により生じたいかなる誤解や解釈違いについても、当方は責任を負いかねます。