AG-UI是什么,解决的什么问题,如何使用
बनाया गया: 21 मई 2025
बनाया गया: 21 मई 2025
AG-UI是什么,解决的什么问题,如何使用
AG-UI 简介
AG-UI(Agent-User Interaction Protocol)是一套开源、轻量的事件驱动协议,用来规范 AI Agent ↔ 前端/用户 之间的通信。它把一次 Agent 执行过程拆分成 16 类标准事件(消息、工具调用、状态快照/增量等),不依赖具体传输层(SSE、WebSocket、Webhook 都行),让任何 Agent 框架和任何前端都能“即插即用”地互联。GitHub
痛点 | AG-UI 的做法 |
---|---|
框架&厂商各自“私有”协议 → 前端适配成本高 | 定义统一事件模型和 JSON 格式,让 LangGraph、CrewAI 等框架直接输出 AG-UI 事件,前端一次接好,多处复用。Juejin GitHub |
“最后一公里”交互生硬 → 无法流畅插入人类确认/多模态 UI | 通过 ToolCall* 事件,把“让用户确认”“需要用户输入”本身也当作事件流的一部分;前端可以拦截、展示 UI,再把结果返给 Agent。Juejin |
状态同步困难 → 复杂交互难落地 | STATE_SNAPSHOT / STATE_DELTA 事件支持整份或差量 JSON Patch,同步富交互组件(例如可编辑菜谱)成为可能。Juejin |
工具安全边界模糊 | 由前端显式声明可调用工具,Agent 只能在列表里选;涉及隐私或高风险调用时,前端可让用户最终拍板。Juejin |
概念 | 说明 |
---|---|
Message | role ∈ {system, user, assistant, tool} ;与 OpenAI ChatMsg 兼容,并新增 tool 消息类型。 |
ToolCall* 系列事件 | ToolCallStart → ToolCallArgs → ToolCallEnd 流式触发,用于“人机协同”“外部动作”。 |
State 事件 | STATE_SNAPSHOT (全量)、STATE_DELTA (增量 Patch)。 |
传输层 | 默认参考 HTTP+SSE 实现,也可换成 WebSocket、gRPC… |
以下以“后端 Python Agent + 前端 React” 为例,其他语言思路一致。
bashpip install ag-ui-python # 假设官方 SDK 名称
pythonfrom agui import AgentWrapper, events def my_agent_loop(ctx): yield events.Text(role="assistant", content="你好!") yield events.ToolCallStart(name="search_docs", args={"q":"AG-UI"}) ... server = AgentWrapper(my_agent_loop).run() # 自动按规范吐出事件流
tsconst stream = new EventSource("/agui/stream"); stream.onmessage = evt => render(JSON.parse(evt.data)); // 根据 event.type 渲染聊天、工具卡片、状态 Patch
json{ "tools": [{ "name": "search_docs", "description": "企业文档检索", "parameters": { "q": "string" } }] }
npm run dev
即可体验。GitHubToolCall*
让医生/财务确认。STATE_DELTA
,前端组件同步更新。AG-UI 把“如何把 AI Agent 接到界面里”这件事标准化了:
借助这层协议,你可以自由组合 最酷的前端交互 + 最强的智能体能力,减少重复开发,加速产品迭代。