跳转到主要内容

A2UI — Agent to UI

A2UI 让 Agent 通过声明式 JSON 描述 UI 结构,前端将其渲染为原生 React 组件并嵌入聊天区。用户与组件交互(如点击按钮)时,事件回传给 Agent 进行后续处理。

工作原理

基本用法

Agent 调用 render_ui 工具,传入组件数组:
工具返回结果包含 a2ui 字段,前端 StageGroup 检测到该字段后渲染 A2UIRenderer 组件。

组件目录

布局组件

Row

水平排列子组件。

Column

垂直排列子组件。

Card

带标题和边框的容器。

内容组件

Text

文本展示,支持 Markdown。

Image

图片展示。

Divider

水平分割线。

Badge

标签/徽章。

List

列表展示。

Table

表格展示。

交互组件

Button

可点击按钮,点击后触发 Action 回传。

Profy 业务组件

ExpertCard

专家信息卡片。

CreditDisplay

积分余额展示。

PlanBadge

套餐等级徽章。

StatusIndicator

状态指示器。

PricingTable

定价对比表。

ProgressBar

进度条。

Action 处理

当用户点击带 action 属性的 Button,前端将事件分发给 Agent:
Agent 在下一轮推理中可以读取该 action 并做出响应(如跳转到支付页、更新展示内容等)。

示例

套餐对比

状态仪表盘

操作确认

最佳实践

  1. 优先使用 A2UI 而非 Inline Visualization:当展示结构化数据(表格、列表、状态)时,A2UI 组件更一致且性能更优
  2. 保持组件树浅层:嵌套不超过 3 层,避免复杂度过高
  3. Action 命名使用 snake_case:如 confirm_deleteselect_plan,便于 Agent 解析
  4. 使用 payload 传递上下文:Button 的 payload 字段可以携带 Agent 需要的额外数据,避免靠位置推断
  5. 合理使用 Card 分组:逻辑相关的组件放入同一个 Card,视觉上形成独立单元
  6. 当需要自由绘图/Canvas/WebGL 时选择 Inline Visualization:A2UI 只支持预定义组件集