集成指南

将 orvui 与 OpenUI 结合使用

OpenUI 是生成式 UI 框架:模型不再返回 Markdown,而是输出抽象 UI 树(OpenUI Lang),Vue 运行时将每个节点映射到你注册的组件。将 orvui 注册为自定义 OpenUI 组件库后,每次生成的响应都会使用真实的动态组件,而且只使用你允许的组件。

先了解接入流程

  1. 读取现有能力

    从文档与注册表获取组件名称、API 和依赖。

  2. 安装并显式注册

    使用真实安装项和公开入口,按当前项目框架接入。

  3. 运行并核对结果

    检查生成结果、交互状态与需要的服务端能力。

安装

需要 OpenUI 的 Vue 运行时和希望开放给模型的 orvui 组件。使用 shadcn-vue 注册表复制源码;其他安装方式见 安装指南。

终端

Vue 绑定使用 @openuidev/vue-lang 0.4 与 @openuidev/lang-core ^0.4,需要 Vue 3.5+ 和 Zod。示例中的组件注册、渲染与动作处理方式详见 官方 Vue API。

注册组件

defineComponent 将一个 OpenUI Lang 节点映射为一个 orvui 组件。Zod props schema 在流式输出时校验数据;description 进入系统提示词,告诉模型组件的用途;useTriggerAction 保持控件可交互。容器的子节点使用已注册组件 .ref schema 的联合类型,既能校验嵌套关系,也能向模型说明哪些节点可嵌套。

lib/orvui-library.ts

组合组件库

createLibrary 汇总组件定义、指定 root 节点,并通过 componentGroups 与说明文字组织提示词,引导模型选择组件。

lib/orvui-library.ts

生成提示词

客户端负责渲染 OpenUI Lang,模型则需要生成它。在构建脚本中保存 { ...orvuiLibrary.toSpec(), schema: orvuiLibrary.toJSONSchema() } 的 JSON 结果。服务端使用 @openuidev/lang-core,将组件签名、描述、嵌套限制与语言语法合并为提示词,再将模型响应流式传给浏览器。下面的函数接入应用现有的流式传输;本站不启动模型服务。

server/generate.ts

组件库变化时重新生成 schema。服务端只导入构建时保存的 JSON,不导入客户端 Vue 组件,避免将客户端运行时打包进服务端。

渲染流式内容

将组件库传给客户端的 Renderer。它解析服务端持续累积的 OpenUI Lang,并随着 token 到达逐步绘制 orvui 组件。将 onAction 回调连接到发送消息的逻辑,使按钮可以继续对话;这是普通回调 prop,应使用 :on-action。

GenerativeResponse.vue

为什么 orvui 适合

orvui 组件自带所需文件并通过注册表分发,因此上面的组件库就是集成本身,无需再接入其他 UI 运行时。组件使用语义化控件与 shadcn 令牌,模型生成的界面能直接继承应用主题。

参考资料

  • OpenUI

    生成式 UI 框架与 OpenUI Lang。

    打开
  • 定义组件

    Vue defineComponent、createLibrary 和 Renderer 的完整参考。

    打开
  • Vue 聊天示例

    使用同一组件库模式的官方 Vue 示例。

    打开

其他支持 shadcn 注册表的生成式 UI 框架,也可以用同样的方式获取 orvui;更多集成指南将随项目推进提供。