用途:在 OpenUI Forge 中,用 React 前端 + Elixir Phoenix 后端搭建生成式 UI 应用,将 OpenAI 流式响应以 SSE 直接推送到浏览器。激活触发词包括 openui elixir、openui phoenix、generative ui elixir、phoenix sse openui。
主要能力:后端以 Plug.Conn.send_chunked/2 开启 SSE,并用 Req 的流式 :into 收集器把上游每个 {:data, data} 块原样经 chunk/2 转发,客户端断开即停止;服务端在启动时读取 priv/system-prompt.txt 并缓存到 :persistent_term,请求时在消息前插入 system 消息,不信任客户端传入。前端用 FullScreen 配合 openuiChatLibrary、openAIAdapter 与 openAIMessageFormat。
必要用法:环境需 Node.js >= 22(推荐 24 LTS)、React >= 18.3.1(推荐 19+)、Elixir >= 1.15 与 Erlang/OTP 25+、Phoenix ~> 1.8,并设置 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/priv/system-prompt.txt。运行 mix deps.get && mix phx.server(4000 端口),前端 3000 端口。
限制:后端输出的是 OpenAI 原生 SSE,前端必须用 openAIAdapter(),用 openAIReadableStreamAdapter()(面向 NDJSON)会静默无输出;CORS 需显式允许前端源而非通配符;Cowboy 下有约 60 秒空闲超时需设 idle_timeout: :infinity,Bandit 无此上限。使用 req_llm 可做多提供商适配,但本文保持 Req 为轻量默认。其余细节资料未提供。