thesysdev/openui

The Open Standard for Generative UI

OpenUI – 生成式 UI 框架

OpenUI 是一个全栈、框架无关的库,允许你构建由大型语言模型(LLM)生成并逐 token 流式传输到客户端的用户界面。它引入了 OpenUI Lang,一种紧凑、流式优先的语言,比 JSON 更高效地描述 UI 组件(最多可减少 67% 的 token)。核心解析模型的输出,将其转换为实时 UI,并可用于 React、Vue、Svelte、Angular,甚至纯浏览器 bundle。


工作原理

  1. 组件库 – 使用类型化 props(通过 Zod)定义一组 UI 组件(图表、表单、表格等)。
  2. 系统提示生成 – OpenUI 创建一个提示,告诉 LLM 它可以生成哪些组件。
  3. LLM 调用 – 将提示发送给你的模型。
  4. OpenUI Lang 流 – 模型流式传输紧凑的 UI 描述。
  5. 渲染器 – 相应的运行时(React、Vue 等)解析流,并在 token 到达时增量渲染 UI。

该流程在 README 的 Mermaid 图中可视化。


主要包(monorepo)

包 提供内容 典型用途
@openuidev/lang-core 解析器、提示生成器、运行时评估、类型层 – 无框架依赖 后端服务、边缘函数、自定义运行时
@openuidev/react-lang 用于解析和渲染 OpenUI Lang 的 React 绑定 任何需要流式 UI 的 React 应用
@openuidev/react-ui 预构建的聊天 UI、组件库、即用型布局 最快获得完整聊天界面
@openuidev/react-headless 无头聊天状态和流式适配器 在流式逻辑之上构建你自己的 UI
@openuidev/vue-lang、@openuidev/svelte-lang、@openuidev/angular-lang 框架特定绑定 Vue / Svelte / Angular 项目
@openuidev/langchain 用于 LangChain / LangGraph 代理流式传输 OpenUI Lang 的辅助工具 构建生成 UI 的 LLM 代理
@openuidev/browser-bundle 单文件 bundle(脚本 + 样式表),用于 CDN/iframe 嵌入 无构建、嵌入任何页面的场景
@openuidev/a2ui A2UI 协议客户端,携带 OpenUI Lang 负载 与 A2UI 兼容后端互操作
@openuidev/server 服务器工具和网关辅助 托管提示生成或事件可观测性
@openuidev/observability-cloud 将 OpenUI 事件发送到 Thesys 控制台的云接收器 生产级遥测
@openuidev/cli 用于搭建应用、生成提示、转换模式的 CLI npx @openuidev/cli@latest create …

快速开始(React 示例)

npx @openuidev/cli@latest create --name genui-chat-app

该命令搭建一个 React 应用,包括:

  • OpenUI Lang 支持
  • 库驱动的提示生成
  • 流式 UI 更新
  • 即用型聊天界面

你也可以仅为后端服务安装核心解析器:

npm install @openuidev/lang-core

为什么使用 OpenUI Lang?

  • 流式优先 – UI 在模型生成输出时逐步出现,减少感知延迟。
  • Token 效率 – 基准测试显示,在常见 UI 模式中,相比基于 JSON 的流式格式,token 减少约 50%。
  • 受控输出 – 模型只能生成你定义的组件,防止任意标记。
  • 类型化契约 – 组件 props 使用 Zod 模式描述,提供静态保证并简化调试。

文档与社区


许可证

OpenUI 在 MIT 许可证下发布。


摘要

OpenUI 为你提供一种紧凑的流式语言和一组框架无关的运行时,使 LLM 能够生成即时出现的 UI,且 token 远少于 JSON。安装核心解析器用于后端工作,或引入 React/Vue/Svelte/Angular 绑定以获得完整的前端体验,并使用 CLI 在几秒钟内搭建一个可用的应用。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト