用途:该技能用于搭建生成式 UI 应用,前端为 React,后端为 Java Spring Boot WebFlux。后端以响应式 WebClient 直接把 OpenAI 的 SSE 流转发给浏览器,配合前端的 openAIAdapter() 使用。触发词包括 openui java、openui spring、openui spring boot backend、generative ui java、java streaming ui backend、webflux openui。
主要能力:后端提供 Flux<String> 控制器,以 produces=text/event-stream 重新封装每个片段为 data: {chunk}\n\n,并以 data: [DONE] 结束;Reactor 全程非阻塞,令牌随流实时推送到客户端,不会整段缓冲。共享的 WebClient 支持 OPENAI_BASE_URL,可对接 OpenAI 兼容提供方。系统提示词在服务端注入,不信任客户端 system 消息。前端通过 FullScreen、openuiChatLibrary、openAIAdapter()、openAIMessageFormat 指定 apiUrl 接入。
必要用法:需要 Node.js >= 22(推荐 24 LTS)、React >= 18.3.1(推荐 19+)、Java 21 LTS、Maven 3.9+ 或 Gradle 8+、Spring Boot 4.0.x、设置 OPENAI_API_KEY。安装前端依赖:npm install @openuidev/react-ui @openuidev/react-headless @openuidev/react-lang lucide-react zod。生成系统提示词:npx @openuidev/cli generate ./src/lib/library.ts --out backend/src/main/resources/system-prompt.txt。后端 mvn spring-boot:run 跑在 :8080,前端在 :3000。CORS 需锁定 FRONTEND_ORIGIN(默认 http://localhost:3000),不要用通配符。
适用场景:需要 Java 技术栈的生成式 UI 聊天应用。
限制:system-prompt.txt 缺失会导致启动时 UncheckedIOException;前端使用 openAIReadableStreamAdapter()(NDJSON)会无输出,应改用 openAIAdapter();手动给字符串加 data: 前缀会导致重复帧无法解析;返回 Mono 或收集过的 Flux 会整段缓冲而非流式。其余细节资料未提供。