入门介绍
深度解析文档
想要深入了解 AG-UI 协议的技术细节、架构设计和应用场景?请查看 AG-UI 协议技术深度研究 文档。
入门介绍
什么是 AG-UI 协议?
AG-UI(Agent-User Interface)协议 是一个专为AI代理与用户界面交互设计的开放标准,它为智能代理提供了一个统一的界面描述、渲染和交互框架,使不同的代理能够以标准化的方式与用户进行可视化交互,而无需关心具体的UI实现细节。
在传统的AI系统中,代理与用户的交互往往局限于文本对话,缺乏丰富的可视化界面。AG-UI 协议改变了这一现状,创建了一个标准化的界面描述语言,使代理能够声明式地定义用户界面,支持表单、图表、表格、多媒体等多种交互元素,为用户提供更直观、更高效的交互体验。
核心理念
AG-UI 协议基于以下核心理念:
- 声明式界面:代理通过声明式的方式描述界面,而不是直接操作UI组件
- 平台无关:界面描述与具体实现平台解耦,支持Web、移动端、桌面应用等
- 动态渲染:界面可以根据代理的状态和用户输入动态更新
- 标准化交互:提供统一的交互事件和反馈机制
- 可扩展性:支持自定义组件和交互模式
关键特性
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 协议的架构由以下主要组件构成:
- UI描述引擎(UI Description Engine):解析和验证UI描述
- 组件注册表(Component Registry):管理可用组件
- 渲染引擎(Rendering Engine):将UI描述渲染为具体界面
- 事件系统(Event System):处理用户交互事件
- 状态管理(State Management):管理界面状态
- 平台适配器(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 协议的发展方向包括:
- 更丰富的组件库:支持更多类型的UI组件
- 智能布局:AI自动优化界面布局
- 无障碍支持:增强无障碍访问能力
- 多模态交互:支持语音、手势等交互方式
- 实时协作:支持多用户实时协作界面
开始使用 AG-UI
AG-UI 协议正在重新定义AI代理与用户的交互方式,创建一个更加直观、高效和标准化的界面生态系统。通过标准化界面描述并支持多平台渲染,AG-UI 协议为下一代AI应用开辟了无限可能。