thesysdev/open-intelligent-ui
An open-source take on ChatGPT's Intelligent UI: answers stream as interactive UI (maps, photos, charts, drawings and working tools). Built with OpenUI.
Open Intelligent UI – 概览
Open Intelligent UI 是一个开源演示,重现了 ChatGPT 中展示的“智能 UI”体验 – 例如,用户查询“在旧金山规划一天”会返回丰富、交互式的答案(地图、照片、可编辑的行程),而不是纯文本。该项目基于 OpenUI 构建,这是一个用于生成式 UI 的开放标准,让语言模型流式传输 UI 组件(OpenUI Lang 1.0)的描述,然后由前端进行渲染。
核心理念
- 模型驱动 UI – LLM 生成一个 OpenUI Lang 程序,组装 UI 原语(布局、文本、输入、媒体、图表、地图等)。没有静态布局被硬编码;模型决定使用哪些组件。
- 组件库 – TypeScript 库(
src/lib/components/)定义了 30 多个可重用原语(例如Col,Row,Map,Chart,SearchImage)。每个组件都有 schema、样式标记和深色模式支持。 - 内置函数 – 59 个通用
@functions(列表、数学、日期、颜色、聚合等)让生成的程序能够计算值、更新状态并驱动交互式小部件。 - 状态与操作 – UI 输入绑定到
$variables;诸如@Set、@CopyToClipboard、@OpenUrl之类的操作会改变状态,而无需往返服务器。 - 可插拔后端 – 默认情况下,应用与 OpenUI Cloud 网关通信,但您可以指向任何与 OpenAI 兼容的 API(OpenRouter、本地 Ollama 等)。
工作原理(高层流程)
- 用户输入请求 → 前端将其发送到
/api/chat。 - 服务器构建系统提示,包含组件规范和提示选项,然后调用所选的 LLM(OpenAI、Ollama 等)。
- LLM 流式传输 OpenUI Lang 描述 UI。
- 前端解析流并实时渲染所描述的组件。状态更改(滑块、复选框)会在客户端触发相同的函数。
- 可选工具 –
SearchImage获取 Wikipedia 的引导图片,/api/street-route从 OSRM 获取道路几何形状等。
开箱即用的功能
- 演示聊天 UI(
http://localhost:3000),可以回答旅行规划、仪表盘和其他“智能 UI”提示。 - 设计界面(
/gallery)展示了所有 16 个官方示例和 2 个仪表盘的手写程序,有助于 UI 设计师探索组件集。 - 基准测试脚本,可以针对任何模型运行 16 个示例和 8 个仪表盘提示,验证生成的 UI 并捕获屏幕截图。
开始使用(快速步骤)
cp .env.example .env
npm install
npm run generate:apiKey # 将 THESYS_API_KEY 写入 .env(如果使用自己的 API,可跳过)
npm run dev # 启动开发服务器
打开浏览器,输入类似以下的请求:
I'm in San Francisco for a day, plan a sightseeing route for me
界面将显示地图、照片和可编辑的行程。
使用 Ollama 本地运行(无需云密钥)
- 安装 Ollama 并拉取模型(默认
qwen3.8:27b)。 - 确保大的上下文窗口(
OLLAMA_CONTEXT_LENGTH=32768)。 - 在
.env中设置MODEL_PROVIDER=ollama并运行npm run dev。- 没有输出校正步骤,因此更大的模型会带来更好的结果。
谁可能使用它
- 开发者 – 构建 AI 增强产品并需要现成 UI 生成栈的人。
- 设计师 – 探索如何从可重用原语组成 LLM 驱动界面的设计师。
- 研究人员 – 评估生成式 UI 模型的研究人员(基准脚本使系统测试变得容易)。
局限性
- 演示依赖于相当大的提示(约 8k tokens);本地模型需要大的上下文窗口。
- 使用本地模型时,OpenUI 网关的验证/更正会被跳过,因此格式错误的 UI 代码可能会破坏 UI。
- 只实现了 OpenUI 1.0 组件/函数的子集;扩展库需要添加 schema 和重新生成步骤。
简而言之: Open Intelligent UI 是 ChatGPT 风格“智能 UI”的一个具体开源实现,使用 OpenUI 生成式 UI 标准,包含完整的组件库、有状态函数和灵活的后端选项,适用于任何与 OpenAI 兼容的模型。
相关
- 项目
- 项目
- 项目
- 项目