文 | 多模肽
去年12月Anthropic推出MCP協議后,MCP的熱度就一直居高不下。然后上個月,Google的A2A協議也出來了,連帶著又引發了一波討論。這兩個協議之所以火,有它的時代背景。
??袋c行業新聞的朋友,應該都注意到了一種趨勢,最近基礎模型的訓練越來越呈現出寡頭化特征。有能力還有意愿搞基礎大模型的,除開幾家頭部大廠,剩下的創業公司已經是鳳毛麟角了。
AI的前景廣闊是共識,但機會只存在于模型的應用而非研發。
MCP跟A2A兩種協議,本質上都是為AI應用鋪開打造的基礎設施。
AI的應用生態構建,可以看作是圍繞三個角色展開的:用戶、Agent和外部世界。
如果要讓這個應用生態發展壯大,首先要解決的就是這幾類角色之間的互聯互通。
從這個角度看,很明顯MCP解決的是Agent跟外部世界的互聯互通,A2A解決的是Agent跟Agent之間的互聯互通。但你有沒有發現這里面還差點啥?Agent跟自己,Agent跟外部世界都有了協議了來規范溝通互動,那用戶跟Agent之間呢?
今天我們要介紹的新協議AG-UI,就是針對的這個問題,它規范了Agent跟前端界面要如何連接、交流和互動。繼MCP和A2A之后,AG-UI補齊了AI應用生態發展所需的最后一塊協議拼圖。
在介紹AG-UI之前,我們先對一些背景概念做個簡單梳理。
首先聊聊Agent是什么。
這已經是個聊爛了的名詞。
國內一般把Agent翻譯成智能體,這個翻譯不能說有問題,但并沒有很準確地傳達出Agent的本質。
英文里Agent原意是代理人,這個代理人接受授權后,替其他人、公司或者組織完成一些相應的工作。
比如最常見的,房屋中介就是agent的一種,房屋主人把房子委托給他們,他們代理完成房子出租或者出售的工作,這樣房屋主人就不必自己費勁巴拉去阿找租戶或者買家。
AI Agent其實也是類似的作用,在用戶需要實現某個任務的時候,它們可以主動自覺地采取行動,完成分析拆解、獲取信息、調用工具、整合響應等過程。
比如這兩天出了個新工具叫Lovart,據稱是首款設計Agent。
有博主嘗試了下,你給他一句提示語,要求生成一個廣告片,它就能自己去調用Flux生成分鏡圖、用TTS模型生成旁白、用可靈生成分鏡視頻,最后再調用剪輯工具出成片。
理論上講,任何一款模型,只要它具備生成視頻的能力,那你就可以直接用它同樣的事。
甚至說,只要能生成圖片就可以了,因為你可以一幀一幀地把圖片拼成視頻嘛。
但這樣做肯定沒有用Lovart這種Agent來得省力,不要說視頻,就算是一張海報,你用通用模型生成的結果,可能換幾十遍提示詞都趕不上這些專業設計Agent直出來得好。
理解了Agent的概念,MCP和A2A起到的作用就很顯然了。
Agent要完成任務,很多時候都不能只用到背后的大模型,還需要用到外部世界的一些資源和工具。
而要調用工具,你肯定要傳遞參數吧,比如最起碼的工具名稱是啥。這時候就要有MCP這種協議,不然那么多模型那么多工具,最后都不兼容就很麻煩。
之前大家搞Function Calling,工具名OpenAI放在 tools
字段里,Claude又放在的 tool_use
字段里,就是各做各的不兼容。
類似的,Agent之間要互相協作也要有個規范,這個規范就是A2A協議。
比如,新員工入職的時候,由HR Agent負責入職流程,HR Agent可以告訴IT Agent開通OA賬號,同時告知Admin Agent分配工位和門禁。
當然在實踐中,這種公司內部的Agent之間即便沒有A2A規范也是很容易協調打通的,但對于世界上存在的不同個人、企業和組織開發的各種不同功能的Agent而言,有一個規范就很有必要了。
聊完這些,我們下面展開談談AG-UI協議要解決的問題。
如上所說,在Agent出現之前,用戶就已經存在跟外部世界的互動了。
Agent加進來過后,其實就有三個新的關系需要協調了:Agent跟外部世界,Agent跟Agent,Agent跟用戶。
MCP和A2A解決了前面兩個關系的協作,AG-UI要補上的則是最后一塊拼圖。
在官方給出的示意圖中,可以看出來AG-UI這個協議,就是嵌在應用和后端Agent之間的。如果沒有AG-UI協議支持,在下圖中應用就是直接跟AI Agent連接的。
那現在的問題是,為啥非要有個AG-UI協議呢?
其實跟MCP或者A2A一樣,AG-UI提供的是前端應用跟后端Agent之間溝通的一個標準范式和基礎實現。
AG-UI相當于是個磚廠,建房子的時候本來你要自己從零開始選土-和泥-制坯-燒磚,現在你可以直接用現成的,質量還比你自己做的更好。AG-UI是事件驅動的工作模式。
對于沒有編程經驗的讀者,可能會覺得有點難懂。
我們掰開講講。對于一個應用而言,它的前端UI是面向用戶的,用戶不關心你后端Agent是怎么實現的,他只在乎自己在使用產品時的用戶體驗。
AI Agent在接受用戶輸入后,它可能需要做很多工作,比如調用大模型生成響應、規劃任務執行步驟、向用戶申請調用某些外部工具等。
這種情況下用戶肯定不希望自己在前面傻傻等著,他更希望前端UI能夠及時調整,向他呈現相關Agent的狀態信息:比如任務執行到哪一步了、調用工具的時候使用哪些參數、工具調用請求執行到哪了(是準備開始執行、已經確認參數、還是說請求已經發送完畢了)等等。
每當任務在后臺產生進度,就會產生一個事件信息,前端就根據這個事件信息調整UI界面。
這么說還是有點抽象,我們看個演示案例。
比如官方有個demo,記錄了一個AI文件編輯器在使用時的UI界面變化,它后端連接的Agent是Copilot。當你讓Copilot生成一個故事的時候,前端UI會像打字一樣,一個字符一個字符地更新。當你要求把故事的主人公名字換一下,UI界面也會呈現出Copilot的修改過程。
這些功能是怎么實現的呢?前端UI和后端的Copilot共享一個文件狀態,當Copilot生成內容的時候,更新會被傳輸到前端UI,前端UI不會等所有更新傳輸完畢才開始重新渲染頁面,而是根據收到的更新內容即時呈現變化。最終所有的修改,在視覺上都能非常直觀地看見。
AG-UI協議提供了五類事件,包括:
Lifecycle Events
,
Text Message Events
,
Tool Call Events
,
State Management Events
,
Special Events
。
我們挑一些說一下,完整的內容可以去官網上看。
像上面這個案例,就用到了狀態管理事件(State Management Events),包括:
STATE_SNAPSHOT
,
STATE_DELTA
,
MESSAGES_SNAPSHOT
。
STATE_SNAPSHOT
提供Agent在某個瞬間的完整狀態,如果狀態有更新,就用STATE_DELTA
傳遞更新的部分狀態。
這種做法的好處是頻繁的小更新不需要傳輸整個狀態數據,既保證了狀態的完整性,又實現了效率。平常只需要傳遞STATE_DELTA
,如果確實需要全部同步,那按需偶爾傳遞一些狀態快照STATE_SNAPSHOT
就可以了。
生命周期事件(Lifecycle events)包含以下五種:
RUN_STARTED,
RUN_FINISHED,
RUN_ERROR,
STEP_STARTED,
STEP_FINISHED。
一個標準的Agent調用會由RunStarted
事件開始,中間可能包含很多個步驟,這些步驟用StepStarted
/StepFinished
來標識,最后由RunFinished
(成功)或者RunError
(失?。┦录Y束。
由于有這樣一個模式,這樣前端就可以跟蹤Agent執行進度,按照事件發生情況調整UI界面向用戶呈現信息,或者在發生錯誤的時候針對性地處理。用流程圖表示如下 :
文本信息事件(Text message events)包含以下三種:
TEXT_MESSAGE_START,
TEXT_MESSAGE_CONTENT,
TEXT_MESSAGE_END。
文本信息的生成和響應是現階段大語言模型最普遍的模式,我們這里再看下AG-UI協議對這一模式提供了什么樣的支持。
當Agent要生成并傳遞文本信息的時候,首先以TEXT_MESSAGE_START
事件開始,中間是一個或多個TEXT_MESSAGE_CONTENT
事件,最后以TEXT_MESSAGE_END
結束。
為什么可能有多個TEXT_MESSAGE_CONTENT
事件呢?因為這樣前端UI就不需要等所有Token生成完了,才能一次性打包傳送文本信息,它可以分多次傳送。
基于這個事件驅動流程,在處理文本響應的時候,前端UI能做很多事情改善用戶體驗,比如TextMessageStart
事件發生了,就彈出一個顯示“正在加載”的消息氣泡;TEXT_MESSAGE_END
事件發生了,前端就可以取消渲染、移除“正在加載”相關的指示圖標,自動向下翻頁呈現完整內容等等。
當然,總的來說,跟MCP和A2A一樣,并談不上有突破性的創新。但它統一了Agent跟UI溝通的標準,并提供了最佳實踐。MCP和A2A給行業帶來過興奮,而隨著AG-UI補齊最后一塊協議拼圖,AI應用生態的繁榮互通更加值得期待。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.