我学习到的AG-UI的概念

6 阅读2分钟

A2UI和AG-UI是两个完全不同的协议,解决的是不同层面的问题,一个关注"画什么",一个关注"怎么传"。

用一个简单的比喻来说明:

  • A2UI就像是一种"UI设计语言",告诉前端"应该画一个什么样的界面"
  • AG-UI就像是一条"通信管道",负责在智能体和前端应用之间传递各种信息

AG-UI:智能体交互协议

AG-UI(Agent-User Interaction Protocol)是CopilotKit团队开源的智能体交互协议。

  • 核心问题:如何让智能体和前端应用进行实时、双向的通信?
  • 解决方案:提供一套基于事件的协议,标准化智能体和应用之间的所有交互。
  • 类比:AG-UI就像是电话线。它不关心你们聊什么内容(可以是文字、UI、数据等),只负责确保双方能顺畅通话。

AG-UI的架构:全面的交互层

AG-UI的架构更加复杂,因为它要处理智能体和应用之间的所有交互:

前端应用 ←→ AG-UI协议 ←→ 中间件 ←→ 智能体框架

核心组件:

  • 事件系统:~16种标准事件类型
  • 中间件层:适配不同的智能体框架
  • 状态管理:双向状态同步
  • 传输层:支持SSE、WebSocket等

设计特点:

  • 事件驱动,实时双向通信
  • 灵活的中间件,适配各种框架
  • 全面覆盖,不仅仅是UI

AG-UI的架构

┌─────────────┐         ┌─────────────┐
│  前端应用   │←─事件─→│  AG-UI协议  │
└─────────────┘         └──────┬──────┘
                               │
                        ┌──────┴──────┐
                        │  中间件层   │
                        └──────┬──────┘
                               │
                        ┌──────┴──────┐
                        │ 智能体框架  │
                        └─────────────┘
                      

AG-UI的生态:智能体框架集成

  • 集成方式:使用LangGraph中间件
from copilotkit import CopilotKitSDK
 
sdk = CopilotKitSDK(
    agents=[my_langgraph_agent]
)
  • 特点:
    • 专注于智能体集成
    • 广泛的框架支持
    • 提供完整的交互能力

A2UI和AG-UI的关系

它们不是竞争关系,而是互补关系

方式1:AG-UI可以传输A2UI消息

// AG-UI事件中包含A2UI消息
{
  type: "generative_ui",
  format: "a2ui",
  content: {
    surfaceUpdate: {
      components: [...]
    }
  }
}

AG-UI的generative_ui事件可以使用A2UI作为UI描述格式。

方式2:A2UI可以通过AG-UI传输

智能体  生成A2UI  AG-UI协议传输  前端渲染

A2UI消息可以作为AG-UI事件流的一部分传输。

方式3:独立使用

// 只用A2UI
智能体 → A2UI → HTTP/WebSocket → 渲染器
 
// 只用AG-UI
智能体 → AG-UI → 前端应用

它们也可以完全独立使用.

学习链接:blog.csdn.net/u012094427/…