Skip to content

智能体-用户交互协议(AG-UI)

Agent-User Interaction Protocol(AG-UI)

在智能体(Agent)的世界里:

  • MCP 让「智能体对工具」的通信实现了标准化。

  • Agent2Agent 协议让「智能体对智能体」的通信实现了标准化。

但还缺了一块拼图……那就是一套用于「智能体对用户」通信的协议:

ai agents p249 1

让我们来理解一下这为什么重要。问题在于:如今,你已经可以借助 LangGraph、CrewAI、Mastra 等工具包,构建功能强大的多步骤智能体工作流。

ai agents p249 2

但当你试图把这个 Agent 接入到真实应用里的那一刻,问题就出现了:

  • 你希望能逐 token 流式输出 LLM 的响应,却不想自己搭建一套定制的 WebSocket 服务。

  • 你希望能实时展示工具的执行进度,并在需要人工反馈时暂停下来,同时不阻塞流程、也不丢失上下文。

  • 你希望能同步体积较大、且不断变化的对象(比如代码或表格),而不用每次都把全部内容重新发给前端。

  • 你希望让用户能够在智能体运行过程中随时打断、取消或插话回复,同时又不丢失上下文。这里还有另一个问题:每一个 Agent 后端都有自己的一套工具调用、ReAct 式规划、状态差异(state diff)和输出格式机制。所以如果你用的是 LangGraph,前端就得针对 LangGraph 实现专门的 WebSocket 逻辑、繁琐的 JSON 格式和专用的 UI 适配层。可一旦要迁移到 CrewAI,这一切又得重新适配一遍。这种做法完全无法规模化。

解决方案:AG-UI

AG-UI(Agent-User Interaction Protocol,智能体—用户交互协议)是 CopilotKit 推出的一套开源协议,专门用来解决这个问题。它把后端智能体与前端 UI 之间的交互层(下图中的绿色部分)实现了标准化。

ai agents p251 1

可以这样理解:

  • 就像 REST 是「客户端对服务器」请求的标准协议一样……

  • AG-UI 就是把智能体的实时更新流式传回前端 UI 的标准协议。从技术角度来说……它使用服务器发送事件(SSE)向前端流式传输结构化的 JSON 事件。每个事件都有明确的负载(payload),就像 Python 字典里的键一样,例如:

  • TEXT_MESSAGE_CONTENT,用于逐 token 流式输出。

  • TOOL_CALL_START,用于展示工具的执行过程。

  • STATE_DELTA,用于更新共享状态(代码、数据等)。

  • AGENT_HANDOFF,用于在多个智能体之间平滑地交接控制权。

它还提供了 TypeScript 和 Python 的 SDK,让它能够即插即用地接入任何技术栈,如下图所示:

ai agents p252 1

在上图中,来自 Agent 的响应并不绑定于任何特定工具包,而是一份标准化的 AG-UI 响应。这意味着你只需编写一次后端逻辑,并把它接入 AG-UI,剩下的一切就都能顺畅运转:

  • LangGraph、CrewAI、Mastra——它们都可以发出 AG-UI 事件。
  • UI 既可以用 CopilotKit 组件搭建,也可以用你自己的 React 技术栈搭建。
  • 你可以把 GPT-4 换成本地部署的 Llama-3,而无需改动前端的任何代码。正是这一层,能让你的 Agent 应用真正具备「软件」的质感,而不只是一个华丽的聊天机器人。

本站内容仅供学习交流,版权归原作者所有。