安爸-超级家庭

谷歌推出了A2UI(代理到用户界面):一个由代理驱动的接口的开源协议

安爸 发布于

谷歌开源了A2UI,这是一个表示和一组库,允许代理以声明性JSON格式描述丰富的本机界面,而客户端应用程序则用它们自己的组件来渲染它们。该项目旨在解决一个清晰的问题:如何让远程代理在没有发送可执行代码的情况下,在信任边界之外展示安全和交互式的界面。

什么是A2UI?

A2UI是一个开放的规范和实现,允许代理能够说话界面。代理不会输出HTML或JavaScript。它输出一个A2UI响应,这是一个描述一组组件、它们的属性和数据模型的JSON有效负载。客户端应用程序阅读这个描述,并将每个组件映射到它自己的本机小部件,例如Angular组件、Flutter小部件、Web组件、React组件或SwiftUI视图。

问题:代理需要说话界面

大多数基于聊天的代理以长文本响应。对于餐厅预订或数据录入等任务,这会产生很多回合和密集的答案。A2UI启动帖子展示了一个餐厅示例,其中用户请求一个餐桌,然后代理以文本形式提出几个后续问题,这是缓慢的。更好的体验是一个具有日期选择器、时间选择器和提交按钮的小表单。A2UI允许代理请求一个结构化UI描述,而不是用自然语言叙述它。

在多代理网格中,问题变得更加困难。在那个环境中,一个组织的协调器可以将工作委托给另一个组织的远程A2A代理。远程代理不能修改主应用程序的文档对象模型。它只能发送消息。从历史上看,这意味着在iframe中使用了HTML或脚本。那种方法很繁琐,往往与主机在视觉上一致性差,而且在安全性方面存在风险。A2UI定义了一个类似于数据但足以描述复杂布局的表达式的数据格式。

核心设计:安全性、对LLM友好和可移植性

A2UI侧重于安全性、对LLM的友好性和可移植性。

  • 安全第一。A2UI是一种声明性数据格式,而不是可执行代码。客户端维护一个受信任的组件目录,如卡片、按钮或文本字段。代理只能引用此目录中的类型。这减少了UI注入的风险,并避免了从模型输出中执行任意脚本。
  • 对LLM友好的表示。界面以具有标识符引用的组件扁平列表的形式表示。这使得语言模型可以增量生成或更新界面,并支持流式更新。代理可以在对话过程中调整视图,而无需重新生成完整的嵌套JSON树。
  • 框架无关性。单个A2UI有效负载可以在多个客户端上渲染。代理描述了一个组件树和关联的数据模型。客户端将此结构映射到Angular、Flutter、React或SwiftUI等框架中的本机小部件。这允许在Web、移动和桌面界面跨平台上重用相同的代理逻辑。
  • 渐进式渲染。由于该格式是针对流设计的,客户端可以在代理继续计算的同时显示部分界面。用户可以看到界面实时组装,而不是等待完整响应。

架构和数据流

A2UI是一个分隔生成、传输和渲染的管程。

  1. 用户通过聊天或其他表面向代理发送消息。
  2. 代理(通常由Gemini或另一个可以生成JSON的模型支持)生成一个A2UI响应。该响应描述了组件、布局和数据绑定。
  3. A2UI消息通过传输(如代理到代理协议或AG UI协议)流到客户端。
  4. 客户端使用A2UI渲染库。渲染器分析有效负载并将每个组件类型解析为宿主代码库中的具体小部件。
  5. 用户操作(例如按钮单击或表单提交)作为事件发送回代理。代理可能会用新的A2UI消息更新现有界面。

要点

  • A2UI是谷歌提供的一个开放标准和库集,允许代理通过发送接口的声明性JSON规范来“说话界面”,而客户端使用Angular、Flutter或Lit等本机组件来渲染它们。
  • 该规范通过将UI作为数据而不是代码来处理,侧重于安全性,因此代理只能引用由客户端控制的组件目录,这减少了UI注入的风险,并避免了从模型输出中执行任意脚本。
  • 内部格式使用可更新的、平面的组件表示,针对LLM优化,支持流式和增量更新,因此代理可以在会话过程中逐步完善界面。
  • A2UI是传输无关的,已经在A2A协议和AG UI中使用了它,允许协调器代理和远程子代理在主应用程序保留品牌、布局和可访问性的同时,在信任边界之外发送UI有效负载。
  • 该项目目前处于v0.8版本的早期公共预览阶段,根据Apache 2.0协议发布,包括用于Opal、Gemini企业版和Flutter GenUI等项目的参考渲染器、快速入门示例和生产集成,使其现在可以直接用于构建代理应用程序的工程师。

请查看GitHub库技术细节。同时,欢迎您关注我们的Twitter,别忘了加入我们的10万+机器学习SubReddit并订阅我们的时事通讯。等等!你在电报上吗?现在你也可以加入我们电报群组了

文章谷歌推出A2UI(代理到用户界面):一个用于代理驱动界面的开源协议最早发布在MarkTechPost


扫描二维码,在手机上阅读