谷歌 A2A 協議:Agent2Agent 的通信協議
A2A 協議
A2A 文檔:https://google.github.io/A2A
GitHub: https://github.com/google/A2A
想象一下這個場景:
你公司裏的 HR Agent 在篩選簡歷,財務 Agent 在覈對薪資,面試 Agent 在安排日程——但它們彼此無法溝通,就像三個互不理解的人在同一間辦公室各自工作。• 企業需要不斷切換系統,工作效率被這些 "數字孤島" 大大降低。
Agent2Agent(簡稱 A2A)協議, 讓不同 AI 智能體能像人類團隊一樣自然交流合作。
什麼是 A2A 協議
• A2A 全名 Agent2Agent,是一個開放源代碼的協議,讓不同公司、不同底層技術的 AI Agent 能安全地相互交流,無論它們是基於 GPT、Gemini 還是 Claude。
• 舉個例子:如果把 MCP 看作是智能體的 "工具箱"(提供扳手、計算器等工具),那 A2A 就像是它們之間的 "微信羣聊"。
技術特點: 基於普通網絡技術如 HTTP、JSON-RPC 等構建
A2A 的設計原則
1、讓 agent 能以自然、非結構化的方式進行協作,即使它們不共享記憶、工具和上下文也能協作
2、協議基於現有的流行標準,比如 HTTP、SSE、JSON-RPC),便於集成
3、支持企業級認證和授權,與 OpenAPl 的認證方案一致
4、支持長期任務,支持從快速任務到可能需要數小時甚至數天的深度研究任務,同時提供實時反饋和狀態更新
5、支持多模態,包括音頻和視頻流,不僅僅是文本
A2A 協議核心概念
A2A 協議包含以下核心概念:
-
Agent Card (代理卡片)
公共元數據文件 (通常位於 /.well-known/agent.json),描述代理的能力、技能、端點 URL 和認證要求。客戶端用它來發現代理服務。 -
A2A Server (A2A 服務器)
暴露 HTTP 端點並實現 A2A 協議方法的代理。它接收請求並管理任務執行。 -
A2A Client (A2A 客戶端)
消費 A2A 服務的應用程序或另一個代理。它向 A2A 服務器的 URL 發送請求 (如 tasks/send)。 -
Task (任務)
工作的核心單元。客戶端通過發送消息 (tasks/send 或 tasks/sendSubscribe) 啓動任務。任務有唯一 ID,狀態包括:submitted(已提交)、working(執行中)、input-required(需要輸入)、completed(已完成)、failed(失敗)和 canceled(已取消)。 -
Message (消息)
代表客戶端 (role: “user”) 和代理 (role: “agent”) 之間的通信。消息包含多個 Parts。 -
Part (部分)
消息或工件中的基本內容單元。可以是 TextPart(文本部分)、FilePart(帶有內聯字節或 URI 的文件部分) 或 DataPart(用於結構化 JSON 的數據部分,例如表單)。 -
Artifact (工件)
代表代理在任務執行過程中生成的輸出 (例如,生成的文件、最終結構化數據)。工件也包含 Parts。 -
Streaming (流式處理)
對於長時間運行的任務,支持 streaming 功能的服務器可以使用 tasks/sendSubscribe。客戶端接收 Server-Sent Events (SSE),其中包含 TaskStatusUpdateEvent 或 TaskArtifactUpdateEvent 消息,提供實時進度更新。 -
Push Notifications (推送通知)
支持 pushNotifications 的服務器可以主動將任務更新發送到客戶端提供的 webhook URL,通過 tasks/pushNotification/set 配置。
A2A 的通信機制
典型的 A2A 通信流程如下:
-
發現:客戶端從服務器的 well-known URL 獲取 Agent Card。
-
初始化:客戶端發送包含初始用戶消息和唯一任務 ID 的 tasks/send 或 tasks/sendSubscribe 請求。
-
處理:
(流式處理):服務器在任務進行時發送 SSE 事件 (狀態更新、工件)。
(非流式處理):服務器同步處理任務並在響應中返回最終的 Task 對象。 -
交互 (可選):如果任務進入 input-required 狀態,客戶端通過 tasks/send 或 tasks/sendSubscribe 使用相同任務 ID 發送後續消息。
-
完成:任務最終達到終止狀態 (completed、failed、canceled)。
A2A 與 mcp 的區別和聯繫
mcp 協議
-
使用結構化輸入 / 輸出將代理連接到工具、API 和資源。
-
Google ADK 支持 MCP 工具。使各種 MCP 服務器能夠與代理一起使用
A2A 協議
-
A2A(Agent2Agent 協議)用於代理 - 代理協作
-
不同代理之間的動態多模態通信,無需共享內存、資源和工具
-
社區驅動的開放標準。
-
使用 Google ADK、LangGraph、Crew.AI 提供的示例
-
多個 aegnt 通過固定格式的 json 來交互
![pg0nAV]
(https://raw.githubusercontent.com/errolyan/tuchuang/master/uPic/pg0nAV.png)
適合場景
多 agent 共同處理一個複雜的任務:
示例多 agent 通信: https://github.com/google/A2A/tree/main/samples/python/agents
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/WpCZXMyfQ2uyRYtxtAAAag