当前位置: 首页 > news >正文

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 应用程序中。

http://www.gsyq.cn/news/133094.html

相关文章:

  • 86、Windows系统使用与优化全解析
  • Excalidraw如何优化首次加载速度?CDN策略解析
  • 关键!AI应用架构师在AI模型分布式部署中的关键决策
  • 80、家庭网络搭建与资源共享全攻略
  • Excalidraw被GitHub标星超50K,凭什么这么火?
  • Excalidraw能否成为下一代思维导图工具?
  • Excalidraw与Confluence集成的最佳实践路径
  • Excalidraw打造沉浸式头脑风暴环境,激发团队创造力
  • Excalidraw支持微信小程序预览,分享更方便
  • 大数据领域Flink的流处理架构演进
  • Excalidraw进阶玩法:导入SVG、导出高清图全面支持
  • Excalidraw一键复用组件,大幅提升重复绘图效率
  • 【C++ 】STL详解(六)—手撸一个属于你的 list!
  • Excalidraw多语言支持完善,全球化团队首选
  • Excalidraw插件生态揭秘:扩展你的创意边界
  • Excalidraw源码解读:前端架构为何如此稳定?
  • Excalidraw中文使用手册上线,新手也能快速上手
  • Excalidraw绘制碳中和路线图:减排行动时间表
  • Excalidraw自动保存+版本历史,再也不怕误删内容
  • Excalidraw实战:绘制微服务调用链路图全过程
  • 用自然语言生成图表?Excalidraw AI功能实测报告
  • Excalidraw展示在线学习平台:MOOC系统架构
  • 46、深入理解驱动器、文件夹和文件的操作与管理
  • 基于Java+大数据+SSM基于Hadoop的信贷风险评估数据可视化分析与预测系统(源码+LW+调试文档+讲解等)/信贷风险分析系统/信贷数据可视化/风险评估预测系统/信贷风险预测/数据可视化系统
  • 技术团队必备!Excalidraw开源工具实现多人实时绘图
  • Excalidraw实战应用:技术文档中的架构图快速生成方案
  • God save mi!
  • 彼得林奇对公司供应链垂直整合的评估
  • 基于Excalidraw镜像搭建企业级内部协作平台全攻略
  • Excalidraw构建SCM协同平台:供应商管理可视化