Fast, reliable A2UI, with swappable inference formats
TL;DR · AI 摘要
Fast, reliable A2UI, with swappable inference formats - Google Developers Blog Google Tag Manager noscript End Google Ta...
核心要点
- 主题聚焦:Fast, reliable A2UI, with swappable inference fo
- 来源:Google Developers Blog,建议结合原文判断细节。
- AI 分析暂不可用,本条为保底评分与摘要。
快速、可靠的 A2UI,支持可替换的推理格式 - Google 开发者博客
Google Tag Manager (noscript)
结束 Google Tag Manager (noscript)
HTML
快速、可靠的 A2UI,支持可替换的推理格式
2026 年 10 月 27 日
Vishal Motwani
Vibes Builder
Google A2UI 团队
分享
- 邮件
我们听到了大家对 A2UI 和生成式用户界面体验速度的担忧:用户需要等待模型逐屏生成内容。此次发布提供了加速的控制手段,让您可根据不同页面选择合适的性能权衡。
本次发布,我们很高兴推出可替换的推理格式,并分享如何利用决策模型与 A2UI 结合的示例,帮助构建更快、更可靠的生成式用户界面体验。通过使用我们新推出的 A2UI Express 作为推理格式,可将延迟降低至原来的 1/3;若使用类似 Jev 的决策模型进行布局决策,延迟最多可降低至原来的 1/80。与 Direct JSON 相比,Express 生成相同类型的用户界面所需 token 数量最多减少 3 倍。我们将在本文中深入探讨这些细节。
A2UI 是一种面向代理优化的生成式用户界面协议,客户端通过合同形式声明受信任组件的目录,代理发送由该目录构建的定制用户界面的 A2UI 消息,客户端渲染器据此绘制界面(参见 介绍 A2UI)。
最初代理直接生成 A2UI JSON 传输消息,包括每个大括号和嵌套元素。事实证明,对于大语言模型(LLM)来说,生成受复杂 JSON Schema 约束的 JSON 树既缓慢又容易出错。这种特性将 A2UI 与文本输出的 LLM 紧密耦合,使得集成更快的 System One 决策模型变得困难。
现在代理可以生成 A2UI Express,这是一种针对推理速度和准确性优化的中间格式,并依赖 A2UI 代理 SDK 中的确定性代码将其转换为基于 JSON 的传输协议。代理构建者还可以根据特定使用场景替换任何其他领域特定语言(DSL)及其相关编译器,我们的 A2UI 代理 SDK 使这种替换与传输和渲染兼容。
模型生成的格式称为 inference_format。创建生成器时,您只需通过一个参数即可设置该格式。SDK 会为该格式生成提示指令,并将模型的回复编译为标准 A2UI 消息。本文将介绍格式替换的实现方式,解释为何将 A2UI Express 作为新的默认推理格式,以及决策模型如何根据您预先定义的布局构建页面。
关于 A2UI 的两个变化
可替换推理格式的工作原理
推理格式包含两个部分,SDK 会根据您目录的 JSON Schema 生成这两部分。提示部分教会模型该格式的语法,编译器将模型的回复编译为经过验证的 A2UI 消息。由于这两部分都来自 Schema,格式无法描述目录中不存在的组件或属性。
创建生成器时,您通过一个参数选择格式:
from a2ui.processor import A2uiGenerator, CatalogConfig
from a2ui.inference_formats import ExpressFormatFactory
catalog = CatalogConfig.from_path("catalog.json")
generator = A2uiGenerator(
[catalog],
examples=few_shot_examples, # 以 A2UI JSON 格式编写
inference_format_factory=ExpressFormatFactory(),
)
processor = generator.create_processor(renderer_capabilities)
system_prompt = f"{instructions}\n\n{processor.prompt_snippet}"
parts = processor.parse_response(model_reply) # 文本片段 + 验证后的 A2UI 消息Python
已复制
A2UI Express 可在 Python 代理 SDK(PyPI 上的 a2ui-agent-sdk 0.9.0)、TypeScript 代理 SDK(npm 上的 @a2ui/agent)和 Dart SDK(pub.dev 上的 a2ui_agent 0.0.1-wip004)中使用。在 TypeScript 中,你需要将 new ExpressFormatFactory() 作为生成器的第三个参数传递。Python 和 TypeScript SDK 都支持按块流式传输 Direct JSON,并能从完整回复中编译 Express。
Express:使用三分之一标记实现相同界面
Express 采用接近 Python 的风格,每行写一个语句。每行将组件分配给一个变量,变量名即成为组件 ID。参数是按位置排列的:编译器会按照你的目录模式声明的顺序将它们映射到属性名称,_ 表示跳过一个参数。$/title 将值绑定到数据模型,Event("accept") 声明服务器操作。以下是 A2UI 画廊通知卡的 Express 实现:
surface("gallery-notification-permission")
$/description="Get alerts for order status changes"
$/icon="check"
$/title="Enable notification"
root=Card(main_column)
main_column=Column([icon, title, description, actions], _, "center")
icon=Icon($/icon)
title=Text($/title)
description=Text($/description, "body")
actions=Row([yes_btn, no_btn], "center")
yes_btn_text=Text("Yes")
yes_btn=Button(yes_btn_text, _, Event("accept", {}))
no_btn_text=Text("No")
no_btn=Button(no_btn_text, _, Event("decline", {}))纯文本
包括 A2UI Express 在内的可替换推理格式也与 Python 代理 SDK 中的宏兼容,这在屏幕需要显示系统已持有的数据时非常有用。模型只需写入一个仅含 ID 的调用,例如 OrderStatus("ord_42"),而你的宏会获取订单并填充值,这样屏幕上的每个值都直接来自你的数据。宏的 README 展示了设置方法。
A2UI Express 的设计思路
客户反馈发现了直接 JSON 生成的延迟和准确性问题。为了解决这个问题,我们开始设计新的推理格式。我们尝试了四个选项:
- Direct JSON:这是我们 2025 年 12 月推出的现有基线格式。
- Express:最终选定的
python风格语法格式,作为新的默认选项。
- Atom:以 Lisp 风格编写 S 表达式,不使用赋值和闭合标签。
- Elemental:使用自定义元素编写 HTML,押注模型已具备良好的 HTML 编写能力。
我们将这四种格式都通过 gemini-3.5-flash 上的相同 51 项评估,并在开启和关闭思考模式下进行比较。
我们观察到即使关闭思考模式,Express 推理格式也能表现良好,这可能在使用 A2UI Express 时带来最快的推理速度。
使用 Jev 的可控生成
一些屏幕具有已知的形状,例如设置页面、结账页面或确认页面。对于这些屏幕,模型不需要设计布局,而是需要在已经定义的布局中进行选择,并为此构建一种不同类型的模型。在这种情况下,你不需要A2UI Express提供的全部表达能力。
来自TypeSafe的Jev被称为系统一模型,它被构建用于快速、结构化的决策,这些决策可以直接被代码使用。Jev不生成文本或JSON。你向它发送一个状态和一组带类型的提问,它会用校准后的概率回答每个问题。一个问题可以询问某个陈述是否为真(Noul),或者从列表中选择哪个选项(Choice),或者某个事物在评分标准上的得分(Score)。Jev可以在一个请求中回答许多问题,耗时大约100到300毫秒。
Apparite(jev2ui)是一个开源设计工具,它展示了将系统一模型连接到A2UI的一种方式。Jev决定每个屏幕的结构,代码根据这些决定构建A2UI组件,而一个小型模型gemini-3.5-flash-lite仅负责生成文本。问题以提前编写好的Markdown语法形式存在。一个引用块提出问题,而项目符号列出其选项,每个选项都带有标准。这个来自grammar/screen.md的语法块决定了设置行使用哪种控件:
#### row_control (每个组内每行的行控件)
Material:一个开关,用于立即生效的单个开/关设置。HIG:一个披露指示器,用于打开另一个页面的行。
> `{row}` 是提供的屏幕和部分中的某一行。分组行可以表示内容、导航、设置或操作;请使用它们的实际文本和上下文进行判断。
>
> {row} 是什么类型的行?
- **switch** — 一个简单的开/关设置,立即生效:通知、深色模式、自动播放、同步。
- **value** — 一个当前值从多个选项中选择的设置,更改在另一页面进行:语言、质量、主题、频率、单位。
- **nav** — 一个链接到另一页面的选项:内容项、详情、账户、隐私、帮助、关于或管理某物。其文本和部分标识它打开的内容。
- **check** — 一组备选选项中的一项,其中一项被选中:单个设置的选项,如“10秒”、“30秒”、“高”、“低”。
- **danger** — 一个最终或破坏性账户操作:注销、删除账户、清除数据、重置。在播客应用的设置屏幕中,Jev对“跳过向前”→ value、“自动下载”→ switch和“注销”→ danger的判断概率均接近1.00。Apparite通过三个步骤构建整个屏幕:
- 一个Jev请求回答语法中的布局问题,一个屏幕大约需要回答30个问题。
- 代码从目录构建组件树,并在约200毫秒内发送createSurface和updateComponents,文本位置使用占位符。
- gemini-3.5-flash-lite将文本流式传输到updateDataModel。当每个部分到达时,小型后续Jev请求会确定依赖它的内容,如上方的行控件。
在11个提示的一次运行中,组件树在92至298毫秒内显示在屏幕上,每个屏幕在0.8至1.7秒内完成。文本生成器每屏生成101至341个标记,Apparite的两个Jev流水线在所有11个提示中都生成了有效的A2UI。该项目将这些数字视为初步观察结果,因为样本量较小。
受控生成只能生成其语法所描述的布局。Apparite 的语法涵盖了九种屏幕原型和十二种模块,因此没有已知形状的屏幕更适合使用 Express。A2UI Agent SDK 目前尚未包含决策模型推理格式;apparite(jev2ui) 项目展示了如何通过决策模型的一组独立决策来组装 A2UI 消息。
使用哪种模式
A2UI Express 兼具速度和完整的表达能力,但能进行多重独立决策的决策模型仍然更快。根据你能够提前定义的屏幕部分进行选择:
- 受控模式:当决策模型能够生成所需内容时。如果你的屏幕遵循预设且定义明确的布局,决策模型可能是最快的选项。
- Express 模式:用于完整表达能力。当屏幕需要基于你的组件目录实现更灵活的表达时,退回到 A2UI Express。它运行快速,模型仍会生成完整的组件树。
- 自定义格式:用于任何新需求。由于推理格式可替换,新用例或未来语法只需一个提示生成器(教模型理解你的 DSL)和一个转换器(在你的 DSL 与 A2UI 消息之间进行转换)。你的组件目录和渲染器保持不变。
尝试使用
在你的代理中使用 Express。通过 pip install a2ui-agent-sdk 安装 Python SDK 或通过 npm install @a2ui/agent 安装 TypeScript SDK,在创建生成器时传入 ExpressFormatFactory(),并关闭模型的思考模式。你的组件目录和渲染器保持原样,Express 规范文档详细说明了语法。
要教 Gemini 或任何加载技能的模型仅用你的组件编写 Express,使用 Python SDK 的 SkillGenerator 从你的目录生成技能:
import json
from a2ui.core import Catalog
from a2ui.inference_formats.express import ExpressFormat
from a2ui.skill import SkillGenerator
catalog = Catalog.from_json(json.load(open("catalog.json")))
skills = SkillGenerator(ExpressFormat([catalog])).generate_skillset()
skills.export_to_directory("skills") # a2ui-core 加上每个目录项对应的一个技能尝试受控生成。克隆示例 jev2ui 仓库,按照其中的说明开始使用。Apparite(jev2ui) 的托管版本运行在 apparite.cnfg.ai。
来源
早期的 A2UI 文章:[介绍 A2UI](2025年12月),[A2UI v0.9](2026年4月) 和 [A2UI + MCP 应用](2026年6月)。
- [A2UI Express 规范](链接)
- [A2UI Elemental 规范](链接) 和 [A2UI Atom 规范](链接)
- A2UI 评估中的推理格式基准
- [a2ui-agent-sdk 更新日志](0.9.0, 2026年10月17日) 和 [npm 上的 @a2ui/agent](0.0.1)
- Python 代理 SDK 中的技能生成器
- TypeSafe 的 Jev 文档
- [Apparite (jev2ui) README](链接),"目前的成果" 和 "已知限制",以及其屏幕语法
发布于:
- 移动端
- Web
- AI
- 云
- 教程
- 指南
- 公告
- 学习
- 探索
- 解决方案
上一篇
下一篇
相关文章
列表
AI
云
教程
行业趋势
在 Google Cloud 上构建受控、自我演进的 AI 代理架构
2026年10月22日
移动端
案例研究
学习
通过 Model Explorer 为自定义边缘编译器带来可视化图调试功能
2026年10月20日
Web
指南
问题解决
在 GCP 上使用多代理群体构建对话式电商:一个可运行的原型
影响
使用任何框架(从 ADK 到 LangChain 及以上)推动代理开发生命周期
2026年10月21日
导航点