# @assistant-ui/react-generative-ui 中文文档

规范地址：https://npmcn.com/package/%40assistant-ui/react-generative-ui/

版本：0\.1\.7
npm 元数据更新时间：2026-10-28T00:52:27.774Z
中文译文更新时间：2026-11-07T00:27:03.408Z
软件包许可：MIT

本文由上游 README 翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40assistant-ui/react-generative-ui
原文对照：https://npmcn.com/package/%40assistant-ui/react-generative-ui/?lang=original
项目主页：https://www.assistant-ui.com/
源码仓库：https://github.com/assistant-ui/assistant-ui

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：14.5 kB，28 个文件
- 模块格式：ES Module
- TypeScript 类型：包内自带
- 运行依赖：1 个
- peer 依赖：zod ^4\.0\.0，react ^18 \|\| ^19，@types/react \*，@assistant-ui/react ^0\.15\.0
- 首次发布：2026-06-04T18:32:01.562Z
- 最新版本发布：2026-10-28T00:52:27.432Z
- 近 30 天下载量：322392（2026-10-07 至 2026-11-05，npm 官方下载统计）
- 已发布版本数：31（近 12 个月 31 个）

## 中文简介

助理- ui 的 Generative UI 组件

## 安装

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

也可以使用：`pnpm add @assistant-ui/react-generative-ui`、`yarn add @assistant-ui/react-generative-ui`、`bun add @assistant-ui/react-generative-ui`

## README

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

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

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

## 安装

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

## 使用量

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

```tsx
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` 道具是递归得到的,因此组件可以被嵌入:

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

## 流出道具

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

```tsx
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` 继续 客户.

```tsx
"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"` 文档](https://www.assistant-ui.com/docs) 用来建房的.

## Slack 团队和A2UI

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

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

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

```ts
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`) (中文(简体) ).

```ts
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` 路径.

```ts
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 是什么？

助理- 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 和提交记录判断。

