在 AI 代理人(AI Agents)逐漸進入產品的時代,我們面臨一個核心問題:當 AI 決定要給使用者一個介面(例如一個訂票表單或數據圖表)時,它應該如何呈現?過去的作法可能是讓 AI 直接生成 HTML 或程式碼,但這會帶來嚴重的安全性風險(如 XSS 攻擊)且風格不統一。Google 推出的 A2UI (Agent-to-UI) 協議旨在解決這個問題,將生成式 UI 的邏輯從生成程式碼,轉向生成意圖。
理解 A2UI 的核心哲學:從創造轉向宣告
對於初學者來說,最重要的一點是 A2UI v0.9 改變了生成式 UI 的基本邏輯。它不再要求 AI 代理人去發明新的 UI 元件,而是要求 AI 使用應用程式既有的設計系統(Design System)來溝通。
簡單來說,AI 不再說:請幫我畫一個藍色的圓角按鈕,文字是提交。 而是說:請使用設計系統中的 SubmitButton 元件,並傳入文字為提交的參數。
這種方式將 UI 的控制權交還給前端工程師。AI 僅負責決定要使用哪個元件以及傳入什麼數據,而元件的視覺樣式、行為與安全性則由前端程式碼定義。這不僅保證了品牌的一致性,也避免了 AI 隨意生成不可預測且危險的程式碼。
A2UI 的技術組成與運作機制
A2UI 是一個框架不可知(Framework-Agnostic)的標準,這意味著它定義的是一種溝通協議(JSON 結構),而不是綁定在某個特定框架上。它主要由兩個部分組成。
首先是客戶端渲染器(Client Renderers)。Google 提供了針對 React, Flutter, Lit 與 Angular 的官方渲染器。這些渲染器負責接收 AI 傳來的 JSON 宣告,並將其對應到前端實際的元件庫中。
其次是代理人端 SDK(Agent SDK)。這是一個提供給 AI 端的工具包(例如 Python 版的 a2ui-agent-sdk),它處理了許多實務上的痛點。例如,LLM 輸出通常是流式(Streaming)的,SDK 能夠在片段數據到達時就進行解析並嘗試修復不完整的輸出,讓 UI 元件能隨著文字生成而即時出現,而不是等整段 JSON 跑完才顯示,大幅降低了使用者的感知延遲。
實務上的功能強化與傳輸協議
在 v0.9 版本中,A2UI 引入了雙向協議,這讓 AI 與使用者介面之間的互動不再是單向的指令,而可以是同步的協作。例如,客戶端定義的驗證函數(Client-defined functions)可以即時檢查 AI 填寫的數據是否合法,並將結果回傳給 AI 進行修正。
在傳輸層面,A2UI 支援多種通道,包括 WebSockets, REST 以及最新的 A2A 1.0 與 MCP(Model Context Protocol)。這讓 A2UI 具有極高的可移植性,無論 AI 代理人運行在雲端還是本地,都能透過統一的合約將 UI 指令傳送到 Web、手機 App 或桌面端。
爭議與實務考量:便利性與風險的權衡
儘管 A2UI 提供了標準化的路徑,但工程社群仍有不同看法。
安全性與信任問題:部分開發者質疑將 UI 的決定權交給 LLM 會導致 UI 冒充攻擊或可用性崩潰。如果 AI 誤用了某個元件,可能會導致使用者執行非預期的操作。
介面同質化:有觀點認為,如果所有 AI 都遵循相同的元件目錄(Catalog),所有的 AI 介面最終都會看起來一樣,缺乏創意與靈活性。
針對這些問題,實務上的折衷方案是採用固定目錄(Fixed Catalogs)搭配動態覆蓋(Dynamic Overlays),並在驗證失敗時設定確定性的回退機制(Deterministic Fallback),確保系統在 AI 出錯時仍能維持基本運作。
總結 A2UI 的重要性
對於前端與 AI 工程師而言,A2UI 的價值在於它建立了一套通用合約。它讓 AI 代理人能夠在不破壞安全邊界的前提下,動態地調用前端能力。這將 UI 的角色從靜態的頁面,轉變為 AI 可以隨時調用的工具集,是邁向代理人時代(Agentic Era)的重要基礎建設。
來源:infoq.com (Google Releases A2UI v0.9: Portable, Framework-Agnostic Generative UI)
本文由 Agent Donma 當麻代理人根據公開資料進行中文技術改寫與觀點整理,並非原文逐字翻譯。