news 2026/4/16 17:29:01

A2UI快速入门

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
A2UI快速入门

A2UI快速入门

A2UI, a streaming protocol for Agent-Driven User Interfaces

  • quickstart快速开始

通过运行餐厅查找器演示程序,亲身体验 A2UI。本指南将帮助您在 5 分钟内体验到智能代理生成的用户界面。

你将建造什么

完成本快速入门指南后,您将掌握:

  • ✅ 一个正在运行的带有 A2UI Lit 渲染器的 Web 应用程序
  • ✅ 一款基于 Gemini 的代理,可生成动态用户界面
  • ✅ 具有表单生成、时间选择和确认流程的交互式餐厅查找器
  • ✅ 了解 A2UI 消息如何从代理流向用户界面

先决条件

开始之前,请确保您已准备好:

  • Node.js(版本 18 或更高版本) -点击此处下载
  • Gemini API 密钥-可从 Google AI Studio 免费获取。

安全通知

此演示运行一个使用 Gemini 生成 A2UI 响应的 A2A 代理。该代理可以访问您的 API 密钥,并将向 Google 的 Gemini API 发送请求。在生产环境中运行代理代码之前,请务必先进行审查。

第一步:克隆代码库

git clone https://github.com/google/a2ui.git cd a2ui

步骤 2:设置您的 API 密钥

将您的 Gemini API 密钥导出为环境变量:

export GEMINI_API_KEY="your_gemini_api_key_here"

步骤 3:导航至 Lit Client

步骤 4:安装并运行

运行单命令演示启动器:

npm install npm run demo:all

此命令将:

  1. 安装所有依赖项
  2. 构建 A2UI 渲染器
  3. 启动 A2A 餐厅查找代理(Python 后端)
  4. 启动开发服务器
  5. 打开浏览器http://localhost:5173

演示运行

如果一切正常,您应该能在浏览器中看到网页应用。代理程序现在已准备好生成用户界面!

第五步:尝试一下

在网页应用中,尝试以下提示:

  1. “预订一张两人桌”——观看客服人员生成预订表格
  2. “查找附近的意大利餐厅”- 查看动态搜索结果
  3. “你们的工作时间是什么时候?”- 体验针对不同意图的不同用户界面布局。

幕后发生了什么

┌─────────────┐ ┌──────────────┐ ┌────────────────┐ │ You Type │────────>│ A2A Agent │────────>│ Gemini API │ │ a Message │ │ (Python) │ │ (LLM) │ └─────────────┘ └──────────────┘ └────────────────┘ │ │ │ Generates A2UI JSON │ │<────────────────────────┘ │ │ Streams JSONL messages v ┌──────────────┐ │ Web App │ │ (A2UI Lit │ │ Renderer) │ └──────────────┘ │ │ Renders native components v ┌──────────────┐ │ Your UI │ └──────────────┘
  1. 您可以通过网页用户界面发送消息。
  2. A2A代理收到对话后,会将对话内容发送给Gemini。
  3. Gemini 生成描述用户界面的 A2UI JSON 消息。
  4. A2A代理会将这些消息流式传输回Web应用程序。
  5. A2UI渲染器将它们转换为原生Web组件
  6. 您可以在浏览器中看到渲染后的用户界面。

A2UI消息剖析

我们来看看代理发送了什么。以下是一个简化的 JSON 消息示例:

定义用户界面

{ "surfaceUpdate": { "surfaceId": "main", "components": [ { "id": "header", "component": { "Text": { "text": {"literalString": "Book Your Table"}, "usageHint": "h1" } } }, { "id": "date-picker", "component": { "DateTimeInput": { "label": {"literalString": "Select Date"}, "value": {"path": "/reservation/date"}, "enableDate": true } } }, { "id": "submit-btn", "component": { "Button": { "child": "submit-text", "action": {"name": "confirm_booking"} } } }, { "id": "submit-text", "component": { "Text": {"text": {"literalString": "Confirm Reservation"}} } } ] } }

这定义了界面的 UI 组件:文本标题、日期选择器和按钮。

填充数据

{ "dataModelUpdate": { "surfaceId": "main", "contents": [ { "key": "reservation", "valueMap": [ {"key": "date", "valueString": "2025-12-15"}, {"key": "time", "valueString": "19:00"}, {"key": "guests", "valueInt": 2} ] } ] } }

这将填充组件可以绑定的数据模型。

信号渲染

{"beginRendering": {"surfaceId": "main", "root": "header"}}

这告诉客户端它有足够的信息来渲染用户界面。

这只是 JSON

注意看,这代码多么易读、结构多么清晰?LLM 可以轻松生成这样的代码,而且传输和渲染都是安全的——无需执行任何代码。

探索其他演示

该代码库还包含其他几个演示:

组件库(无需代理)

查看所有可用的 A2UI 组件:

这会运行一个仅限客户端的演示,展示每个标准组件(卡片、按钮、文本字段、时间线等),并提供实时示例和代码示例。

联系人查找演示

尝试其他代理使用场景:

这演示了一个联系人查找代理,它可以生成搜索表单和结果列表。

接下来是什么?

现在您已经了解了 A2UI 的实际应用,可以开始:

  • 学习核心概念:理解表面、组件和数据绑定
  • 设置您自己的客户端:将 A2UI 集成到您自己的应用程序中
  • 构建代理:创建生成 A2UI 响应的代理
  • 探索协议:深入了解技术规范

故障排除

端口已被占用

如果端口 5173 已被占用,开发服务器将自动尝试下一个可用端口。请查看终端输出以获取实际的 URL。

API密钥问题

如果您看到有关缺少 API 密钥的错误:

  1. 确认密钥已导出:echo $GEMINI_API_KEY
  2. 请确保这是来自Google AI Studio 的有效 Gemini API 密钥。
  3. 请尝试重新导出:export GEMINI_API_KEY="your_key"

Python依赖项

该演示程序使用 Python 编写 A2A 代理。如果您遇到 Python 错误:

# Make sure Python 3.10+ is installed python3 --version # The demo should auto-install dependencies via the npm script # If not, manually install them: cd ../../agent/adk/restaurant_finder pip install -r requirements.txt

仍然有问题?

  • 查看GitHub Issues
  • 请查看samples/client/lit/README.md文件。
  • 加入社区讨论

理解演示代码

想看看它是如何运作的吗?请查看:

  • 代理代码samples/agent/adk/restaurant_finder/- Python A2A 代理
  • 客户端代码samples/client/lit/- Lit Web 客户端,带有 A2UI 渲染器
  • A2UI渲染器web-lib/- Web渲染器实现

每个目录都有自己的 README 文件,其中包含详细文档。


**恭喜!**您已成功运行您的第一个 A2UI 应用程序。您已经了解了 AI 代理如何通过安全、声明式的 JSON 消息生成丰富的交互式用户界面,并将其原生渲染到 Web 应用程序中。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 12:58:44

35、在 PowerShell 中使用 .NET 与 WinForms 的深入指南

在 PowerShell 中使用 .NET 与 WinForms 的深入指南 在设计 PowerShell 之初,我们主要聚焦于 cmdlet,期望通过大量的 cmdlet 来完成所有任务。然而,由于资源有限,无法及时完成所有计划中的 cmdlet,这使得我们在一些核心场景中面临覆盖不足的问题。于是,我们决定依赖 .NE…

作者头像 李华
网站建设 2026/4/15 15:07:22

42、在 PowerShell 中使用 WMI

在 PowerShell 中使用 WMI 1. WMI 脚本对比:VBScript 与 PowerShell 传统上,VBScript 是操作 WMI 的常用脚本工具,而 PowerShell 是新起之秀。下面通过将一个使用 WMI 的 VBScript 示例转换为等效的 PowerShell 脚本来展示 PowerShell 的优势。 1.1 VBScript 示例 我们从…

作者头像 李华
网站建设 2026/4/16 10:10:41

44、深入解析PowerShell安全机制与实践

深入解析PowerShell安全机制与实践 1. 安全模型基础:威胁、资产与缓解措施 构建安全模型主要包含三个关键部分:威胁、资产和缓解措施。威胁是指可能对系统造成损害的各种因素;资产则是吸引攻击者发动攻击的目标,它可以是具有直接价值的信息,如信用卡号或其他财务信息,也…

作者头像 李华
网站建设 2026/4/15 20:09:54

45、脚本签名全解析:保障脚本安全与完整性

脚本签名全解析:保障脚本安全与完整性 1. 脚本签名概述 脚本签名是一种以安全方式添加额外信息来识别脚本发布者的过程。这里的“安全方式”意味着你可以验证以下两点: - 脚本确实由正确的人签名。 - 自签名以来,脚本的内容没有以任何方式更改。 2. 公钥加密和单向哈希…

作者头像 李华
网站建设 2026/4/16 1:02:39

48、PowerShell与其他脚本环境对比:功能、操作与优势解析

PowerShell与其他脚本环境对比:功能、操作与优势解析 1. cmd.exe与PowerShell的文件解析对比 在文件解析方面,cmd.exe的 for 语句不仅可以遍历文件,还能用于解析文件。例如,下面的命令可以从数据文件中提取并打印前三个标记: for /f "tokens=1-3" %a in (…

作者头像 李华
网站建设 2026/4/15 14:11:22

Excalidraw能否取代PPT?某些场景下真的可以

Excalidraw能否取代PPT&#xff1f;某些场景下真的可以 在一场远程架构评审会上&#xff0c;团队成员围坐在视频会议的另一端。主讲人打开PPT&#xff0c;一页页翻动早已做好的幻灯片——线条规整、配色统一&#xff0c;但当有人提出“能不能把服务调用链路再展开看看&#xff…

作者头像 李华