W
AI-Wiki
CONCEPT

生成式UI

定义

生成式UI,是指 Agent 在生成回复时,输出的不只是纯文本说明,还包括可被前端直接渲染的界面组件。

纯文本回复的典型形式,是“告诉用户结果是什么”;生成式 UI 的形式,则是“把结果直接显示成界面”。

在文中给出的能力描述里,Agent 的输出可以是 React 组件,例如图表、表格、按钮,而不是只返回“这里有一份销售趋势,你可以自己再做图”这样的文字说明。

因此,它与普通聊天式回答的关键区别,不在于内容主题是否复杂,而在于返回结果是否已经具备可呈现、可交互的 UI 结构。

在本文档中的语境

在《实战指南:用 CopilotKit 2 小时构建生产级 AI Agent - 今日头条 摘要》中,生成式UI 被归为 CopilotKit 的核心能力之一,与开箱即用的运行时、上下文感知式业务集成并列。

这一定义不是抽象概念,而是服务于 Agent-Native 应用开发的实际目标:让开发者把精力放在业务逻辑上,而不是围绕 AI 返回结果重复搭建展示层。

文中强调,过去 AI Agent 开发常见痛点之一是 UI 重复造轮子;而生成式 UI 的价值就在于,Agent 的结果可以直接以界面形式嵌入对话流,减少开发者额外为不同结果类型手写展示界面的工作。

在这个语境下,生成式UI 不是单独存在的前端特效,而是 Agent 响应链路的一部分:用户发起请求,Agent 识别意图并调用动作,动作返回数据和界面,前端将其直接渲染到对话中。

关键机制

1. 输出结构从“纯文本”扩展为“文本 + 组件”

文中最核心的实现点,是动作处理函数不必只返回字符串,也可以返回一个对象,其中同时包含:

  • text:给用户看的说明文字;
  • generativeUI:可直接渲染的组件。

也就是说,Agent 的一次响应可以同时包含“解释”和“呈现”。文本负责说明当前结果,组件负责把结果以更适合理解和操作的方式展示出来。

这比纯文本更进一步:它不是让用户读完说明后再跳到别的页面查看,而是在对话现场把结果呈现出来。

2. 与业务动作绑定,而不是脱离数据源单独生成

文中的示例不是让模型凭空画图,而是把 生成式UI 与业务动作绑定。

get_sales_report 动作为例,其处理流程是:

  1. 动作被用户的自然语言请求触发;
  2. 处理函数调用接口 fetch('/api/sales/report') 拉取销售数据;
  3. 将接口响应解析为数据对象;
  4. 基于这批真实数据构造图表组件;
  5. 返回 textgenerativeUI

文中的返回形式明确写成:

  • text: '以下是最近30天销售趋势:'
  • generativeUI: <SalesChart />

这说明 生成式UI 的核心,不是“模型会写点前端代码”,而是“动作执行完后,直接把结构化业务结果变成界面输出”。

3. 依赖前端组件体系完成渲染

文中示例直接使用 React 组件来承载生成式 UI,并且提到图表实现“需提前安装图表库如 recharts”。

示例里的 SalesChart 是一个 React 组件,内部通过 LineChartXAxisYAxisLine 等图表组件来展示最近 30 天销售趋势。

这说明 生成式UI 的落地前提是:前端运行环境必须支持组件渲染,并且通常与 React 组件体系紧密结合。

换句话说,生成式 UI 并不是任何对话接口天然自带的能力;如果前端只能显示纯字符串,或者没有组件渲染机制,那么 generativeUI 这一类输出就无从展示。

销售数据案例

文中用“查看最近 30 天销售数据”作为典型示例来说明 生成式UI 的工作方式。

用户触发方式

用户不是点击报表系统中的固定菜单,而是直接用自然语言提出分析请求,例如:

  • “查看最近 30 天销售数据”

这体现了 Agent 场景的一个重要特征:分析入口是自然语言,而不是预设表单或固定仪表板。

动作定义

对应的动作名为 get_sales_report,其说明是“生成最近30天的销售数据图表”。

handler 中,系统先请求 /api/sales/report 接口,再读取返回的数据。

组件生成方式

拿到数据后,示例定义了一个 SalesChart 组件。这个组件使用折线图来展示数据趋势,关键参数包括:

  • 图表宽度 width={600}
  • 图表高度 height={300}
  • 横轴使用 date 字段;
  • 折线使用 amount 字段;
  • 折线类型为 monotone
  • 颜色为 #8884d8

这表明文中的“生成式 UI”并不是抽象说法,而是落实成一个具体的可渲染趋势图。

返回结果结构

动作最终返回的不是一段描述图表的文字,而是:

  • 一段文本:以下是最近30天销售趋势:
  • 一个组件:<SalesChart />

于是,聊天界面里出现的不是“建议你查看图表”,而是图表本身。文中将这种效果概括为“对话即分析”。

价值与意义

1. 减少额外手写 UI 代码

文中明确指出,使用 生成式UI 后,开发者无需再为每一种 AI 结果单独写一套外部展示逻辑。

对于销售趋势这种场景,如果只有纯文本回复,开发者往往还要补一层报表页面、卡片组件或弹窗逻辑,把数据再转成图表。生成式 UI 则把这一步并入 Agent 响应本身,降低了从“模型给出结论”到“用户看见结果”的中间开发成本。

2. 让结果直接可视化呈现

销售数据、订单信息、流程引导等内容,往往天然适合结构化展示。

如果只用文字回复,用户需要自行从一大段描述中提炼关键信息;而图表、表格、按钮等组件可以直接承担信息组织与交互入口的作用。

因此,生成式UI 在 Agent 场景中的价值,不只是“更好看”,而是“更直接、更低认知负担”。

3. 让业务动作与对话体验合二为一

文中整体想解决的问题之一,是传统 AI 输出与应用状态割裂,难以实现“边对话边操作”。

生成式UI 与动作机制结合后,用户通过自然语言发起请求,系统调用真实业务接口,随后把结果直接作为界面展示在对话里。

这意味着对话不再只是业务系统的一个说明层,而可以成为业务结果的主入口与承载界面。

组件形式

根据文中描述,生成式UI 可返回的组件形式包括但不限于:

  • 图表;
  • 表格;
  • 按钮。

其中,文中的详细示例使用的是 React 图表组件来实现销售趋势图,但能力范围并不限于图表。

表格适合展示结构化列表数据,按钮适合承接下一步操作或引导流程。因此,这一能力既可用于“展示分析结果”,也可用于“把后续操作嵌入回复”。

细节与边界

1. 它不是对纯文本的替代,而是增强

文中示例保留了 text 字段,说明 生成式UI 并不意味着完全放弃文本。

更常见的做法是:文本负责概述结果、解释当前状态或提示用户如何理解;组件负责承载高密度信息或交互入口。

因此,最佳实践通常不是“只有 UI 没有文字”,而是“文字 + UI”的组合。

2. 它依赖真实动作和接口,而非仅靠模型想象