A2UI快速入门

A2UI快速入门

A2UI, a streaming protocol for Agent-Driven User Interfaces

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

你将建造什么

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

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

先决条件

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

安全通知

此演示运行一个使用 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 的实际应用,可以开始:

故障排除

端口已被占用

如果端口 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

仍然有问题?

理解演示代码

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

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

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


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

相关推荐
漂流瓶jz2 小时前
【AI】大模型本地部署与量化:Ollama、transformers、llama.cpp实践
人工智能·llm·ai编程
张彦峰ZYF6 小时前
MCP 从“能连工具”到“像 Web 一样部署”——无状态核心、扩展框架与企业级 Agent 基础设施的真正分水岭
人工智能·llm·agent·mcp
Darling噜啦啦8 小时前
LLM 记忆管理三剑客:截断、总结、检索,彻底搞懂 Agent 的 Memory 系统
langchain·llm·agent
今日无bug8 小时前
大模型的回答是怎么一个字一个字蹦出来的?前端流式输出解析
前端·llm·agent
桃西西呀13 小时前
《牛来》票房涨 1000 倍是真的吗?——2026暑期档 124 亿里的数学
人工智能·数据分析·llm
tachibana214 小时前
如何设计多 Agent 的协作与动态切换机制?
网络·人工智能·ai·大模型·llm·agent
程序员三明治15 小时前
【体验毛坯房】Deep Harness 入门教程
java·人工智能·后端·大模型·llm·deepseek·dsh
桃西西呀16 小时前
AI 为什么一本正经地胡说八道?3 个底层原因 + 2 个防坑法
人工智能·llm·ai编程
阿黎梨梨16 小时前
AI也有记忆?LangChain Memory 管理指南
langchain·node.js·llm
武子康16 小时前
删掉邮箱后,Agent Trace 仍可能泄露什么:一条可重放脱敏流水线
人工智能·llm·agent