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

相关推荐
nix.gnehc2 小时前
MCP Server + Agent入门示例
llm·agent·deepseek·mcpserver
许泽宇的技术分享4 小时前
AgentFramework:生产环境清单
ag-ui·a2ui
许泽宇的技术分享4 小时前
当AI学会“画“界面:A2UI如何让智能体拥有UI表达能力
人工智能·生成式ai·前端开发·用户界面·a2ui
小霖家的混江龙5 小时前
数学不好也能懂:解读 AI 经典论文《Attention is All You Need》与大模型生成原理
人工智能·llm·aigc
Pitayafruit14 小时前
Spring AI 进阶之路05:集成 MCP 协议实现工具调用
spring boot·后端·llm
ASS-ASH17 小时前
视觉语言大模型Qwen3-VL-8B-Instruct概述
人工智能·python·llm·多模态·qwen·视觉语言模型·vlm
坐吃山猪18 小时前
AutoGLMPhone06-源码-模型替换
llm·glm·phone
Mr.朱鹏19 小时前
大模型入门学习路径(Java开发者版)下
java·python·学习·微服务·langchain·大模型·llm
simplify2019 小时前
SWEDeepDiver:从哪里来,去往何处
开源·llm