@assistant-ui/react-generative-ui

中文文档
0.1.7发布于 2026/10/28MITTypeScriptES Module构建来源已验证近 30 天下载 32.2万

助理- ui 的 Generative UI 组件

中文使用文档
文档目录9 节
  1. 安装
  2. 使用量
  3. 流出道具
  4. "use generative" 撰写
  5. Slack 团队和A2UI
  6. @assistant-ui/react-generative-ui/slack
  7. @assistant-ui/react-generative-ui/teams
  8. @assistant-ui/react-generative-ui/a2ui
  9. 许可证

@ assistant-ui/ react-generative-ui (英语)

此套件再出口 @assistant-ui/generative-ui,框架中立之家 助理-伊的基因UI。 现有进口继续维持不变;新编码应取决于 @assistant-ui/generative-ui 直接导入反应渲染器 @assistant-ui/generative-ui/react。 。 。 .

用于助手-ui的基因UI工具.

安装

npm install @assistant-ui/react-generative-ui

使用量

在图书馆里宣布模型的组件 然后曝光 他们通过 present 工具。 模型发出一个 { _type, ...props } 树 (单位:千美元)_type 命名组件, 因此是真实的 type 道具从不碰撞;工具 让它与图书馆对立.

import { JSONGenerativeUI } from "@assistant-ui/react-generative-ui";
import { Thread, Tools } from "@assistant-ui/react";
import { z } from "zod";

const generativeUI = new JSONGenerativeUI({
  library: {
    Card: {
      description: "A card container with a title.",
      properties: z.object({ title: z.string() }),
      render: ({ title, children }) => (
        <section className="card">
          <h3>{title}</h3>
          {children}
        </section>
      ),
    },
    Text: {
      description: "A run of text.",
      properties: z.object({ tone: z.enum(["muted", "normal"]).optional() }),
      render: ({ tone, children }) => <p data-tone={tone}>{children}</p>,
    },
  },
});

const toolkit = {
  present: generativeUI.present(),
};

function App() {
  return (
    <Thread>
      <Tools toolkit={toolkit} />
      {/* MessageList, Composer, ... */}
    </Thread>
  );
}

节点的 children 道具是递归得到的,因此组件可以被嵌入:

{
  "_type": "Card",
  "title": "Hello",
  "children": [{ "_type": "Text", "tone": "muted", "children": "Nested text" }]
}

流出道具

默认一个部件只有在道具完全到达后才能制作,所以 render 总是看到完整的道具。 选择从部分道具渲染 streamProperties。当你这样做, render 接收注入的 $status 道具 歧视道具: "streaming" 他们是 Partial一次 "done" 都结束了.

const generativeUI = new JSONGenerativeUI({
  library: {
    Weather: {
      description: "A live weather card.",
      properties: z.object({ city: z.string(), temp: z.number() }),
      streamProperties: true,
      render: (props) => {
        if (props.$status === "done") {
          return <Card>{`${props.city}: ${props.temp}°`}</Card>; // complete props
        }
        return <Card>{props.city ?? "Loading…"}</Card>; // partial props
      },
    },
  },
});

render 是函数 props,而不是反应组件——但它运行在其 拥有纤维,所以你可以叫钩子 里面像往常一样.

"use generative" 撰写

上面的例子用手将图书馆连接到客户端上. 与 "use generative" 编译器( e)@assistant-ui/next 或者说 @assistant-ui/vite? 你吗 也可以将一个组件的 properties 计划 render 财务报告和审定财务报表 将图书馆暴露为工具,建筑将每半分到正确的目标: 策略到服务器(所以模型看到工具) render 继续 客户.

"use generative";

import { z } from "zod";
import { Weather } from "@/components/weather";
import { defineToolkit } from "@assistant-ui/react";
import {
  JSONGenerativeUI,
  defineGenerativeComponents,
} from "@assistant-ui/react-generative-ui";

const generative = new JSONGenerativeUI({
  library: defineGenerativeComponents({
    Weather: {
      description: "Show a weather card.",
      properties: z.object({ city: z.string() }),
      render: (props) => <Weather {...props} />,
    },
  }),
});

export default defineToolkit({
  // `present` displays a component; `prompt_user` is a human-in-the-loop prompt.
  present: generative.present(),
  prompt_user: generative.promptUser(),
});

模特儿打电话来 present 一个节点像 { "_type": "Weather", "city": "SF" }。 。 。 . 过 present({ display: "standalone" }) 自行制作该部分 表面而不是内线。 见 "use generative" 文档 用来建房的.

Slack 团队和A2UI

同一树为平原JSON,因此没有被绑入浏览器. 三条无反应子路径转换为 Slack Block Kit, Microsoft Teams 适配卡,并输入 A2UI (英语) 表面 。 他们运行在服务器动作, 队列工人,和webhook处理器。 转换超过了内置词汇; a $type 在外边被丢弃 警告。 每个目标都有一个组件,以及未支持的内容如何降解,记录如下: Slack 上的基因UI, (中文(简体) ), 微软团队的基因UI,以及 A2UI 过AG-UI。 。 。 .

@assistant-ui/react-generative-ui/slack

将树转换为 Slack Block Kit JSON ()toSlackBlocks),解码 block_actions 网络鼠标返回 $action 有效载荷(decodeBlockAction),并将 Block Kit 映射回词汇节点(fromSlackBlocks) (中文(简体) ).

import { toSlackBlocks } from "@assistant-ui/react-generative-ui/slack";

const { blocks, warnings } = toSlackBlocks({
  $type: "Card",
  title: "Order #48213",
  children: [{ $type: "Text", value: "Shipped, arriving Thursday." }],
});

@assistant-ui/react-generative-ui/teams

将树转换为 Microsoft Teams 适配卡(toAdaptiveCard)或有根-木质支持的活体框架附件(toTeamsAttachments),并解码 activity.value (单位:千美元)decodeSubmitData) (中文(简体) ).

import { toAdaptiveCard } from "@assistant-ui/react-generative-ui/teams";

const { card, warnings } = toAdaptiveCard({
  $type: "Card",
  title: "Order #48213",
  children: [{ $type: "Text", value: "Shipped, arriving Thursday." }],
});

@assistant-ui/react-generative-ui/a2ui

入境方向:应用A2UI地表操作(applyA2uiOperations),并将表面转换为词汇树(convertSurfaceToUISpec),通过同一途径产生 present 路径.

import {
  applyA2uiOperations,
  convertSurfaceToUISpec,
} from "@assistant-ui/react-generative-ui/a2ui";

const { state } = applyA2uiOperations(new Map(), operations);
for (const surface of state.values()) {
  const { spec, warnings } = convertSurfaceToUISpec(surface);
}

许可证

麻省理工学院

版本与发布记录

@assistant-ui/react-generative-ui 共发布 31 个版本,首次发布于 2026/06/05;过去 12 个月发布了 31 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.1.7latest2026/10/2810 天前
0.1.62026/10/2315 天前
0.1.52026/10/2018 天前
0.1.42026/10/1622 天前
0.1.32026/10/1325 天前
0.1.22026/10/1226 天前

关于 @assistant-ui/react-generative-ui 的常见问题

@assistant-ui/react-generative-ui 是什么?

助理- ui 的 Generative UI 组件

如何安装 @assistant-ui/react-generative-ui?

在项目目录运行 npm install @assistant-ui/react-generative-ui,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:zod(^4.0.0)、react(^18 || ^19)、@assistant-ui/react(^0.15.0)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@assistant-ui/react-generative-ui 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@assistant-ui/react-generative-ui 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@assistant-ui/react-generative-ui 可以商用吗?

@assistant-ui/react-generative-ui 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@assistant-ui/react-generative-ui 的下载量有多少?

根据 npm 官方下载统计,@assistant-ui/react-generative-ui 在 2026/10/07 – 2026/11/05 这 30 天内被下载 322,392 次,日均约 10,746 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@assistant-ui/react-generative-ui 还在维护吗?

最新版本 0.1.7 发布于 2026/10/28(10 天前);至今共发布 31 个版本,其中过去 12 个月发布了 31 个;首次发布于 2026/06/05。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。