跳到主要内容

入门介绍

深度解析文档

想要深入了解 AG-UI 协议的技术细节、架构设计和应用场景?请查看 AG-UI 协议技术深度研究 文档。

入门介绍

什么是 AG-UI 协议?

AG-UI(Agent-User Interface)协议是一个专为AI代理与用户界面交互设计的开放标准,它为智能代理提供了一个统一的界面描述、渲染和交互框架,使不同的代理能够以标准化的方式与用户进行可视化交互,而无需关心具体的UI实现细节。

在传统的AI系统中,代理与用户的交互往往局限于文本对话,缺乏丰富的可视化界面。AG-UI 协议改变了这一现状,创建了一个标准化的界面描述语言,使代理能够声明式地定义用户界面,支持表单、图表、表格、多媒体等多种交互元素,为用户提供更直观、更高效的交互体验。

核心理念

AG-UI 协议基于以下核心理念:

  1. 声明式界面:代理通过声明式的方式描述界面,而不是直接操作UI组件
  2. 平台无关:界面描述与具体实现平台解耦,支持Web、移动端、桌面应用等
  3. 动态渲染:界面可以根据代理的状态和用户输入动态更新
  4. 标准化交互:提供统一的交互事件和反馈机制
  5. 可扩展性:支持自定义组件和交互模式

关键特性

1. 统一的界面描述格式

AG-UI 协议为界面元素提供标准化的描述格式,包括组件类型、属性、样式、事件等:

{
"ui_id": "user-form-001",
"version": "1.0.0",
"layout": {
"type": "form",
"title": "用户信息表单",
"sections": [
{
"id": "basic-info",
"title": "基本信息",
"components": [
{
"type": "text-input",
"id": "name",
"label": "姓名",
"placeholder": "请输入您的姓名",
"required": true,
"validation": {
"minLength": 2,
"maxLength": 50
}
},
{
"type": "email-input",
"id": "email",
"label": "邮箱",
"required": true
},
{
"type": "select",
"id": "country",
"label": "国家",
"options": [
{"value": "cn", "label": "中国"},
{"value": "us", "label": "美国"},
{"value": "jp", "label": "日本"}
]
}
]
},
{
"id": "submit-section",
"components": [
{
"type": "button",
"id": "submit-btn",
"label": "提交",
"action": "submit",
"style": {
"variant": "primary",
"size": "large"
}
}
]
}
]
},
"events": {
"onSubmit": {
"type": "agent-action",
"action": "process-user-form",
"parameters": {
"name": "${components.name.value}",
"email": "${components.email.value}",
"country": "${components.country.value}"
}
}
}
}

2. 丰富的组件库

AG-UI 协议支持多种标准组件:

from ag_ui import UIBuilder, ComponentRegistry

# 创建UI构建器
builder = UIBuilder()

# 定义表单界面
form_ui = builder.create_form(
title="数据查询",
components=[
builder.text_input(
id="query",
label="查询关键词",
placeholder="请输入查询内容"
),
builder.select(
id="category",
label="分类",
options=[
{"value": "news", "label": "新闻"},
{"value": "product", "label": "产品"},
{"value": "support", "label": "支持"}
]
),
builder.button(
id="search",
label="搜索",
action="search"
)
]
)

# 定义数据表格界面
table_ui = builder.create_table(
id="results-table",
columns=[
{"key": "title", "label": "标题", "sortable": True},
{"key": "category", "label": "分类"},
{"key": "date", "label": "日期", "type": "date"},
{"key": "actions", "label": "操作", "type": "actions"}
],
data_source="agent://get-search-results",
pagination=True
)

# 定义图表界面
chart_ui = builder.create_chart(
id="sales-chart",
type="line",
title="销售趋势",
data_source="agent://get-sales-data",
x_axis="date",
y_axis="amount"
)

3. 动态界面更新

界面可以根据代理状态和用户操作动态更新:

from ag_ui import UIState, UIUpdate

# 创建UI状态管理器
state = UIState()

# 初始界面
initial_ui = builder.create_form(...)

# 根据用户输入更新界面
def on_input_change(component_id: str, value: any):
# 根据输入值动态更新其他组件
if component_id == "country" and value == "cn":
# 显示中国特有的字段
update = UIUpdate(
add_components=[
builder.text_input(
id="id-card",
label="身份证号",
required=True
)
]
)
state.apply_update(update)
elif component_id == "country" and value != "cn":
# 隐藏身份证字段
update = UIUpdate(
remove_components=["id-card"]
)
state.apply_update(update)

4. 事件处理机制

提供统一的事件处理和反馈机制:

from ag_ui import EventHandler

# 定义事件处理器
handler = EventHandler()

# 处理表单提交
@handler.on("form-submit")
def handle_submit(event):
form_data = event.data

# 验证数据
if not validate_form(form_data):
return {
"type": "error",
"message": "表单验证失败",
"errors": get_validation_errors(form_data)
}

# 处理数据
result = process_form_data(form_data)

# 返回结果并更新界面
return {
"type": "success",
"message": "提交成功",
"ui_update": {
"show_success_message": True,
"redirect": "/success-page"
}
}

# 处理按钮点击
@handler.on("button-click")
def handle_button_click(event):
button_id = event.component_id
action = event.action

if action == "search":
# 执行搜索
results = perform_search(event.data)

# 更新结果表格
return {
"type": "update-table",
"table_id": "results-table",
"data": results
}

5. 多平台支持

支持多种平台和框架:

from ag_ui import PlatformAdapter

# Web平台适配器
web_adapter = PlatformAdapter("web")
web_ui = web_adapter.render(ui_definition)

# React组件
react_components = web_adapter.to_react(ui_definition)

# Vue组件
vue_components = web_adapter.to_vue(ui_definition)

# 移动端适配器
mobile_adapter = PlatformAdapter("mobile")
mobile_ui = mobile_adapter.render(ui_definition)

# Flutter组件
flutter_widgets = mobile_adapter.to_flutter(ui_definition)

6. 主题和样式

支持主题定制和样式配置:

{
"theme": {
"name": "modern",
"colors": {
"primary": "#007bff",
"secondary": "#6c757d",
"success": "#28a745",
"danger": "#dc3545"
},
"typography": {
"fontFamily": "Inter, sans-serif",
"fontSize": {
"small": "12px",
"medium": "14px",
"large": "16px"
}
},
"spacing": {
"unit": "8px"
}
},
"components": {
"button": {
"borderRadius": "4px",
"padding": "12px 24px"
},
"input": {
"borderRadius": "4px",
"border": "1px solid #ddd"
}
}
}

适用场景

AG-UI 协议适用于多种场景,以下是一些典型应用:

1. 智能表单系统

代理可以动态生成和更新表单界面:

  • 动态表单:根据用户输入动态添加或移除字段
  • 智能验证:实时验证用户输入并提供反馈
  • 条件显示:根据条件显示或隐藏字段
  • 多步骤表单:支持向导式多步骤表单

2. 数据可视化

代理可以生成各种数据可视化界面:

  • 图表展示:折线图、柱状图、饼图等
  • 数据表格:支持排序、筛选、分页
  • 仪表盘:综合数据展示面板
  • 实时更新:数据实时刷新

3. 交互式对话界面

增强传统文本对话的交互体验:

  • 富文本消息:支持格式化文本、链接、图片
  • 快速回复:提供预设的快速回复按钮
  • 卡片式消息:结构化信息展示
  • 多媒体内容:图片、视频、音频等

4. 配置和管理界面

为代理系统提供配置和管理界面:

  • 参数配置:可视化配置代理参数
  • 技能管理:管理代理的技能和能力
  • 工作流编辑:可视化编辑工作流
  • 监控面板:实时监控代理状态

协议架构

AG-UI 协议的架构由以下主要组件构成:

  1. UI描述引擎(UI Description Engine):解析和验证UI描述
  2. 组件注册表(Component Registry):管理可用组件
  3. 渲染引擎(Rendering Engine):将UI描述渲染为具体界面
  4. 事件系统(Event System):处理用户交互事件
  5. 状态管理(State Management):管理界面状态
  6. 平台适配器(Platform Adapter):适配不同平台和框架

与其他技术的关系

AG-UI 协议与现有技术的关系和互补性:

  • 与 A2A 协议的关系:AG-UI 可以基于 A2A 协议实现,提供用户界面层
  • 与 agent_skills 的关系:AG-UI 可以调用 agent_skills 来获取数据和处理逻辑
  • 与 MCP 协议的关系:MCP 关注工具调用,AG-UI 关注用户界面
  • 与前端框架的关系:AG-UI 可以生成 React、Vue、Angular 等框架的组件

未来展望

AG-UI 协议的发展方向包括:

  1. 更丰富的组件库:支持更多类型的UI组件
  2. 智能布局:AI自动优化界面布局
  3. 无障碍支持:增强无障碍访问能力
  4. 多模态交互:支持语音、手势等交互方式
  5. 实时协作:支持多用户实时协作界面

开始使用 AG-UI


AG-UI 协议正在重新定义AI代理与用户的交互方式,创建一个更加直观、高效和标准化的界面生态系统。通过标准化界面描述并支持多平台渲染,AG-UI 协议为下一代AI应用开辟了无限可能。