自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

A2A vs. MCP全方位對(duì)比(附案例實(shí)操詳解)

人工智能
這篇試圖說清楚 A2A 的核心定義是啥, 其與 MCP 的主要區(qū)別,以及 A2A 官方 Demo 復(fù)現(xiàn)講解。

前陣子有知識(shí)星球成員私信,想要我介紹下 Google 發(fā)布的 A2A 是啥?

我在具體研究 A2A 之前,刷到過幾個(gè)視頻號(hào)的博主介紹 A2A時(shí)說 A2A 完全是多此一舉,現(xiàn)有的 MCP(大模型上下文協(xié)議 )可以直接實(shí)現(xiàn) agent 之間的標(biāo)準(zhǔn)化交互功能。

但初步測(cè)試下來發(fā)現(xiàn),A2A并非這么簡(jiǎn)單。

這篇試圖說清楚 A2A 的核心定義是啥, 其與 MCP 的主要區(qū)別,以及 A2A 官方 Demo 復(fù)現(xiàn)講解。

以下,enjoy:

1、A2A 到底是啥

這部分內(nèi)容主要從公開信息整理而來,但當(dāng)涉獵即可,看不下去的 feel free 劃到下一章節(jié)查看表格形式的與 MCP 核心特性對(duì)比。

根據(jù) Google 的官方介紹,A2A (Agent-to-Agent) 是其和超過 50 家技術(shù)合作伙伴(如 Langchain, Salesforce, SAP 等)共同推出并支持的開放協(xié)議,核心目標(biāo)是為 AI Agents 提供一個(gè)標(biāo)準(zhǔn)的通信方式,使它們能夠:

1.1互相發(fā)現(xiàn)和識(shí)別

通過“Agent Card”(一種 JSON 格式的文件,包含 Agent 的 ID、名稱、能力、版本、安全需求等信息),一個(gè) Agent 可以找到并了解其他 Agent 的能力。 

======= Agent Card ========
   {"name":"Parse and Chat","description":"Parses a file and then chats with a user using the parsed content as context.","url":"http://localhost:10010/","version":"1.0.0","capabilities":{"streaming":true,"pushNotifications":true,"stateTransitionHistory":false},"defaultInputModes":["text","text/plain"],"defaultOutputModes":["text","text/plain"],"skills":[{"id":"parse_and_chat","name":"Parse and Chat","description":"Parses a file and then chats with a user using the parsed content as context.","tags":["parse","chat","file","llama_parse"],"examples":["What does this file talk about?"]}]}
   =========  starting a new task ========

這個(gè)被 ======= Agent Card ======== 包裹的 JSON 對(duì)象就是官方Demo中LlamaIndex Agent 的 Agent Card示例。里面包含了:

name: "Parse and Chat"
description: Agent 功能描述
url: Agent 的訪問地址
version: 版本號(hào)
capabilities: 支持的能力(流式、推送通知等)
defaultInputModes / defaultOutputModes: 支持的默認(rèn)輸入輸出格式
skills: Agent 擁有的技能列表,每個(gè)技能有 ID、名稱、描述、標(biāo)簽和示例。

1.2安全地交換信息

協(xié)議設(shè)計(jì)考慮了安全性,確保 Agent 之間交互的可靠性。

{
      "jsonrpc": "2.0",
      "id": 11, // 請(qǐng)求 ID
      "method": "tasks/send", // A2A 方法
      "params": { // 方法參數(shù)
        "id": "129", // 任務(wù) ID
        "sessionId": "8f01f3d172cd4396a0e535ae8aec6687", // 會(huì)話 ID
        "acceptedOutputModes": [
          "text"
        ],
        "message": { // 用戶消息
          "role": "user",
          "parts": [ // 消息內(nèi)容部分
            {
              "type": "text",
              "text": "How much is the exchange rate for 1 USD to INR?"
            }
          ]
        }
      }
    }

Input - 發(fā)送給 Agent 服務(wù)器的請(qǐng)求示例

// 第一個(gè)流式更新 (中間狀態(tài))
    data: {"jsonrpc":"2.0","id":12,"result":{"id":"131","status":{"state":"working","message":{"role":"agent","parts":[{"type":"text","text":"Looking up the exchange rates..."}]},"timestamp":"2025-04-02T16:59:34.578939"},"final":false}}


    // 第二個(gè)流式更新 (中間狀態(tài))
    data: {"jsonrpc":"2.0","id":12,"result":{"id":"131","status":{"state":"working","message":{"role":"agent","parts":[{"type":"text","text":"Processing the exchange rates.."}]},"timestamp":"2025-04-02T16:59:34.737052"},"final":false}}


    // 第三個(gè)流式更新 (推送結(jié)果片段)
    data: {"jsonrpc":"2.0","id":12,"result":{"id":"131","artifact":{"parts":[{"type":"text","text":"Based on the current exchange rate, 1 USD is equivalent to 0.77252 GBP. Therefore, 100 USD would be approximately 77.252 GBP."}],"index":0,"append":false}}} // 注意這里是 artifact


    // 第四個(gè)流式更新 (最終狀態(tài))
    data: {"jsonrpc":"2.0","id":12,"result":{"id":"131","status":{"state":"completed","timestamp":"2025-04-02T16:59:35.331844"},"final":true}}

流式通知示例

1.3協(xié)調(diào)行動(dòng)

跨越不同的工具、服務(wù)和企業(yè)系統(tǒng)進(jìn)行協(xié)作,完成更復(fù)雜的任務(wù)。 

例如與LangGraph 貨幣兌換 Agent 交互時(shí),這個(gè) Agent 會(huì)調(diào)用外部的匯率 API 來獲取實(shí)時(shí)匯率。

2、A2A 與 MCP 的核心區(qū)別所在

2.1主要特性對(duì)比

下面通過一個(gè)表格給各位簡(jiǎn)要的梳理下二者間的核心特性差別:

特性

A2A

MCP

核心目標(biāo)

標(biāo)準(zhǔn)化 Agent 之間的通信和協(xié)作

標(biāo)準(zhǔn)化 Agent/應(yīng)用與外部工具/數(shù)據(jù)源之間的上下文交互

交互層面

Agent ? Agent (水平集成)

Agent/應(yīng)用 ? 工具/數(shù)據(jù)源 (垂直集成)

解決問題

如何讓不同來源、不同框架的 Agent 互相發(fā)現(xiàn)、對(duì)話、委托任務(wù)、協(xié)調(diào)工作流?

如何讓一個(gè) Agent/LLM 標(biāo)準(zhǔn)化、安全、高效地調(diào)用外部 API、訪問數(shù)據(jù)庫(kù)、獲取實(shí)時(shí)數(shù)據(jù)等“工具”?

通信內(nèi)容

任務(wù)指令、狀態(tài)更新、協(xié)作請(qǐng)求、結(jié)果工件、上下文共享、協(xié)商

傳遞給模型的結(jié)構(gòu)化上下文、工具列表、工具調(diào)用請(qǐng)求、工具執(zhí)行結(jié)果

設(shè)想類比

Agent 之間的內(nèi)部消息總線或協(xié)作框架

AI 應(yīng)用連接外部工具的“USB-C”接口

主要發(fā)起者

Google

Anthropic

典型場(chǎng)景

多 Agent 系統(tǒng)、復(fù)雜工作流自動(dòng)化、跨平臺(tái)協(xié)作

單個(gè) Agent 需要調(diào)用多種外部工具、增強(qiáng) LLM 的上下文理解和執(zhí)行能力


簡(jiǎn)單來說:

MCP 關(guān)注的是 Agent 如何使用工具 (Agent-to-Tool/Context)。它讓 Agent 更方便地連接和使用各種外部資源(如 API、數(shù)據(jù)庫(kù))。

A2A 關(guān)注的是 Agent 如何互相合作 (Agent-to-Agent)。它讓不同的 Agent 能夠像一個(gè)團(tuán)隊(duì)一樣協(xié)同工作

2.2A2A 相對(duì) MCP 是否畫蛇添足

在給出這個(gè)問題答案之前,我們先來梳理下網(wǎng)上所謂的 MCP 實(shí)現(xiàn) A2A 核心功能的主要邏輯所在。

MCP 如何實(shí)現(xiàn) A2A 核心功能

封裝 Agent B 為 API/Tool:

將 Agent B 的核心功能(例如,特定的 RAG 檢索能力、數(shù)據(jù)分析能力、API 調(diào)用能力等)封裝在一個(gè)或多個(gè) API 端點(diǎn)后面。


例如,創(chuàng)建一個(gè) REST API,其中 /queryKnowledgeBase 端點(diǎn)接收查詢并返回 RAG 結(jié)果,/analyzeData 端點(diǎn)接收數(shù)據(jù)并返回分析報(bào)告。


這個(gè) API 就成為了 Agent B 對(duì)外提供服務(wù)的接口。

為 API/Tool 創(chuàng)建 MCP 描述:

為 Agent B 的 API 創(chuàng)建一個(gè)符合 MCP 規(guī)范的描述文件(使用 OpenAPI Specification)。這個(gè)描述文件需要清晰地說明:


工具的名稱和描述(告訴 Agent A 這是什么工具,能做什么)。
可用的函數(shù)/端點(diǎn)(如 /queryKnowledgeBase)。
每個(gè)函數(shù)所需的輸入?yún)?shù)(名稱、類型、描述、是否必需)。
函數(shù)預(yù)期的輸出格式(結(jié)構(gòu)化的數(shù)據(jù)模式)。
可能的認(rèn)證或安全要求。

Agent A 通過 MCP 調(diào)用 Agent B:

Agent A(通常是一個(gè)基于 LLM 的 Agent)在其上下文中“看到”了 Agent B 這個(gè)工具及其描述。


當(dāng) Agent A 的 LLM 判斷需要 Agent B 的能力來完成當(dāng)前任務(wù)時(shí),它會(huì)生成一個(gè)符合 MCP 規(guī)范的“工具調(diào)用”(Tool Call)請(qǐng)求。


這個(gè)請(qǐng)求包含了要調(diào)用的 Agent B 的函數(shù)名(如 /queryKnowledgeBase)以及所需的輸入?yún)?shù)(如用戶的查詢)。


Agent A 的執(zhí)行環(huán)境(或 MCP 處理器)接收到這個(gè)工具調(diào)用請(qǐng)求,實(shí)際調(diào)用 Agent B 的 API 端點(diǎn)。


Agent B 的 API 執(zhí)行其內(nèi)部邏輯(調(diào)用自己的 RAG 流程、分析數(shù)據(jù)等)。


Agent B 將執(zhí)行結(jié)果按照 MCP 描述中定義的輸出格式返回。


Agent A 的執(zhí)行環(huán)境接收到結(jié)果,并將其格式化為“工具結(jié)果”(Tool Result),反饋給 Agent A 的 LLM。


Agent A 的 LLM 結(jié)合這個(gè)工具結(jié)果,繼續(xù)處理任務(wù)或生成最終響應(yīng)。

這種“MCP + Agent as Tool”的方式,實(shí)測(cè)確實(shí)可以實(shí)現(xiàn)基本的 Agent 任務(wù)委托和信息交換,尤其適用于相對(duì)簡(jiǎn)單、明確的請(qǐng)求-響應(yīng)式交互。

注:這部分大家可以參考我之前的文章,使用 Dify 的自定義 Tool 功能模擬 MCP 實(shí)現(xiàn) Agent 協(xié)作,這里就不做贅述。

    Dify+RAGFLow:基于占位符的圖片問答升級(jí)方案(最佳實(shí)踐)

However,雖然可以將 Agent 視為 MCP 工具來實(shí)現(xiàn)部分 A2A 功能,但這更多是一種“模擬”,實(shí)際不能充分發(fā)揮多 Agent 系統(tǒng)協(xié)作的潛力,也缺乏 A2A 提供的標(biāo)準(zhǔn)化協(xié)作框架。

當(dāng)然,選擇哪種方式取決于各位具體應(yīng)用場(chǎng)景的復(fù)雜度和對(duì) Agent 間交互深度的要求。

3、A2A 官方 Demo 復(fù)現(xiàn)與講解

光說不練假把式,我們來使用 A2A 的 Github 官方實(shí)例來給大家做一個(gè)具體的復(fù)現(xiàn)講解。

建議感興趣的一定要實(shí)際上手操作下,再結(jié)合下方的日志解析應(yīng)該可以對(duì) A2A 有更加完整的理解。

3.1官方示例的選擇

git clone https://github.com/google/A2A.git

先把 A2A 的官方倉(cāng)庫(kù)下載到本地,我們可以發(fā)現(xiàn)官方提供了多個(gè) demo(以 python 為例)供選擇測(cè)試,這里先分析下其中主要幾個(gè) demo 的內(nèi)容和差別。 

Google ADK (google_adk)

內(nèi)容: 模擬一個(gè)填寫費(fèi)用報(bào)銷單的 Agent。

主要特性:

使用 Google 的 Agent Development Kit (ADK) 構(gòu)建。

展示多輪交互:當(dāng)用戶提供的信息不完整時(shí),Agent 會(huì)要求補(bǔ)充。

核心亮點(diǎn): 演示如何通過 A2A 返回 Web 表單給客戶端(或用戶)填寫,并在客戶端提交表單后繼續(xù)處理任務(wù)。

LangGraph (langgraph)

內(nèi)容: 一個(gè)可以進(jìn)行貨幣兌換查詢的 Agent。

主要特性:

使用 LangGraph 框架和 ReAct 模式構(gòu)建。

展示多輪交互:例如,詢問需要兌換的目標(biāo)貨幣。

核心亮點(diǎn): 演示 Agent 如何使用外部工具(調(diào)用 Frankfurter API 獲取匯率)以及如何通過 A2A 流式傳輸狀態(tài)更新(例如,“正在查詢匯率...”)。

CrewAI (crewai)

內(nèi)容: 一個(gè)可以生成圖像的 Agent。

主要特性:

使用 CrewAI 框架構(gòu)建。

展示多輪交互

核心亮點(diǎn): 演示如何通過 A2A 發(fā)送圖像數(shù)據(jù)作為任務(wù)結(jié)果。

LlamaIndex File Chat (llama_index_file_chat)

內(nèi)容: 一個(gè)可以接收用戶上傳的文件,解析文件內(nèi)容,然后根據(jù)文件內(nèi)容與用戶進(jìn)行問答的 Agent。

主要特性:

使用 LlamaIndex Workflows 構(gòu)建。

展示多輪交互:在同一會(huì)話中基于文件內(nèi)容進(jìn)行連續(xù)問答。

核心亮點(diǎn): 演示通過 A2A 處理文件上傳(用戶將文件附加到請(qǐng)求中)、文件解析(使用 LlamaParse),以及流式傳輸狀態(tài)更新和帶引用的結(jié)果(回答中會(huì)標(biāo)注信息來源是文件的哪部分)。

示例

主要功能

核心 A2A 特性展示

使用框架

相對(duì)復(fù)雜度

Google ADK

費(fèi)用報(bào)銷 (模擬)

Web 表單交互

Google ADK

中等

LangGraph

貨幣兌換

工具使用 (API 調(diào)用), 流式狀態(tài)更新

LangGraph

較低

CrewAI

圖像生成

圖像數(shù)據(jù)傳輸

CrewAI

中等

LlamaIndex File Chat

文件問答

文件上傳與解析, 流式更新, 引用

LlamaIndex Workflows

較高

經(jīng)過初步測(cè)試,建議各位還是從 LangGraph (langgraph) 示例開始實(shí)踐,理解了 LangGraph 示例后,可以再嘗試其他示例,例如 ADK 示例來理解 Web 表單交互,或者 LlamaIndex 示例來理解文件處理。

3.2LangGraph 的配置

1. 導(dǎo)航至demo目錄:
   ```bash
   cd samples/python/agents/langgraph
   ```
2. 創(chuàng)建虛擬環(huán)境并配置Google_API_Key:
   ```bash
   echo "GOOGLE_API_KEY=your_api_key_here" > .env
   ```
3. 運(yùn)行agent服務(wù)器:
   ```bash
   # Basic run on default port 10000
   uv run .
   # On custom host/port
   uv run . --host 0.0.0.0 --port 8080
   ```
4. 另起一個(gè)單獨(dú)的終端, 運(yùn)行A2A客戶端:
   ```bash
   cd samples/python/hosts/cli
   uv run .
   ```

3.3測(cè)試目的與示例場(chǎng)景

測(cè)試目的

A2A 協(xié)議集成: 確保 Agent 可以正確地通過 A2A 協(xié)議接收任務(wù)請(qǐng)求 (tasks/send, tasks/sendSubscribe) 并返回符合協(xié)議規(guī)范的響應(yīng)。

多輪對(duì)話能力: 測(cè)試 Agent 在信息不充分時(shí),能否主動(dòng)向用戶請(qǐng)求額外信息(例如,只問了“1 美元換多少?”,Agent 會(huì)反問“換成哪種貨幣?”),并能利用后續(xù)用戶提供的信息完成任務(wù)。

流式響應(yīng) (Streaming): 測(cè)試 Agent 在處理耗時(shí)任務(wù)時(shí),能否通過 A2A 協(xié)議實(shí)時(shí)發(fā)送中間狀態(tài)更新(例如,“正在查找匯率...”,“正在處理...”),而不是讓客戶端一直等待最終結(jié)果。

工具使用 (Tool Usage): 測(cè)試基于 ReAct 模式的 LangGraph Agent 能否在需要時(shí)正確調(diào)用外部工具(這里是 Frankfurter API)來獲取實(shí)時(shí)匯率數(shù)據(jù)。

會(huì)話管理 (Conversational Memory): 測(cè)試 Agent 能否在同一會(huì)話 (sessionId) 的多次交互中保持上下文記憶。

示例場(chǎng)景

簡(jiǎn)單同步請(qǐng)求: 發(fā)送一個(gè)包含所有必要信息的請(qǐng)求,期望直接得到最終結(jié)果。

例子: "1 美元兌換多少印度盧比?" (How much is the exchange rate for 1 USD to INR?)

需要補(bǔ)充信息的多輪請(qǐng)求: 發(fā)送一個(gè)信息不完整的請(qǐng)求,測(cè)試 Agent 是否會(huì)要求補(bǔ)充信息,以及在收到補(bǔ)充信息后能否給出結(jié)果。

用戶: "1 美元能換多少?" (How much is the exchange rate for 1 USD?)

Agent: "你想換成哪種貨幣?" (Which currency do you want to convert to? )

用戶: "加元" (CAD)

Agent: (返回 1 美元兌換加元的匯率)

流式請(qǐng)求: 發(fā)送一個(gè)訂閱任務(wù)的請(qǐng)求 (tasks/sendSubscribe),測(cè)試服務(wù)器是否會(huì)逐步推送狀態(tài)更新和最終結(jié)果。

例子: "100 美元兌換多少英鎊?" (How much is 100 USD in GBP?),期望收到類似 "正在查找匯率...", "正在處理...", 然后是最終結(jié)果的消息流。

針對(duì)一次提問 ("How much is 100 USD in GBP?"),客戶端收到了三個(gè)以 stream event => 開頭的獨(dú)立消息。這就是流式輸出的核心——服務(wù)器不是一次性返回最終結(jié)果,而是分多次推送信息。 

3.4日志解析

客戶端日志

samples/python/hosts/cli 目錄下的日志,這是最直接展示 A2A 交互的地方。

發(fā)起請(qǐng)求: 當(dāng)在 CLI 中輸入問題(例如 "What is exchange rate between USD and GBP?"),CLI 工具會(huì)構(gòu)建一個(gè)符合 A2A tasks/sendSubscribe 或 tasks/send 規(guī)范的 JSON RPC 請(qǐng)求,并通過 HTTP POST 發(fā)送給 Agent 服務(wù)器 (http://localhost:10000)。雖然日志沒有顯示發(fā)出的請(qǐng)求原文,但后續(xù)的響應(yīng)證明了請(qǐng)求的發(fā)送 ( http://localhost:10000)。雖然日志沒有顯示發(fā)出的請(qǐng)求原文,但后續(xù)的響應(yīng)證明了請(qǐng)求的發(fā)送 )。

接收響應(yīng) (流式事件): 日志中的 stream event => {...} 行就是 Agent 服務(wù)器按照 A2A 協(xié)議返回給 CLI 客戶端的實(shí)時(shí)響應(yīng)。這些 JSON 數(shù)據(jù)結(jié)構(gòu)完全遵循 A2A 規(guī)范:

jsonrpc: "2.0": 表明使用 JSON RPC 協(xié)議。
id: 對(duì)應(yīng)請(qǐng)求的 ID。
result.id: A2A 任務(wù)的 ID。
result.status.state: 顯示任務(wù)狀態(tài),如 working (處理中), input-required (需要輸入), completed (已完成)。這是 A2A 定義的標(biāo)準(zhǔn)狀態(tài)。
result.status.message: 當(dāng)狀態(tài)是 working 或 input-required 時(shí),這里包含 Agent 發(fā)來的中間消息或提問。
result.artifact: 當(dāng)任務(wù)完成時(shí),這里包含最終的結(jié)果。
final: false / true: 表明這個(gè)事件是否是該次請(qǐng)求的最終響應(yīng)。false 代表后面還有更新,true 代表結(jié)束。

多輪交互體現(xiàn): 當(dāng)問 "How much is the exchange rate for 1 USD?" 時(shí),收到的事件中 result.status.state 變?yōu)?input-required,并且 result.status.message 包含了 Agent 的提問 "What currency do you want to convert to?..."。隨后再輸入 "CAD",CLI 再次發(fā)送 A2A 請(qǐng)求,Agent 處理后返回最終結(jié)果。這清晰地展示了 A2A 對(duì)多輪對(duì)話的支持。

Agent 服務(wù)器日志

samples/python/agents/langgraph 目錄下的日志,這份日志展示了 Agent 服務(wù)器內(nèi)部處理 A2A 請(qǐng)求的過程。

接收請(qǐng)求: INFO: 127.0.0.1:xxxxx - "POST / HTTP/1.1" 200 OK 表明服務(wù)器收到了來自 CLI 客戶端的 HTTP POST 請(qǐng)求 (這是承載 A2A 消息的方式)。

任務(wù)管理: INFO:common.server.task_manager:Upserting task ... 和 Getting task ... 顯示服務(wù)器內(nèi)部對(duì) A2A 任務(wù)狀態(tài)的管理。

調(diào)用外部工具: INFO:httpx:HTTP Request: GET https://api.frankfurter.app/ ( https://api.frankfurter.app/ )... 顯示 Agent 為了回答問題,調(diào)用了外部的匯率 API。這是 Agent 內(nèi)部邏輯的一部分,由 A2A 請(qǐng)求觸發(fā)。

準(zhǔn)備響應(yīng): 雖然日志沒有直接顯示服務(wù)器發(fā)送的 JSON 響應(yīng),但服務(wù)器的處理邏輯(調(diào)用 API、生成文本)最終會(huì)

構(gòu)建成您在客戶端日志中看到的 stream event 內(nèi)容,然后發(fā)送回客戶端。

Agent 發(fā)現(xiàn): INFO: 127.0.0.1:xxxxx - "GET /.well-known/agent.json HTTP/1.1" 200 OK 是 CLI 客戶端啟動(dòng)時(shí),根據(jù) A2A 規(guī)范去獲取 Agent 能力描述文件的記錄。

4、MCP 如何與 A2A 協(xié)同

注:這部分內(nèi)容由 LLM 協(xié)助編寫

一個(gè)復(fù)雜的企業(yè) RAG 系統(tǒng),不僅僅是一個(gè)單一的問答機(jī)器人,而是一個(gè)由多個(gè)專業(yè) agents 組成的協(xié)作網(wǎng)絡(luò): 

MCP 的角色(垂直整合 - Agent 與工具/數(shù)據(jù)):

核心 RAG Agent: 每個(gè)負(fù)責(zé)特定領(lǐng)域(如 HR、財(cái)務(wù)、產(chǎn)品技術(shù)文檔)的 RAG Agent,內(nèi)部會(huì)使用 MCP 來標(biāo)準(zhǔn)化地調(diào)用其核心工具

連接并查詢**向量數(shù)據(jù)庫(kù)**以檢索相關(guān)文檔片段。 訪問**結(jié)構(gòu)化數(shù)據(jù)庫(kù)**(如 SQL 數(shù)據(jù)庫(kù))以獲取精確數(shù)據(jù)。 調(diào)用**內(nèi)部 API**(例如,查詢用戶權(quán)限、獲取實(shí)時(shí)庫(kù)存狀態(tài))。 MCP 在這里確保了每個(gè) RAG Agent 能夠高效、可靠地利用其所需的底層數(shù)據(jù)源和功能 API,就像給 Agent 插上了標(biāo)準(zhǔn)化的“眼睛”和“手臂”去感知和操作數(shù)據(jù)。

**A2A 的角色(水平協(xié)作 - Agent 與 Agent):

用戶交互與路由 Agent: 用戶首先接觸的是一個(gè)前端交互 Agent。該 Agent 理解用戶意圖后,利用 A2A 協(xié)議的發(fā)現(xiàn)機(jī)制找到最合適的下游專業(yè) Agent。

任務(wù)委托與編排: 路由 Agent 通過 A2A 向選定的專業(yè) RAG Agent(如 HR Agent 或 技術(shù)文檔 Agent)提交一個(gè)標(biāo)準(zhǔn)的 Task。如果任務(wù)復(fù)雜,需要跨領(lǐng)域知識(shí)(例如,“查詢新員工入職的技術(shù)設(shè)備配置流程和預(yù)算標(biāo)準(zhǔn)”),路由 Agent(或一個(gè)專門的編排 Agent)可以通過 A2A 協(xié)調(diào)技術(shù)文檔 Agent 和財(cái)務(wù) Agent,管理各自子任務(wù)的狀態(tài),最終匯總結(jié)果。A2A 的任務(wù)生命周期管理在此場(chǎng)景下至關(guān)重要。

多輪澄清與協(xié)作: 如果專業(yè) RAG Agent 在處理任務(wù)時(shí)發(fā)現(xiàn)信息不足,可以通過 A2A 向路由 Agent(進(jìn)而傳遞給用戶)發(fā)送需要輸入 (Needs Input) 的狀態(tài)和澄清消息,進(jìn)行多輪交互,而不是簡(jiǎn)單地失敗或返回模糊答案。

主動(dòng)知識(shí)更新與同步: 一個(gè)監(jiān)控 Agent 可以監(jiān)測(cè)外部信息源(如法規(guī)更新網(wǎng)站、內(nèi)部知識(shí)庫(kù)變更),發(fā)現(xiàn)重要更新后,通過 A2A 通知相關(guān)的 RAG Agent 進(jìn)行知識(shí)庫(kù)更新(如重新索引)或觸發(fā)內(nèi)容摘要任務(wù)。

5、寫在最后

總結(jié)來說,與側(cè)重于標(biāo)準(zhǔn)化 Agent/LLM 與外部工具/數(shù)據(jù)源交互的 MCP 相比,A2A 并非畫蛇添足。雖然通過將 Agent 封裝為 API 并使用 MCP 的“工具調(diào)用”模式,但缺乏 A2A 在任務(wù)生命周期管理、豐富消息傳遞、流式狀態(tài)更新和標(biāo)準(zhǔn)化協(xié)作原語方面的深度和靈活性。

A2A 剛推出不久,在實(shí)際生產(chǎn)場(chǎng)景中具體可以發(fā)揮多大的作用還有待各位一起探索,我計(jì)劃后續(xù)分享的項(xiàng)目實(shí)操案例中,會(huì)適當(dāng)加入 A2A 的相關(guān)方法。Anyway,從實(shí)踐中來,到實(shí)踐中去。

責(zé)任編輯:龐桂玉 來源: 韋東東
相關(guān)推薦

2022-08-27 21:31:04

Tauri框架二進(jìn)制

2011-03-21 15:08:56

MongoDBCouchDB

2021-08-24 07:57:26

KafkaRocketMQPulsar

2021-06-10 09:30:50

網(wǎng)絡(luò)應(yīng)用安全

2011-03-28 10:01:59

Windows AzuVMware vFab

2011-04-22 09:05:26

2009-11-11 10:56:50

路由器協(xié)議

2025-02-18 16:00:00

代碼Python架構(gòu)

2025-04-14 09:00:00

數(shù)據(jù)泄露AI AgentMCP協(xié)議安全

2025-04-14 03:00:00

A2AMCPAI

2009-11-05 16:44:51

無線寬帶接入

2009-07-15 08:25:42

微軟Windows 7性能測(cè)試

2017-09-13 15:37:53

2016-12-14 14:43:11

ButterknifeAndroid

2013-11-20 10:20:35

AndroidiOS開發(fā)

2025-04-10 09:42:51

2021-01-13 16:04:07

網(wǎng)絡(luò)On-Prem托管

2019-09-18 15:22:52

消息中間件RabbitMQ

2019-11-13 14:43:12

容器云平臺(tái)軟件

2010-08-04 14:15:44

nfs服務(wù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)