logo
0
0
WeChat Login
leestott<leestott@users.noreply.github.com>
🌐 Update translations via Co-op Translator

エージェントプロトコル (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サーバーへの接続を開始します。

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

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

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

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

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

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

MCPの利点

MCPはAIエージェントにとって以下のような大きな利点を提供します:

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

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

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

MCPの例

MCP Diagram

ユーザーがMCPを活用した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サーバーがツールのリストを共有するのと同様に、エージェントカードには以下が含まれます:     ◦ エージェントの名前
    ◦ 完了可能な一般的なタスクの説明
    ◦ 特定のスキルのリストとその説明(他のエージェントや人間ユーザーがそのエージェントを呼び出す理由を理解するため)
    ◦ エージェントの現在のエンドポイントURL
    ◦ ストリーミング応答やプッシュ通知などのエージェントのバージョン機能

エージェントエグゼキューター

エージェントエグゼキューターは、ユーザーチャットのコンテキストをリモートエージェントに渡す役割を担います。リモートエージェントは、完了すべきタスクを理解するためにこの情報を必要とします。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プロトコル: ウェブサイトとの自然言語インタラクションのための基本的なルールセットです。JSON形式(Schema.orgを使用することが多い)で応答を返します。HTMLがオンラインでドキュメントを共有可能にしたのと同じように、「AI Web」のシンプルな基盤を作ることを目的としています。

  • MCPサーバー(Model Context Protocolエンドポイント): 各NLWebセットアップはMCPサーバーとしても機能します。これにより、他のAIシステムとツール(「ask」メソッドなど)やデータを共有できます。実際には、ウェブサイトのコンテンツや機能がAIエージェントによって利用可能になり、ウェブサイトがより広い「エージェントエコシステム」の一部となります。

  • 埋め込みモデル: ウェブサイトのコンテンツを数値表現(ベクトル)に変換するために使用されます。これらのベクトルは、コンピュータが比較や検索を行えるように意味を捉えます。特別なデータベースに保存され、ユーザーは使用する埋め込みモデルを選択できます。

  • ベクトルデータベース(検索メカニズム): このデータベースはウェブサイトコンテンツの埋め込みを保存します。質問が送信されると、NLWebはベクトルデータベースをチェックして最も関連性の高い情報を迅速に見つけます。類似性でランク付けされた可能性のある回答リストを提供します。NLWebは、Qdrant、Snowflake、Milvus、Azure AI Search、Elasticsearchなどのさまざまなベクトルストレージシステムと連携します。

NLWebの例

NLWeb

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

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

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

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

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

  5. AIエージェントとの連携: NLWebがMCPサーバーとして機能するため、外部のAI旅行エージェントがこのウェブサイトのNLWebインスタンスに接続することも可能です。AIエージェント


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