ai-agents-for-beginners

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

エージェンティックプロトコル

AIエージェントの利用が拡大するにつれ、標準化、安全性、そしてオープンイノベーションを支援するプロトコルの必要性も高まっています。このレッスンでは、そのニーズに応える3つのプロトコル、Model Context Protocol (MCP)、Agent to Agent (A2A)、そしてNatural Language Web (NLWeb)について学びます。

はじめに

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

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

A2Aが異なるAIエージェント間のコミュニケーションとコラボレーションを可能にする方法。

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

学習目標

MCP、A2A、NLWebの目的とAIエージェントにおける利点を特定する。

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

• 複雑なエージェンティックシステムを構築する際の各プロトコルの役割を認識する。

Model Context Protocol

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

MCPの構成要素、従来のAPI使用との比較による利点、そしてAIエージェントがMCPサーバーをどのように活用するかの例を見ていきましょう。

MCPの主要構成要素

MCPはクライアント-サーバーアーキテクチャで動作し、主要な構成要素は以下の通りです:

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

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

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

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

ツール: AIエージェントがアクションを実行するために呼び出せる個別のアクションや機能。例えば、天気サービスが「天気を取得する」ツールを公開したり、eコマースサーバーが「商品を購入する」ツールを公開したりします。MCPサーバーは各ツールの名前、説明、入出力スキーマを機能リストで広告します。

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

プロンプト: より複雑なワークフローを可能にする提案されたプロンプトを提供する事前定義されたテンプレート。

MCPの利点

MCPはAIエージェントに以下のような重要な利点を提供します:

動的ツール発見: エージェントはサーバーから利用可能なツールのリストとその説明を動的に受け取ることができます。これは従来のAPIが静的なコーディングを必要とする統合と対照的であり、APIの変更がコードの更新を必要とする場合があります。MCPは「一度統合すればOK」というアプローチを提供し、適応性を向上させます。

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

標準化されたセキュリティ: MCPは標準的な認証方法を含み、追加のMCPサーバーへのアクセスを追加する際のスケーラビリティを向上させます。これは従来のAPIで異なるキーや認証タイプを管理するよりも簡単です。

MCPの例

MCP Diagram

ユーザーがAIアシスタントを使ってフライトを予約したいとします。このAIアシスタントはMCPを活用しています。

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

  2. ツール発見: クライアントが航空会社のMCPサーバーに「どんなツールが利用可能ですか?」と尋ねます。サーバーは「フライト検索」や「フライト予約」といったツールを返します。

  3. ツール呼び出し: ユーザーがAIアシスタントに「ポートランドからホノルルへのフライトを検索してください」と依頼します。AIアシスタントはLLMを使用して「フライト検索」ツールを呼び出す必要があることを特定し、関連するパラメータ(出発地、目的地)をMCPサーバーに渡します。

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

  5. さらなるインタラクション: AIアシスタントがフライトオプションを提示します。ユーザーがフライトを選択すると、アシスタントは同じMCPサーバー上の「フライト予約」ツールを呼び出し、予約を完了します。

Agent-to-Agent Protocol (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インスタンスに接続することも可能です。AIエージェントはask MCPメソッドを使用してウェブサイトに直接クエリを送信できます: ask("ホノルルエリアにホテルが推奨するビーガン対応レストランはありますか?")。NLWebインスタンスは、レストラン情報のデータベース(ロードされている場合)を活用してこれを処理し、構造化されたJSONレスポンスを返します。

MCP/A2A/NLWeb についてさらに質問がありますか?

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

リソース

免責事項:
この文書は、AI翻訳サービス Co-op Translator を使用して翻訳されています。正確性を追求しておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があります。元の言語で記載された文書を正式な情報源としてお考えください。重要な情報については、専門の人間による翻訳を推奨します。この翻訳の使用に起因する誤解や誤解釈について、当方は責任を負いません。