UStackUStack
OpenUI icon

OpenUI

OpenUI 是面向生成式 UI 的开放标准,帮助 AI 应用基于已注册组件,以结构化界面响应用户。

OpenUI

什么是 OpenUI?

OpenUI 被描述为“面向生成式 UI 的开放标准”。该网站将其定位为一种开源方法,用于构建 AI 应用,这些应用能够以用户界面而非纯文本进行响应。

在实际层面,OpenUI 包含一个开发者 CLI 和一套面向 React 的基础原语,用于定义组件并将其注册到一个库中,AI 应用可将该库用作 UI 构建块。

主要特性

  • 生成式 UI 的开源工具:页面将 OpenUI 定位为一项开放标准,专为让 AI 应用响应采用 UI 形式而设计。
  • 用于创建项目的 CLI:示例展示了使用 npx @openuidev/cli@latest create 来搭建新应用/工作流。
  • 组件定义 API:页面展示了 defineComponent 用于命名组件并描述其输入属性(包括 schema 定义)。
  • 用于 UI 构建块的库注册:示例使用 createLibrary 并导出 library,表明了一种将组件注册为可重用集的方法。
  • 基于 schema 的属性(zod):示例导入 zod 并使用 z.object(...) 定义组件属性,包括通过 z.string().url() 进行 URL 验证。

如何使用 OpenUI

页面展示的典型设置首先通过 CLI 使用 npx @openuidev/cli@latest create 创建项目。搭建后,使用 defineComponent 定义 UI 组件,包括描述每个组件预期的属性 schema。

接下来,使用 createLibrary 将这些组件注册到一个库对象中(导出为 library)。该库随后可被 AI 应用引用,从而将响应渲染为使用已注册组件的结构化 UI。

使用场景

  • AI 生成的 UI 部分(例如轮播图):定义 Carousel 组件和 CarouselCard 组件,带有明确的属性 schema(标题、图像和 CTA 标签),使 AI 能够输出具有一致结构的 UI 轮播图。
  • 来自 AI 的结构化列表:使用组件属性(卡片定义数组、可选字段如描述,以及验证过的 URL)确保 AI 生成的 UI 元素符合预期数据形状。
  • 为 AI 应用构建可重用 UI 组件库:将多个 UI 组件集中到一个单一导出的 library 中,以便团队随时间增长共享的“UI 词汇表”。
  • 用于 UI 渲染的类型化接口:应用 zod schema 验证(例如,确保 imageUrl 是 URL 字符串),以减少 AI 输出导致 UI 渲染错误的可能性。

常见问题

  • OpenUI 仅适用于 React 吗? 提供的示例使用 @openuidev/react-lang 并展示了 React 风格的组件用法,因此网站示例表明是一种面向 React 的方法,但源代码并未明确声称支持更广泛的框架。

  • 如何开始使用 OpenUI 构建? 页面展示了使用 CLI npx @openuidev/cli@latest create 启动,然后使用 defineComponent 定义组件并将其注册到 library 中。

  • 在此上下文中“生成式 UI”是什么意思? 网站将 OpenUI 描述为使 AI 应用能够“以你的 UI 响应”,意味着 AI 输出可渲染为由已注册组件构建的 UI 结构。

  • 组件输入如何指定? 示例中使用 zod schema 定义组件属性(例如 z.object({ ... })z.string().url())。

  • 使用前需要注册组件吗? 示例包含 createLibrary 并导出 library,表明需要将组件组装并注册到库中供 AI 应用使用。

替代方案

  • 构建自己的 UI schema + 渲染器:不采用开放标准,而是设计自己的 JSON/UI schema 和将结构化 AI 输出转换为组件的渲染器。这与需要自行定义端到端协议不同。
  • 使用无“开放标准”的 UI 组件 schema 库:有一些方法验证 AI 输出并将其映射到 UI 组件,但可能不提供相同的“生成式 UI 标准”定位或专用 CLI/工作流。
  • 通用 UI 生成框架(非标准化):从提示直接生成 UI 的工具可能更少关注将 UI 组件注册为类型化库,而更多是生成代码或布局,从而将工作流从“组件库”改为“提示到布局/代码”。