A2UI和AG-UI是两个完全不同的协议,解决的是不同层面的问题,一个关注"画什么",一个关注"怎么传"。
用一个简单的比喻来说明:
- A2UI就像是一种"UI设计语言",告诉前端"应该画一个什么样的界面"
- AG-UI就像是一条"通信管道",负责在智能体和前端应用之间传递各种信息
AG-UI:智能体交互协议
AG-UI(Agent-User Interaction Protocol)是CopilotKit团队开源的智能体交互协议。
- 核心问题:如何让智能体和前端应用进行实时、双向的通信?
- 解决方案:提供一套基于事件的协议,标准化智能体和应用之间的所有交互。
- 类比:AG-UI就像是电话线。它不关心你们聊什么内容(可以是文字、UI、数据等),只负责确保双方能顺畅通话。
AG-UI的架构:全面的交互层
AG-UI的架构更加复杂,因为它要处理智能体和应用之间的所有交互:
swift
前端应用 ←→ AG-UI协议 ←→ 中间件 ←→ 智能体框架
核心组件:
- 事件系统:~16种标准事件类型
- 中间件层:适配不同的智能体框架
- 状态管理:双向状态同步
- 传输层:支持SSE、WebSocket等
设计特点:
- 事件驱动,实时双向通信
- 灵活的中间件,适配各种框架
- 全面覆盖,不仅仅是UI
AG-UI的架构:
markdown
┌─────────────┐ ┌─────────────┐
│ 前端应用 │←─事件─→│ AG-UI协议 │
└─────────────┘ └──────┬──────┘
│
┌──────┴──────┐
│ 中间件层 │
└──────┬──────┘
│
┌──────┴──────┐
│ 智能体框架 │
└─────────────┘
AG-UI的生态:智能体框架集成
- 集成方式:使用LangGraph中间件
ini
from copilotkit import CopilotKitSDK
sdk = CopilotKitSDK(
agents=[my_langgraph_agent]
)
- 特点:
- 专注于智能体集成
- 广泛的框架支持
- 提供完整的交互能力
A2UI和AG-UI的关系
它们不是竞争关系,而是互补关系。
方式1:AG-UI可以传输A2UI消息
css
// AG-UI事件中包含A2UI消息
{
type: "generative_ui",
format: "a2ui",
content: {
surfaceUpdate: {
components: [...]
}
}
}
AG-UI的generative_ui事件可以使用A2UI作为UI描述格式。
方式2:A2UI可以通过AG-UI传输
swift
智能体 → 生成A2UI → AG-UI协议传输 → 前端渲染
A2UI消息可以作为AG-UI事件流的一部分传输。
方式3:独立使用
arduino
// 只用A2UI
智能体 → A2UI → HTTP/WebSocket → 渲染器
// 只用AG-UI
智能体 → AG-UI → 前端应用
它们也可以完全独立使用.