手机网站修改,西安seo网站管理,网页空间层次,建设网站询价对比表模板从2024年底开始#xff0c;围绕 AI Agent#xff08;智能体#xff09;的一系列开放协议开始密集出现。它们的共同目标很明确#xff1a;为不断“生长”的 Agent 生态建立一套可通用、可协作的语言与标准。
Google 最新开源的 A2UI#xff08;Agent to UI#xff09;协议…从2024年底开始围绕 AI Agent智能体的一系列开放协议开始密集出现。它们的共同目标很明确为不断“生长”的 Agent 生态建立一套可通用、可协作的语言与标准。Google 最新开源的A2UIAgent to UI协议提出了一个新思路—让 AI Agent 学会“说 UI 的语言”。通过一种安全、声明式的格式将UI需求发送给前端应用用来渲染与交互。本文将深入解读这个新协议。特别是它与我们曾介绍过的AG-UI、CopilotKit回顾[一步步实战 CopilotKitAG-UI协议]是什么关系而与MCP、A2A等协议又是怎样的协作方式Agent UI面临怎样的挑战A2UI 协议Agent UI的“描述语言”实例解析A2UI如何工作A2UI 与 AG-UI、Copilot 的联系总结Agent协议组合栈及未来演进01 Agent UI面临怎样的挑战传统的 Agent 与用户交互主要依赖文本或语音尤其是在对话式 AI Agent 中更为常见。但正如我们之前强调的那样自然语言交互只是最简单的方式并不总是最高效的方式。在日常的个人助手场景中用聊天完成简单问答当然没有问题但一旦进入企业级场景单纯靠对话效率就会迅速下降。比如你想让 AI 帮你预订一家心仪的餐厅日期、时间、人数需要一轮一轮地来回确认。每增加一个约束条件就多一次对话往返整个过程既冗长又容易出错用户体验并不理想。在这种情况下更合理的方式是直接呈现一个交互式表单让用户选择日期、时间、人数点击提交即可完成预订。相比反复“聊天确认”一个清晰、聚焦的 UI 往往高效得多。【现有Agent UI的方法】目前大多数 Agent 应用的 UI仍然是由前端工程师使用 React、Vue、Flutter 等框架提前构建整体交互流程相对固定。也有一些探索性的方案。例如我们之前介绍过的CopilotKit具有“生成式 UI”的能力前端根据 Agent 返回的状态或数据动态生成并渲染相应的UI。比如将Agent调用的天气查询结果渲染成前端的卡片但这里的“生成式UI”其交互形态、组件结构仍然是在前端提前定义好的框架只是提供了更方便的机制如 hooks帮助在 UI 与后端 Agent 之间同步状态和数据。或者说UI 的主导权依然在前端Agent 并不“理解”或“描述”界面本身。【对话式 Agent UI 的独特挑战】相比传统应用 UI对话式 Agent 的界面其实有着特殊的需求动态性UI元素需要随着上下文即时生成或调整某种程度上应该由 AI 来“决定该出现什么”。安全性但你又不能直接执行 AI 输出的前端代码否则极易引入 XSS、代码注入等风险。AI应该“描述UI”而不是“构建UI”。跨平台同一个 Agent可能服务于Web/App/桌面等多种前端各UI 技术栈并不相同。能否做到“一次UI生成多端呈现”流式交互正如文本的流式输出能否让用户也能实时看到 UI 的生成和变化而不是长时间等待一次性“憋”出完整的UI状态同步UI的表单数据、进度状态、临时输入往往需要与后端 Agent 状态保持同步。能否根据状态变化局部更新UI【总结问题的本质】归根结底Agent UI 面临的是这样的挑战如何让 AI 以安全、可控、跨平台的方式驱动交互界面的生成与更新在 A2UI 协议出现之前这一领域还缺乏统一标准。OpenAI、Anthropic 等厂商都定义了各自生成 UI 的方式彼此之间并不兼容。显然这正是一个开放的Agent UI协议真正有价值的地方。02 A2UI 协议Agent UI的“描述语言”现在让我们进入A2UI的世界A2UI目前还处于预览阶段稳定版0.8草稿版0.9在消息格式等方面会不断优化但核心思想会保持稳定。【A2UI 是什么】简而言之A2UIAgent-to-User Interface是一种声明式的生成式 UI 规范。它允许 AI Agent 使用 JSON 数据来描述UI布局与组件应该“长什么样、能做什么”。Agent 不再局限于输出字符串而是可以返回一份”UI 组件树的描述“。前端应用接收到描述后再使用本地已有的组件库将其渲染成真正可交互的界面。你可以把这个过程理解为AgentAI负责“描述 UI”前端负责“绘制 UI”。本质上就是给 Agent 配备一门“UI 语言”而前端负责把其翻译成你看到的交互界面。用下图表示A2UI协议的工作流程【核心设计思想】A2UI 背后有一组非常明确的设计原则使其特别适合由 LLM 生成、并在多平台上稳定运行。安全的声明式设计A2UI 定义的是纯数据格式而不是可执行代码。正如官方文档中所强调的“Running arbitrary code generated by an LLM may present security risk. A2UI is declarative data format, not executable code…”为此A2UI 引入了一个可信组件库catalog的概念所有可渲染的 UI 组件如 Button、Card、Text 等都需要事先在组件库中注册。Agent 只能“请求使用”这些白名单组件而无法注入任意脚本或超出范围的元素。所以A2UI 传递的并不是“如何操作 DOM”而是一张UI 蓝图它告诉前端应该使用哪些已核准的组件以及它们的属性和布局关系而具体怎么渲染、怎么执行始终由宿主前端应用掌控。LLM 友好 ”流式“UI生成A2UI 的协议结构在设计时明确考虑了LLM的生成特性UI的描述采用了扁平化的 JSON 列表结构在最新的0.9版进一步完善而不是深度嵌套的树形结构。它让 LLM 更容易进行逐步、流式的生成LLM可以先输出一个根组件的“占位描述”再在后续的输出中补充子组件或细节也可以只对 UI 的某一部分进行增量更新。最终效果就是UI 可以一边生成一边展示用户能够看到界面逐步成形而不是等待输出完整 JSON 后才开始渲染。跨框架、跨平台的可移植性A2UI 的另一个核心设计是彻底解耦界面结构与具体实现。Agent 发送的只是UI组件结构和必要的绑定数据不包含任何与 React、Flutter等具体框架绑定的细节。真正的组件映射和渲染完全由客户端负责。也就是同一份 A2UI JSON可以被不同平台的渲染器解释为各自原生的 UI 组件。比如同一个“A2UI 按钮”在 Web 环境中可能渲染为 HTML Button在 Flutter 中映射为 RaisedButton在 iOS 上则对应 SwiftUI 的 Button各端既能复用统一的 Agent 输出又能保持与宿主应用一致的原生体验而无需让 AI 关心任何平台差异。状态与数据绑定除了界面结构还需要一个机制把必要的数据绑定到组件上比如在一个列表组件上展示Agent检索到的多个餐厅名称。A2UI 因此引入了dataModel消息机制以支持UI组件与数据之间的绑定。一方面Agent 可以发送单独的数据更新消息类似”某个Button上要显示xxx文字“前端渲染器据此刷新UI避免每次重发整份 UI 描述。另一方面当用户点击按钮、填写表单触发交互时前端将事件以标准化消息的形式送回 AgentAgent 再根据这些事件触发流程、更新数据或UI。由此A2UI 在 Agent 与 UI 之间形成了一个完整、可控的交互闭环。03 实例解析A2UI如何工作为了更直观地理解 A2UI我们不妨通过一个完整的场景来走一遍工作流程。假设有一个 Agent负责帮用户查找与预订餐厅。当用户输入“帮我预订 2 人的餐厅桌位”时Agent 并不需要再通过多轮对话去反复确认日期、时间等细节而是可以直接通过 A2UI生成一个可交互的预订界面。这来自官方的一个A2UI的Demo先了解它的简单架构描述如下后端的Agent利用LLM动态生成结构化的A2UI JSON 消息包含界面结构和数据。消息通过A2A 流式协议SSE实时传输到Web 前端。前端接收并解析这些流数据安全地渲染出用户界面如预订表单。当用户在界面上进行操作如点击“确认预订”时前端会将交互转化为标准化的用户操作事件UserAction Event回传给 Agent。【场景设定】在这个场景中我们让Agent 向用户展示一个小型表单包括标题文字「预订餐厅桌位」日期与时间选择控件一个「确认预订」按钮【Agent 生成 A2UI 消息】在传统对话模式下Agent 只能回复类似「请问您想预订哪天几点」这样的文本。但在 A2UI 模式下Agent 会构造一系列结构化的 JSON 消息用来描述这个UI的组成并通过流式发送消息给前端。下面是发送的一个A2UI消息示例{ surfaceUpdate: { surfaceId: main, # 指定界面区域surface支持一个对话有多个界面区域 components: [ { id: root, component: { Column: { children: { explicitList: [ header, date_input, confirm_btn ] }, distribution: start, alignment: stretch } } }, { id: header, component: { Text: { text: { literalString: 预订餐厅桌位 }, usageHint: h1 } } }, { id: date_input, component: { DateTimeInput: { label: { literalString: 选择日期和时间 }, value: { path: /reservation/datetime }, enableDate: true, enableTime: true } } }, { id: confirm_btn, component: { Button: { child: confirm_text, action: { name: confirm_reservation }, primary: true } } }, { id: confirm_text, component: { Text: { text: { literalString: 确认预订 } } } } ] }}这条 surfaceUpdate 消息表示 Agent 希望创建或更新一块名为 main 的界面区域。其中包含了标题、日期时间选择器以及确认按钮等组件。几个关键点组件 ID每个组件都有一个唯一的 id如 header、date_input。后续如果 Agent 需要更新某个组件或引用其内容会依赖这个 ID。组件类型在 component 字段中通过对象键指定组件类型例如 Text、DateTimeInput、Button。有前端经验的读者对此应该并不陌生。数据绑定在 DateTimeInput 中value: {“path”: “/reservation/datetime”} 表示该控件绑定到数据模型中的某个字段。【绑定数据更新】Agent接着通过发送 dataModelUpdate 消息把数据绑定到UI组件{ dataModelUpdate: { surfaceId: main, contents: [ {key: reservation, valueMap: [ {key: datetime, valueString: 2025-12-18T19:00} ]} ] }}前端接收到这条消息后日期时间选择器会直接显示为「2025/12/18 19:00」。这种模式使界面与数据更新彻底分离避免了频繁重发整棵组件树。【开始渲染由 Agent 发出信号】Agent 可以流式发送多个 surfaceUpdate 消息但前端并不会立即渲染界面而是等待 Agent 明确发出”可以开始渲染“的信号消息{ beginRendering: { surfaceId: main, root: root, catalogId: https://my-company.com/a2ui/v0.8/my_custom_catalog.json }}这条消息的含义是UI 描述已经足够完整但不一定全部结束可以安全地进行首次渲染。由于 A2UI 采用的是 JSON Lines 格式每条消息独立成行前端可以边接收、边解析生成”流式的 UI “。【流式渲染与增量更新】假设前端是一个 Web 应用并集成了 A2UI 提供的渲染库例如基于 Lit 的 Web Components 渲染器。当前端收到 surfaceUpdate 和 beginRendering 后就会将这些UI描述映射为浏览器中的原生组件或自定义组件并生成对应的 DOM 结构。整个过程中并没有执行任何 AI 生成的、不受信任的代码。Agent 给出的只是“UI蓝图”而真正的组件实现来自开发者事先审核过的组件库或成熟的 UI 框架安全边界始终掌握在客户端。实际运行中渲染过程接受到的消息可能是这样不断推送的{surfaceUpdate: {surfaceId: main, components: [...]}} // Header {surfaceUpdate: {surfaceId: main, components: [...]}} // Body {beginRendering: {surfaceId: main, root: root-id}} // Initial render {surfaceUpdate: {surfaceId: main, components: [...]}} // Footer (after initial render) {dataModelUpdate: {surfaceId: main, contents: {...}}} // Populate dataUI可以先出现主体再逐步补充细节元素和数据用户无需等待一次性完成。【用户交互如何回传给Agent】当用户在UI上选择日期时间并点击「确认预订」按钮时前端会将这些操作转换为标准化的 userAction 消息发送给 Agent{ userAction: { name: confirm, surfaceId: main, context: { details: { datetime: 2025-12-16T19:00:00Z, } } }}Agent 收到该事件后便可以调用相应的业务工具完成预订。如果预订成功Agent 可以再次通过 A2UI 返回一个成功提示的UI描述如果需要补充信息也可以更新现有UI引导用户继续操作。可以看到A2UI 让 Agent 直接参与到了 UI 的构建过程中。它能够基于对话上下文即时“设计”出一个UI让用户用点击和填写来完成复杂操作。技术上A2UI 通过声明式 JSON、数据绑定以及事件机制优雅地解决了”AI 如何安全地驱动前端 UI“的问题也显著提升了应用的可扩展性与用户体验。04 A2UI 与 AG-UI、Copilot 的联系理解 A2UI容易联想到AG-UI和CopilotKit。它们并不是彼此替代的关系而是处在不同层级、分工清晰的一套组合。【AG-UI专注“交互通道”的协议】AG-UI 全称Agent–User Interaction Protocol。它关注的重点并不是 UI 本身而是Agent 与前端UI之间如何进行可靠、实时的交互。AG-UI 由 CopilotKit 团队发起并在 2025 年中正式推出目标是建立一条标准化的双向通信通道让 Agent 后端与前端 UI 能够持续交换消息、事件与上下文状态。从定位上看AG-UI 更像是“通信层协议”它规定前后端如何发送和接收事件如何保持上下文感知与同步如何支持流式更新与实时协同但它不限定 UI 的具体表达。只要是 JSON 事件流AG-UI 都可以承载。【A2UI 与 AG-UI内容与传输的分工】因为 AG-UI 不关心“你传的是什么”它可以承载各种生成式 UI 规范不管是A2UI还是OpenAI之前的Open-JSON-UI甚至是你自己定义的一套 UI 描述格式。所以A2UI 定义的是 UI 的结构、组件和数据绑定AG-UI 定义的是这些描述如何以事件流的方式在 Agent 与前端之间安全、实时地传输。两者并不竞争而是天然互补。【关于CopilotKit 框架】CopilotKit 是 AG-UI 协议的主要实现之一。它提供了一整套前后端集成方案帮助开发者将 AI Agent 快速嵌入现有前端应用而无需自己处理复杂的通信、状态同步和事件分发逻辑使开发者可以把注意力集中在两件事上一是 Agent 的业务逻辑二是前端组件和用户体验值得一提的是CopilotKit 团队本身也参与了 A2UI 规范的共建并且是 A2UI 的首批合作伙伴之一。因此在 CopilotKit 的最新版本中已经对 A2UI 提供了完整支持。在实际开发中使用 CopilotKit 时可以让后端 Agent 直接产出 A2UI JSON 描述再通过 AG-UI 管道传输到前端由 CopilotKit 提供的渲染器进行渲染。CopilotKit 还提供了一个非常实用的工具A2UI Composer。你可以访问https://a2ui-editor.copilotkit.ai/通过可视化方式创建 UI 组件Composer 会自动生成 A2UI 规范的 JSON。你可以将生成的 JSON 复制到 Agent 的提示词或输出中使用在前端CopilotKit 已经为 A2UI 消息准备好了渲染器。开发者只需通过简单的集成即可完成从协议到界面的整条链路。05 总结Agent协议组合栈及未来演进我们总结 A2UI、AG-UI、MCP、A2A 等协议在 Agent 应用中的定位与分工在真实的企业级 Agent 应用中这些协议往往是组合使用的。以一个智能客服系统为例它可能通过 MCP 访问客户数据库查询订单信息通过 A2A 协同外部数据分析 Agent再借助 AG-UI 保持前端 Copilot 应用与后端 Agent 之间的状态同步并由 A2UI 将复杂流程呈现为可交互的界面供用户操作和反馈。总之A2UI 让 Agent 不再只会“说话”而是开始学会“表达UI”。通过与 AG-UI、MCP、A2A 等协议的分层协作它补齐了 Agent 应用栈中的关键一环使 AI 的输出可以以更直观、更友好的交互形式呈现出来。那么如何系统的去学习大模型LLM作为一名深耕行业的资深大模型算法工程师我经常会收到一些评论和私信我是小白学习大模型该从哪里入手呢我自学没有方向怎么办这个地方我不会啊。如果你也有类似的经历一定要继续看下去这些问题啊也不是三言两语啊就能讲明白的。所以我综合了大模型的所有知识点给大家带来一套全网最全最细的大模型零基础教程。在做这套教程之前呢我就曾放空大脑以一个大模型小白的角度去重新解析它采用基础知识和实战项目相结合的教学方式历时3个月终于完成了这样的课程让你真正体会到什么是每一秒都在疯狂输出知识点。由于篇幅有限⚡️ 朋友们如果有需要全套 《2025全新制作的大模型全套资料》扫码获取~大模型学习指南路线汇总我们这套大模型资料呢会从基础篇、进阶篇和项目实战篇等三大方面来讲解。①.基础篇基础篇里面包括了Python快速入门、AI开发环境搭建及提示词工程带你学习大模型核心原理、prompt使用技巧、Transformer架构和预训练、SFT、RLHF等一些基础概念用最易懂的方式带你入门大模型。②.进阶篇接下来是进阶篇你将掌握RAG、Agent、Langchain、大模型微调和私有化部署学习如何构建外挂知识库并和自己的企业相结合学习如何使用langchain框架提高开发效率和代码质量、学习如何选择合适的基座模型并进行数据集的收集预处理以及具体的模型微调等等。③.实战篇实战篇会手把手带着大家练习企业级的落地项目已脱敏比如RAG医疗问答系统、Agent智能电商客服系统、数字人项目实战、教育行业智能助教等等从而帮助大家更好的应对大模型时代的挑战。④.福利篇最后呢会给大家一个小福利课程视频中的所有素材有搭建AI开发环境资料包还有学习计划表几十上百G素材、电子书和课件等等只要你能想到的素材我这里几乎都有。我已经全部上传到CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】相信我这套大模型系统教程将会是全网最齐全 最易懂的小白专用课