ai-agents-for-beginners

使用智能代理協議(MCP,A2A 和 NLWeb)

智能代理協議

(點擊上方圖片查看本課程視頻)

隨著 AI 代理的使用日益增長,保證標準化、安全性及支持開放創新的協議需求也在增加。本課程將介紹三種旨在滿足這些需求的協議——模型上下文協議(MCP)、代理對代理(A2A)以及自然語言網絡(NLWeb)。

介紹

本課程將涵蓋:

• 如何通過 MCP 讓 AI 代理訪問外部工具和數據,以完成用戶任務。

• 如何通過 A2A 實現不同 AI 代理之間的通訊與協作。

• 如何通過 NLWeb 為任何網站帶來自然語言介面,讓 AI 代理能夠發現並互動內容。

學習目標

識別 MCP、A2A 及 NLWeb 在 AI 代理語境中的核心目的與優勢。

解釋 各協議如何促進大型語言模型(LLM)、工具及其他代理之間的通訊與互動。

認識 各協議在構建複雜智能代理系統中的不同角色。

模型上下文協議

模型上下文協議(MCP) 是一個開放標準,提供應用程式向大型語言模型提供上下文和工具的標準化方式。這使得 AI 代理能夠以一致的方式連接到不同的數據來源和工具,如同萬能轉接器一樣。

讓我們來看看 MCP 的組件、與直接使用 API 相比的優勢,以及 AI 代理如何使用 MCP 伺服器的示例。

MCP 核心組件

MCP 採用客戶端-伺服器架構,核心組件包括:

主機(Hosts):是啟動與 MCP 伺服器連接的大型語言模型應用(例如 VSCode 等程式碼編輯器)。

客戶端(Clients):是主機內部維持與伺服器一對一連接的組件。

伺服器(Servers):是暴露特定功能的輕量級程式。

協議中包含三個核心原語,是 MCP 伺服器的功能:

工具(Tools):AI 代理可以調用來執行操作的離散動作或功能。例如,天氣服務可能會提供「獲取天氣」工具,電子商務伺服器可能會提供「購買產品」工具。MCP 伺服器在其功能列表中宣告每個工具的名稱、描述及輸入/輸出架構。

資源(Resources):MCP 伺服器可提供的只讀資料或文件,客戶端可按需檢索。範例包括檔案內容、資料庫記錄或日誌檔。資源可以是文本(如代碼或 JSON)或二進制(如圖片或 PDF)。

提示(Prompts):預定義模板,提供建議的提示詞,支持更複雜的工作流程。

MCP 優點

MCP 對 AI 代理帶來的顯著優勢:

動態工具發現:代理能動態獲取伺服器提供的工具清單及其功能說明。這與傳統 API 需靜態編碼整合並且每次 API 變更都要更新代碼不同,MCP 提供一次整合、持續適應的方案。

跨 LLM 的互操作性:MCP 支援不同大型語言模型,靈活切換核心模型以求最佳表現。

標準化安全性:MCP 包含標準身份驗證方法,提高擴展多 MCP 伺服器訪問的便利度,簡化了不同傳統 API 授權憑證和身份驗證類型管理。

MCP 範例

MCP 圖示

想象用戶想借助 MCP 驅動的 AI 助手訂機票。

  1. 連接:AI 助手(MCP 客戶端)連接航空公司提供的 MCP 伺服器。

  2. 工具發現:客戶端詢問航空公司的 MCP 伺服器「你提供哪些工具?」伺服器回答列出如「搜尋航班」和「訂購航班」等工具。

  3. 調用工具:用戶對 AI 助手說「請幫我找一趟從波特蘭到檀香山的航班」。AI 助手利用其大型語言模型辨識出需要調用「搜尋航班」工具,並將起點、終點等參數傳給 MCP 伺服器。

  4. 執行與回應:MCP 伺服器作為調用包裝器,實際調用航空公司內部訂票 API,獲得航班資訊(如 JSON 數據)後返回給 AI 助手。

  5. 後續互動:AI 助手展示航班選項,當用戶選定航班後,助手可能調用同一 MCP 伺服器上的「訂購航班」工具完成訂票流程。

代理對代理協議(A2A)

MCP 著眼於連接 LLM 與工具,而 代理對代理(A2A)協議 更進一步,使不同 AI 代理間能溝通與協作。A2A 連接來自不同組織、環境與技術棧的 AI 代理,共同完成用戶任務。

我們將探討 A2A 的組件與優點,並示範其如何應用於旅遊應用場景。

A2A 核心組件

A2A 著重於代理間溝通,協同完成用戶子任務。協議的各組件助力此目標:

代理卡

類似 MCP 伺服器分享工具清單,代理卡包含:

代理執行器

代理執行器負責將用戶聊天上下文傳遞給遠端代理,遠端代理需此資訊來理解需要完成的任務。在 A2A 伺服器中,代理利用自己的大型語言模型解析請求並用其內部工具執行任務。

成果物

遠端代理完成任務後,會產生一個成果物。成果物包含代理工作的結果完成工作描述以及通過協議傳送的文本上下文。成果物發出後,與遠端代理的連線會關閉,直至再次需要。

事件隊列

此組件用於處理更新並傳遞消息,對於生產環境中智能代理系統尤其重要,能防止代理間連線在任務長時間執行時意外斷開。

A2A 優點

加強協作:令不同供應商和平台的代理互相溝通、共享上下文、協作,有助於打通傳統孤立系統的自動化流程。

模型選擇彈性:每個 A2A 代理能自主選擇使用哪個大型語言模型服務請求,支援優化或微調,多於某些 MCP 場景下單一 LLM 連接。

內建身份驗證:身份驗證直接整合於 A2A 協議,為代理交互提供堅固安全架構。

A2A 範例

A2A 圖示

現在擴展我們的旅遊訂票場景,這次用 A2A 協議實現。

  1. 用戶向多代理請求:用戶與「旅遊代理」A2A 客戶端/代理互動,說:「請幫我訂下週前往檀香山的整個行程,包括航班、酒店與租車」。

  2. 旅遊代理協調:旅遊代理接收複雜請求,利用其大型語言模型推理任務,決定需與其他專門代理互動。

  3. 代理間通訊:旅遊代理使用 A2A 協議連接下游代理,如來自不同公司的「航空公司代理」、「酒店代理」和「租車代理」。

  4. 任務分派執行:旅遊代理把具體任務分派給這些專門代理(如「搜尋檀香山航班」、「訂酒店」、「租車」)。各專門代理運行自己的大型語言模型並使用自身工具(也可能是 MCP 伺服器),完成相應任務。

  5. 整合回應:所有下游代理完成任務後,旅遊代理集合結果(航班詳情、酒店確認及租車預訂)並以聊天式回應形式發給用戶。

自然語言網絡(NLWeb)

網站長久以來是用戶訪問互聯網資訊與數據的主要方式。

讓我們了解 NLWeb 的不同組成部分、NLWeb 的優勢,並通過旅遊應用範例說明 NLWeb 的工作原理。

NLWeb 組件

NLWeb 範例

NLWeb

再次以我們的旅遊訂票網站為例,這次其後端由 NLWeb 支持。

  1. 數據導入:旅遊網站現有產品目錄(如航班清單、酒店描述、旅遊套餐)使用 Schema.org 格式或經由 RSS 提要載入。NLWeb 工具將這些結構化資料轉為嵌入向量,存入本地或遠端向量資料庫。

  2. 自然語言查詢(人類):用戶訪問網站,未透過選單而在聊天介面輸入:「幫我找台檀香山有泳池且適合家庭入住的酒店,下週入住」。

  3. NLWeb 處理:NLWeb 應用收取查詢,傳給大型語言模型理解,同時檢索其向量資料庫找相符酒店清單。

  4. 準確結果:大型語言模型協助解釋資料庫檢索結果,根據「家庭友好」、「泳池」及「檀香山」條件找出最佳匹配,並格式化自然語言回答。重要的是答案基於網站實際酒店目錄,而非虛構資訊。

  5. AI 代理互動:因為 NLWeb 也作為 MCP 伺服器,外部 AI 旅遊代理可連接此網站的 NLWeb 實例。該 AI 代理可使用 ask MCP 方法直接查詢網站:ask("酒店推薦的檀香山地區是否有素食餐廳?")。NLWeb 處理該查詢,利用餐廳資訊庫(如已載入)並返回結構化 JSON 回應。

對 MCP/A2A/NLWeb 有更多疑問?

加入 Microsoft Foundry Discord,與其他學習者交流、參加答疑時段並獲得 AI 代理相關問題解答。

資源

上一課

AI 代理在生產環境中

下一課

AI 代理的上下文工程


免責聲明: 本文件使用 AI 翻譯服務 Co-op Translator 進行翻譯。雖然我們力求準確,但請注意,自動翻譯可能包含錯誤或不準確之處。原始文件的母語版本應被視為權威來源。對於重要資訊,建議尋求專業人工翻譯。我們不對因使用本翻譯而引起的任何誤解或曲解承擔責任。