A2A、MCP、Kafka和Flink:AI Agent的新堆棧
AI Agent新堆棧來襲!Google的A2A協(xié)議、Anthropic的MCP協(xié)議,加上Apache Kafka和Apache Flink,構(gòu)建云原生Agent互聯(lián)互通的未來。擺脫Agent孤島,實(shí)現(xiàn)實(shí)時、可觀測、可擴(kuò)展的智能生態(tài)系統(tǒng),速來圍觀!
譯自:A2A, MCP, Kafka and Flink: The New Stack for AI Agents[1]
作者:Sean Falconer
在 Web 出現(xiàn)超文本傳輸協(xié)議 (HTTP) 之前,在電子郵件出現(xiàn)簡單郵件傳輸協(xié)議 (SMTP) 之前,我們一直受困于自定義集成、碎片化系統(tǒng)和脆弱的工作流程。直到開放協(xié)議和共享基礎(chǔ)設(shè)施出現(xiàn),互聯(lián)網(wǎng)才真正實(shí)現(xiàn)了規(guī)?;?,解鎖了現(xiàn)代 Web、全球通信和整個經(jīng)濟(jì)體。
今天,AI agent[2] 也處于這個預(yù)標(biāo)準(zhǔn)化階段。它們功能強(qiáng)大、能力出色且數(shù)量快速增長,但它們無法協(xié)同工作。一個 agent 分析數(shù)據(jù)。另一個 agent 起草代碼。第三個 agent 自動化客戶關(guān)系管理 (CRM) 工作流程。但它們是孤立的、各自為政的,并且不知道彼此的存在。
這種情況正在開始改變。
一個新的堆棧正在涌現(xiàn),以支持互聯(lián)網(wǎng)的下一層——這一層不是為瀏覽網(wǎng)站的人類而構(gòu)建,而是為跨系統(tǒng)協(xié)作的自主 agent 而構(gòu)建。其核心是四個開放組件:
- ? 用于 agent 發(fā)現(xiàn)和通信的協(xié)議。Google 的 Agent2Agent (A2A)[3]
- ? 用于工具使用和外部上下文的標(biāo)準(zhǔn)。Anthropic 的模型上下文協(xié)議 (MCP)[4]
- ? 用于可靠、解耦協(xié)調(diào)的事件驅(qū)動通信結(jié)構(gòu)。Apache Kafka[5]
- ? 用于豐富、監(jiān)控和處理 agent 活動流的實(shí)時處理引擎。Apache Flink[6]
讓我們探討一下這些技術(shù)如何協(xié)同工作,為什么僅靠協(xié)議是不夠的,以及這個新堆棧如何提供從斷開連接的機(jī)器人到動態(tài)、智能 agent 生態(tài)系統(tǒng)所需的基礎(chǔ)設(shè)施。
問題:碎片化的 Agent,脆弱的基礎(chǔ)設(shè)施
如果炒作是正確的——而且它看起來更像是不可避免的,而不是猜測——大多數(shù)公司不會只部署一個 AI agent;他們會部署幾十個。這些 agent 將編寫代碼、分類支持請求、分析客戶數(shù)據(jù)、管理入職、監(jiān)控基礎(chǔ)設(shè)施等等。
但今天的工具還沒有為那個未來做好準(zhǔn)備。
Agent 孤島 (來源: Confluent)
我們不僅面臨“Agent 孤島”問題[7],即 agent 在孤島中運(yùn)行且無法通信;我們還面臨著更廣泛的生態(tài)系統(tǒng)碎片化問題:
? Agent 之間不通信:每個 agent 都在自己的沙箱中運(yùn)行。CRM agent 不知道數(shù)據(jù)倉庫 agent 剛剛發(fā)現(xiàn)了什么。支持 agent 無法響應(yīng)監(jiān)控 agent 剛剛標(biāo)記的相同異常。
? 工具使用是脆弱且定制的:如果沒有調(diào)用工具或外部 API 的標(biāo)準(zhǔn),agent 最終會使用硬編碼的集成和不可重用的邏輯。
? 框架缺乏一致性:不同的 agent 運(yùn)行時使用不同的模型——有些將 agent 視為聊天機(jī)器人,有些將 agent 視為有向無環(huán)圖 (DAG),有些將 agent 視為遞歸規(guī)劃器。沒有可移植的執(zhí)行層或共享狀態(tài)。
? 我們構(gòu)建的方式好像 agent 存在于筆記本中:今天的大多數(shù) agent 都被設(shè)計(jì)成一次性原型——線性的、同步的和短暫的。但真正的系統(tǒng)不是筆記本。它們需要處理重試、故障、協(xié)調(diào)、日志記錄和擴(kuò)展。這需要基礎(chǔ)設(shè)施。
? 沒有協(xié)作的骨干:沒有事件總線,沒有共享內(nèi)存,沒有 agent 所做的事情或原因的可追溯歷史。一切都鎖定在直接 HTTP 調(diào)用中或埋在日志中。
正如 12-Factor Agents[8] 項(xiàng)目所認(rèn)為的那樣,agent 需要遵循云原生原則:它們必須是可觀測的、松散耦合的、可重現(xiàn)的和基礎(chǔ)設(shè)施感知的。但今天,大多數(shù) agent 都是作為脆弱的腳本構(gòu)建的,由手工拼接在一起,并假定它們是孤立運(yùn)行的。
結(jié)果是什么?孤島。重復(fù)。脆弱性。
解決方案不是將所有 agent 塞進(jìn)一個單一的平臺。而是構(gòu)建一個共享堆棧,一個基于開放協(xié)議、事件驅(qū)動架構(gòu)和實(shí)時處理的新基礎(chǔ)。
Agent2Agent 通過為 agent 提供用于發(fā)現(xiàn)和通信的通用協(xié)議來解決部分問題。但是,要超越玩具演示,要達(dá)到生產(chǎn)系統(tǒng)所需的規(guī)模和可靠性,我們需要的不只是協(xié)議。我們需要基礎(chǔ)設(shè)施。
Agent 如何對話和行動:A2A 和 MCP
正如前面提到的,今天的 Agent 生態(tài)系統(tǒng)很像早期的 Web:強(qiáng)大的系統(tǒng),每個都在做有用的工作,但都是孤立且不兼容的。就像瀏覽器曾經(jīng)在沒有標(biāo)準(zhǔn)協(xié)議的情況下難以與服務(wù)器通信一樣,今天的 AI Agent 也不能輕易地發(fā)現(xiàn)、通信或相互協(xié)作。
Google 的 A2A 協(xié)議是一項(xiàng)大膽的嘗試,旨在解決這個問題。它不是另一個 Agent 框架:它是一個通用協(xié)議,旨在連接任何 Agent,無論誰構(gòu)建的它或它在哪里運(yùn)行。
就像 HTTP 標(biāo)準(zhǔn)化了網(wǎng)站的通信方式一樣,A2A 定義了一種 Agent 之間的共享語言。它允許它們:
? 通過AgentCard 宣布功能,這是一個 JSON 描述符,用于聲明 Agent 可以做什么以及如何與之交互。
? 通過結(jié)構(gòu)化交互(使用 JSON-RPC)發(fā)送和接收任務(wù),其中一個 Agent 請求幫助,另一個 Agent 響應(yīng)結(jié)果或“artifacts”。
? 使用服務(wù)器發(fā)送事件 (SSEs) 流式傳輸更新,從而在長時間運(yùn)行或協(xié)作任務(wù)期間實(shí)現(xiàn)實(shí)時反饋。
? 交換富內(nèi)容。文件、結(jié)構(gòu)化數(shù)據(jù)和表單——而不僅僅是純文本——都是 A2A 消息的一流組成部分。
? 默認(rèn)情況下保持安全,這要?dú)w功于對 HTTPS、身份驗(yàn)證和權(quán)限的內(nèi)置支持。
A2A 的前景在于它沒有試圖重新發(fā)明輪子。它借鑒了數(shù)十年的互聯(lián)網(wǎng)協(xié)議歷史,就像 HTTP 和 SMTP 所做的那樣,利用了熟悉的、經(jīng)過實(shí)戰(zhàn)考驗(yàn)的 Web 標(biāo)準(zhǔn)。這使得采用更容易,集成更快。
但 A2A 只是整個圖景的一半。
Anthropic 的 MCP 解決了另一半:Agent 如何使用工具和訪問上下文。MCP 標(biāo)準(zhǔn)化了 Agent 如何調(diào)用 API、調(diào)用函數(shù)以及與外部系統(tǒng)集成——本質(zhì)上,它們?nèi)绾卧谑澜缰兴伎己托袆?。另一方面,A2A 定義了 Agent 之間如何相互交談。
如果說 MCP 是關(guān)于讓 Agent 訪問工具,那么 A2A 就是關(guān)于讓他們訪問彼此。
這兩個協(xié)議共同為互聯(lián)的 Agent 生態(tài)系統(tǒng)提供了一個藍(lán)圖:
? MCP為單個 Agent 提供智能。
? A2A實(shí)現(xiàn)集體智能。
正如 HTTP 和 SMTP 沒有孤立地成功一樣,它們需要采用、基礎(chǔ)設(shè)施和開發(fā)者工具,A2A 和 MCP 也需要一個生態(tài)系統(tǒng)來實(shí)現(xiàn)它們的潛力。
但是,即使有了像 A2A 和 MCP 這樣的標(biāo)準(zhǔn)化,一個根本問題仍然存在:這些 Agent 通信如何在復(fù)雜、動態(tài)的企業(yè)環(huán)境中有效地?cái)U(kuò)展?僅僅依靠這些協(xié)議定義的直接、點(diǎn)對點(diǎn)連接會帶來自身的一系列挑戰(zhàn),尤其是在可擴(kuò)展性、彈性和可觀測性方面。 這使我們認(rèn)識到需要一個強(qiáng)大的底層通信基礎(chǔ)設(shè)施。
我們需要一個事件驅(qū)動的骨干,而不僅僅是協(xié)議
想象一下,經(jīng)營一家公司,每個員工只能通過發(fā)送直接的、一對一的消息進(jìn)行溝通。需要分享更新?您必須單獨(dú)向每個人發(fā)送消息。想要協(xié)調(diào)五個團(tuán)隊(duì)的項(xiàng)目?您會被困在手動在每個團(tuán)隊(duì)之間傳遞信息。
現(xiàn)在想象一下,嘗試將其擴(kuò)展到數(shù)百名員工?;靵y。
這正是構(gòu)建在直接連接上的 Agent 生態(tài)系統(tǒng)中發(fā)生的事情。每個 Agent 必須知道與誰交談、如何聯(lián)系他們以及他們何時可用。隨著 Agent 數(shù)量的增長,所需連接的數(shù)量呈指數(shù)增長。系統(tǒng)變得脆弱、難以管理且?guī)缀醪豢赡軘U(kuò)展。
A2A 和 MCP 為 Agent 提供了溝通和行動的語言和結(jié)構(gòu),但僅有語言是不夠的。為了協(xié)調(diào)企業(yè)中的數(shù)十個或數(shù)百個 Agent,您還需要基礎(chǔ)設(shè)施來支持這些消息的移動方式以及 Agent 如何對它們做出反應(yīng)。
這就是 Apache Kafka 和 Apache Flink[9] 的用武之地。
Kafka 和 Flink:快速入門
Apache Kafka[10] 是一個分布式事件流平臺,最初由 LinkedIn 開發(fā),現(xiàn)在是 Apache 軟件基金會的一部分。它充當(dāng)持久、高吞吐量的消息總線,允許系統(tǒng)實(shí)時發(fā)布和訂閱事件流。Kafka 被廣泛使用,從金融系統(tǒng)到欺詐檢測再到遙測管道,因?yàn)樗鼘⑸a(chǎn)者與消費(fèi)者分離,并確保數(shù)據(jù)[11]是持久的、可重放的和可擴(kuò)展的。Flink[12], 同樣也是一個 Apache 項(xiàng)目,是一個實(shí)時流處理引擎。它從一開始就被設(shè)計(jì)用于有狀態(tài)、高吞吐量、低延遲的事件處理。Kafka 負(fù)責(zé)數(shù)據(jù)的移動,而 Flink 負(fù)責(zé)在數(shù)據(jù)流經(jīng)系統(tǒng)時對其進(jìn)行轉(zhuǎn)換、豐富、監(jiān)控和編排。它們共同構(gòu)成了一個強(qiáng)大的組合:Kafka 是血液,F(xiàn)link 是反射系統(tǒng)。
Kafka 和 Flink:Agent 生態(tài)系統(tǒng)的基礎(chǔ)設(shè)施
正如 A2A 正在成為 agent 世界的 HTTP 一樣,Kafka 和 Flink 構(gòu)成了事件驅(qū)動的基礎(chǔ),可以支持可擴(kuò)展的 agent 通信和計(jì)算。它們解決了直接的點(diǎn)對點(diǎn)通信無法解決的問題:
? 解耦:使用 Kafka,agent 不需要知道誰將消費(fèi)它們的輸出。它們將事件(例如,"TaskCompleted", "InsightGenerated")發(fā)布到主題;任何感興趣的 agent 或系統(tǒng)都可以訂閱。
? 可觀測性和可重放性:Kafka 維護(hù)每個事件的持久、按時間排序的日志,使 agent 行為完全可追溯、可審計(jì)和可重放。
? 實(shí)時決策:Flink 使 agent 能夠?qū)崟r響應(yīng)事件流[13],根據(jù)動態(tài)條件過濾、豐富、連接或觸發(fā)操作。
? 彈性和擴(kuò)展:Flink 作業(yè)可以獨(dú)立擴(kuò)展、從故障中恢復(fù)并在長時間運(yùn)行的工作流中保持狀態(tài)。這對于執(zhí)行復(fù)雜的多步驟任務(wù)的 agent 至關(guān)重要。
? 流原生協(xié)調(diào):agent 可以通過事件流進(jìn)行協(xié)調(diào),發(fā)布更新、訂閱工作流并協(xié)同推進(jìn)狀態(tài),而不是等待同步響應(yīng)。
簡而言之:
? A2A 定義了 agent 如何說話。
? MCP 定義了它們?nèi)绾螌ν獠抗ぞ卟扇⌒袆印?/p>
? Kafka 定義了它們的消息如何流動。
? Flink 定義了這些流如何被處理、轉(zhuǎn)換并轉(zhuǎn)化為決策。
A2A、MCP、Kafka 和 Flink 如何協(xié)同工作
像 A2A 和 MCP 這樣的協(xié)議對于標(biāo)準(zhǔn)化 agent 行為和通信至關(guān)重要。但是,如果沒有像 Kafka 這樣的事件驅(qū)動底層和像 Flink 這樣的流原生運(yùn)行時,這些 agent 仍然會陷入孤立的交互中,無法靈活地協(xié)調(diào)、優(yōu)雅地?cái)U(kuò)展或隨著時間的推移進(jìn)行推理。
為了充分實(shí)現(xiàn)企業(yè)級、可互操作的 AI agent 的愿景,我們需要四個層次:
? 協(xié)議:A2A, MCP – 定義什么。
? 框架:LangGraph, CrewAI, ADK – 定義如何。
? 消息傳遞基礎(chǔ)設(shè)施:Apache Kafka – 支持流動。
? 實(shí)時計(jì)算:Apache Flink – 支持思考。
總而言之,這是 AI agent 的新互聯(lián)網(wǎng)堆棧——構(gòu)建不僅智能,而且協(xié)作、可觀測和可用于生產(chǎn)的系統(tǒng)的基礎(chǔ)。
架構(gòu)圖:A2A、MCP、Kafka 和 Flink 如何協(xié)同工作
A2A、MCP、Kafka 和 Flink 如何協(xié)同工作。(來源:Confluent)
前進(jìn)的道路:構(gòu)建集體智能
我們正處于軟件發(fā)展的關(guān)鍵時刻。
正如最初的互聯(lián)網(wǎng)堆?!?HTTP 和 SMTP 這樣的協(xié)議,以及像 TCP/IP 這樣的基礎(chǔ)設(shè)施——開啟了全球互聯(lián)互通的新時代一樣,一個新的堆棧正在為 AI agent 涌現(xiàn)。但與人類瀏覽頁面或發(fā)送電子郵件不同,這個堆棧是為自主系統(tǒng)協(xié)同工作以進(jìn)行推理、決策和行動而構(gòu)建的。
A2A 和 MCP 提供了 agent 通信和工具使用的協(xié)議。Kafka 和 Flink 提供了實(shí)時協(xié)調(diào)、可觀測性和彈性的基礎(chǔ)設(shè)施。它們共同使得從斷開連接的 agent 演示到可擴(kuò)展的、智能的生產(chǎn)級生態(tài)系統(tǒng)的轉(zhuǎn)變成為可能。
這不僅僅是解決工程挑戰(zhàn)。這是關(guān)于啟用一種新型軟件,其中 agent 跨越邊界進(jìn)行協(xié)作,實(shí)時提供洞察和行動流,從而使智能成為一個分布式系統(tǒng)。
但是這個愿景不會自行實(shí)現(xiàn)。我們需要構(gòu)建它:開放地、可互操作地,并牢記上次互聯(lián)網(wǎng)革命的教訓(xùn)。
因此,下次您構(gòu)建 agent 時,不要只問它能做什么。問問它如何適應(yīng)更大的系統(tǒng)。它能溝通嗎?它能協(xié)調(diào)嗎?它能進(jìn)化嗎?
因?yàn)槲磥聿粌H僅是 agent 驅(qū)動的;它是 agent 連接的。
引用鏈接
[1] A2A, MCP, Kafka and Flink: The New Stack for AI Agents:https://thenewstack.io/a2a-mcp-kafka-and-flink-the-new-stack-for-ai-agents/
[2]AI agent:https://thenewstack.io/ai-agents-a-comprehensive-introduction-for-developers/
[3]Google 的 Agent2Agent (A2A):https://developers.googleblog.com/en/a2a-a-new-era-of-agent-interoperability/[4]Anthropic 的模型上下文協(xié)議 (MCP):https://thenewstack.io/model-context-protocol-a-primer-for-the-developers/[5]Apache Kafka:https://kafka.apache.org/
[6]Apache Flink:https://flink.apache.org/
[7]“Agent 孤島”問題:https://medium.com/@seanfalconer/the-ai-silo-problem-how-data-streaming-can-unify-enterprise-ai-agents-0a138cf6398c
[8]12-Factor Agents:https://github.com/humanlayer/12-factor-agents
[9]Apache Kafka 和 Apache Flink:https://thenewstack.io/building-a-meal-planning-agent-with-apache-kafka-and-flink
[10]Apache Kafka:https://www.confluent.io/lp/apache-kafka/?utm_medium=sem&utm_source=google&utm_campaign=ch.sem_br.nonbrand_tp.prs_tgt.kafka_mt.xct_rgn.namer_sbrgn.unitedstates_lng.eng_dv.all_con.kafka-what-is_term.what-is-apache-kafka&utm_term=what%20is%20apache%20kafka&creative=&device=c&placement=&gad_source=1&gbraid=0AAAAADRv2c0xMf9u9gysZ9gIjG7xOxO7U&gclid=Cj0KCQjw_JzABhC2ARIsAPe3ynpCOCYZ1DXfQO31ozymoakcUf_1NqNVBaKF0U7DNqQkc2-ZPmFMlpYaAoKmEALw_wcB
[11]確保數(shù)據(jù):https://thenewstack.io/how-to-handle-bad-data-in-event-streams/
[12]Flink:https://www.confluent.io/learn/apache-flink/
[13]實(shí)時響應(yīng)事件流:https://thenewstack.io/real-time-ai-apps-using-apache-flink-for-model-inference/