(點擊上方圖片觀看本課程影片)
隨著 AI 代理的使用日益增多,確保標準化、安全及支持開放創新的協議需求也隨之增加。在本課程中,我們將介紹三個協議以滿足此需求 — 模型上下文協議(MCP)、代理間通信協議(A2A)和自然語言網絡(NLWeb)。
本課程將涵蓋:
• MCP 如何允許 AI 代理存取外部工具與數據以完成用戶任務。
• A2A 如何使不同 AI 代理之間能夠溝通與協作。
• NLWeb 如何為任何網站帶來自然語言介面,使 AI 代理能夠發現並互動網站內容。
• 識別 MCP、A2A 及 NLWeb 在 AI 代理背景下的核心目的與優勢。
• 說明 每個協議如何促進大型語言模型(LLM)、工具及其他代理間的溝通與交互。
• 認識 每個協議在建構複雜自主代理系統中擔任的不同角色。
模型上下文協議(MCP) 是一個開放標準,提供應用以標準化方式向 LLM 提供上下文和工具。這使 AI 代理能以一致方式通用連接不同數據源與工具,成為「萬用介面」。
讓我們來看看 MCP 的組成部分、相較直接使用 API 的優勢,及 AI 代理可能如何使用 MCP 伺服器的範例。
MCP 採用客戶端-伺服器架構,核心組件包括:
• 主機(Hosts):指 LLM 應用程式(例如像 VSCode 的程式碼編輯器)啟動與 MCP 伺服器的連接。
• 客戶端(Clients):主機內負責維持與伺服器一對一連接的組件。
• 伺服器(Servers):輕量程式,暴露特定功能。
協議中包含三個核心原語,代表 MCP 伺服器的功能:
• 工具(Tools):是 AI 代理可呼叫執行的獨立動作或功能。例如,天氣服務可能提供「取得天氣」工具,電商伺服器可能提供「購買商品」工具。MCP 伺服器會在功能列表裡宣告每個工具的名稱、描述及輸入/輸出結構。
• 資源(Resources):為 MCP 伺服器提供的只讀資料項目或文件,客戶端可按需取得。例子有檔案內容、資料庫記錄或日誌檔。資源可以是文本(像是程式碼或 JSON)或二進位(如圖片或 PDF)。
• 提示(Prompts):是預定義範本,提供建議的提示,便於構建更複雜工作流程。
MCP 為 AI 代理帶來顯著優勢:
• 動態工具發現:代理可以動態取得伺服器上的可用工具列表及說明,與傳統 API 通常需靜態編碼整合不同,API 若變動需更新程式碼,MCP 採用「一次整合,持續適用」方式,提升靈活性。
• 跨 LLM 的互操作性:MCP 支援多種 LLM,可彈性切換核心模型,優化性能評估。
• 標準化安全性:MCP 包含標準認證方法,新增 MCP 伺服器存取更具擴展性,比起傳統 API 管理不同鑰匙及認證方式更簡單。

想像用戶想用 MCP 支援的 AI 助手訂機票。
連接:AI 助手(MCP 客戶端)連接到航空公司的 MCP 伺服器。
工具發現:客戶端向航空公司 MCP 伺服器詢問:「你有哪些工具?」伺服器回應有「搜尋航班」與「訂票」等工具。
呼叫工具:你向 AI 助手說:「幫我搜尋從波特蘭到檀香山的航班。」助手透過 LLM 識別需呼叫「搜尋航班」工具,並將參數(起點、終點)傳給 MCP 伺服器。
執行與回覆:MCP 伺服器作為包裝器呼叫航空公司內部訂票 API,取得航班資訊(例如 JSON 資料)後回傳給 AI 助手。
後續互動:AI 助手展示航班選項,選擇後助手可能呼叫同一 MCP 伺服器上的「訂票」工具完成訂票。
MCP 專注於連接 LLM 與工具,代理間協議(A2A) 更進一步,實現不同 AI 代理間的溝通與協作。A2A 可連接不同組織、環境與技術架構中的 AI 代理,共同完成任務。
我們將探討 A2A 的組件與優勢,並以旅遊應用示範其運用。
A2A 著重於代理間溝通與協作以完成使用者子任務,每個組件均有助於此:
類似 MCP 伺服器分享工具列表,代理卡內容包括:
負責將用戶聊天上下文傳送給遠程代理,遠程代理需此理解任務內容。在 A2A 伺服器中,代理使用自身的 LLM 解析接收請求,並運用內部工具執行任務。
當遠程代理完成任務,其成果會被封裝成工件。工件包含代理工作結果、完成事項描述及通過協議傳遞的文字上下文。傳送工件後,與遠程代理的連接會關閉,直到再次需要。
用於處理更新與訊息傳遞。在實際生產環境中尤為重要,可防止代理間連線在任務完成前被關閉,尤其是任務所需時間較長時。
• 強化協作:使不同供應商及平台的代理能互動、共享上下文及協力合作,促進傳統獨立系統間的無縫自動化。
• 模型選擇靈活性:每個 A2A 代理可自主決定使用哪個 LLM 服務請求,允許針對單一代理優化或微調模型,與 MCP 中某些場景單一 LLM 連接不同。
• 內建認證:認證直接整合於 A2A 協議,為代理間互動提供堅實安全框架。

延續旅遊預訂情境,這次使用 A2A。
多代理用戶請求:使用者透過「旅遊代理」A2A 客戶端/代理,說:「請幫我下週訂整個檀香山旅行,包括機票、飯店及租車」。
旅遊代理協調:旅遊代理接收到複雜請求,利用 LLM 推理決定需互動其他專門代理。
代理間通訊:旅遊代理使用 A2A 協議連接多家創建的下游代理,如「航空公司代理」、「飯店代理」和「租車代理」。
分工執行任務:旅遊代理分派具體工作給這些專門代理(例如「搜尋檀香山航班」、「訂飯店」、「租車」)。各代理運行自有 LLM 並使用自有工具(可能自身為 MCP 伺服器)完成子任務。
整合結果回覆:所有下游代理完成任務後,旅遊代理彙整結果(航班資訊、飯店確認、租車訂單),並以聊天對話形式回應使用者。
網站長期以來為使用者存取全球資訊資料的主要方式。
我們將探討 NLWeb 的不同組成元件、優勢,並透過旅遊應用範例了解 NLWeb 運作。
NLWeb 應用(核心服務程式碼):處理自然語言問題的系統,連結平台各部分生成回應。可視為網站自然語言功能的引擎。
NLWeb 協議:網站自然語言互動的基本規則集,以 JSON 格式(通常使用 Schema.org)回傳回應。目的為打造「AI 網路」的簡易基礎,猶如 HTML 讓線上文件分享成為可能。
MCP 伺服器(模型上下文協議端點):每個 NLWeb 配置同時作為MCP 伺服器,可與其他 AI 系統分享工具(如「ask」方法)與資料。實際上,使網站內容與能力可被 AI 代理使用,網站成為更廣泛「代理生態系」的一部分。
嵌入模型(Embedding Models):用於把網站內容轉成稱為向量(embedding)的數值表示,捕捉意義供電腦比對與搜索。這些向量儲存在特殊資料庫中,用戶可選擇使用的嵌入模型。
向量資料庫(檢索機制):存儲網站內容的向量資料庫。當有人提出問題時,NLWeb 查詢此資料庫迅速找出最相關資訊,以相似度排序列出可能答案。NLWeb 支援多種向量存儲系統,如 Qdrant、Snowflake、Milvus、Azure AI Search 與 Elasticsearch。

再以旅遊預訂網站為例,這回為 NLWeb 提供動力。
資料導入:網站現有產品目錄(如航班清單、飯店描述、旅遊套餐)利用 Schema.org 格式或 RSS 載入。NLWeb 工具擷取這些結構化資料,建立嵌入向量並儲存於本地或遠端向量資料庫。
自然語言查詢(使用者):使用者造訪網站,非點選選單而是在聊天介面輸入:「幫我找一家有泳池、適合家庭入住的檀香山飯店,下週入住」。
NLWeb 處理:NLWeb 應用接收查詢,發送給 LLM 理解,同時向向量資料庫搜尋符合條件的飯店清單。
精確結果:LLM 協助解讀資料庫搜尋結果,根據「家庭友善」、「泳池」、「檀香山」等條件篩選最佳匹配,並格式化自然語言回應。回應內容參照網站真實飯店資料,避免虛構訊息。
AI 代理互動:NLWeb 作為 MCP 伺服器,外部 AI 旅遊代理亦可直接連接此網站的 NLWeb 實例。AI 代理可使用 ask MCP 方法直接查詢,如:ask("檀香山地區有飯店推薦的素食餐廳嗎?")。NLWeb 會處理此訊息,若載入餐廳資料庫則回傳結構化 JSON 回應。
加入 Microsoft Foundry Discord,與其他學習者交流、參加諮詢時段,並獲得 AI 代理相關問題的解答。
免責聲明:
本文件是使用 AI 翻譯服務 Co-op Translator 翻譯而成。雖然我們致力確保準確性,但請注意自動翻譯可能包含錯誤或不準確之處。文件的原始語言版本應被視為權威來源。如涉及重要資訊,建議採用專業人工翻譯。我們不對因使用本翻譯而引起的任何誤解或誤釋承擔責任。