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が静的なコーディングを必要とするのに対し、MCPは「一度統合すればOK」というアプローチを提供し、適応性が向上します。

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

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

MCPの例

MCP Diagram

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

  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

旅行予約ウェブサイトを例に取り上げ、今回はNLWebを活用します。

  1. データ取り込み: 旅行ウェブサイトの既存の製品カタログ(例: フライトリスト、ホテルの説明、ツアーパッケージ)はSchema.orgを使用してフォーマットされるか、RSSフィードを介してロードされます。NLWebのツールがこの構造化データを取り込み、埋め込みを作成し、ローカルまたはリモートのベクトルデータベースに保存します。

  2. 自然言語クエリ(人間): ユーザーがウェブサイトを訪れ、メニューをナビゲートする代わりに、チャットインターフェースに「来週ホノルルでプール付きの家族向けホテルを探してください」と入力します。

  3. NLWebの処理: NLWebアプリケーションがこのクエリを受け取ります。クエリをLLMに送信して理解を助けると同時に、ベクトルデータベースを検索して関連するホテルリストを見つけます。

  4. 正確な結果: LLMはデータベースからの検索結果を解釈し、「家族向け」、「プール」、「ホノルル」の基準に基づいて最適な一致を特定し、自然言語応答をフォーマットします。重要なのは、応答がウェブサイトのカタログからの実際のホテルを参照し、架空の情報を避けることです。

  5. AIエージェントとのインタラクション: NLWebがMCPサーバーとして機能するため、外部のAI旅行エージェントがこのウェブサイトのNLWebインスタンスに接続することも可能です。AIエージェントはask MCPメソッドを使用してウェブサイトに直接クエリを送信できます:`ask(“ホテル


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