Skip to content

bugmaker2/ChatUI

Repository files navigation

ChatUI

基于 AI 的实时 UI 生成系统,通过自然语言描述生成 React UI 组件。

特性

  • 实时流式生成 - 逐 Token 生成 JSON Schema,前端即时渲染
  • 多 Agent 分层架构 - 五阶段流水线:骨架生成 → 并行展开 → 数据绑定 → 逻辑生成 → UX 增强
  • 递归并行展开 - 支持任意深度嵌套,自动处理复杂结构
  • JSON Patch 修改 - 增量修改现有 UI,无需重新生成
  • 可拖拽编辑 - 支持拖拽重排组件
  • 110+ 组件库 - 涵盖基础、布局、表单、数据、反馈、导航、图表 7 大分类

技术栈

后端

  • FastAPI + Python 3.12+
  • OpenAI SDK(AsyncOpenAI)
  • SSE 实时通信
  • uv 包管理

前端

  • React 19 + TypeScript 5.9
  • Vite 7.2
  • Tailwind CSS 4.1
  • Radix UI / shadcn/ui
  • @dnd-kit 拖拽库
  • Recharts 图表库

快速开始

环境要求

  • Python 3.12+
  • Node.js 18+
  • uv(Python 包管理器)

安装

# 克隆项目
git clone <repo-url>
cd ChatUI

# 配置环境变量
cp .env.example .env
# 编辑 .env 填入你的 API Key

# 安装后端依赖
uv sync

# 安装前端依赖
cd frontend && npm install

开发模式

# 终端 1:启动后端(热重载)
uv run main --dev

# 终端 2:启动前端
cd frontend && npm run dev

访问 http://localhost:5173

生产模式

# 构建前端并启动服务
uv run main

# 或强制重新构建
uv run main --build

访问 http://localhost:8000

环境变量

变量 说明 默认值
OPENAI_API_KEY OpenAI API Key(必填) -
OPENAI_BASE_URL API 端点(可选,支持兼容服务) -
OPENAI_MODEL 使用的模型 qwen3-max
EXPANSION_MODELS 展开阶段模型池(逗号分隔) -
LOG_LEVEL 日志级别 INFO

完整配置见 .env.example

项目结构

ChatUI/
├── main.py                 # FastAPI 入口
├── pyproject.toml          # Python 项目配置
├── app/                    # 后端核心
│   ├── agents/            # 多 Agent 架构
│   │   ├── base.py       # Agent 基类
│   │   ├── skeleton.py   # 骨架生成
│   │   ├── builder.py    # 内容构建(递归)
│   │   ├── data_binding.py
│   │   ├── logic.py
│   │   ├── ux_enhancement.py
│   │   └── orchestrator.py
│   ├── api/               # API 路由
│   ├── services/          # 业务逻辑
│   ├── store/             # 分片存储
│   └── utils/             # 工具函数
├── components/             # 组件文档(LLM 提示词)
│   ├── basic/
│   ├── layout/
│   ├── form/
│   ├── data/
│   ├── chart/
│   ├── feedback/
│   └── navigation/
├── frontend/               # 前端应用
│   ├── src/
│   │   ├── App.tsx
│   │   ├── components/ui/ # 110+ UI 组件
│   │   ├── renderer/      # Schema 渲染器
│   │   └── lib/           # 工具库
│   └── package.json
└── logs/                   # 日志目录

API 端点

生成 UI

POST /api/generate-ui/stream
Content-Type: application/json

{
  "prompt": "创建一个登录表单",
  "mode": "auto"  // auto | simple | hierarchical
}

返回 SSE 事件流:

  • start - 开始生成
  • partial_schema - 部分 Schema(可渲染)
  • schema - 完整 Schema
  • complete - 完成

修改 UI

POST /api/modify-ui/stream
Content-Type: application/json

{
  "prompt": "把按钮改成红色",
  "current_schema": { ... }
}

返回 SSE 事件流,包含 patch 事件(JSON Patch 操作)

健康检查

GET /health

生成模式

模式 说明 适用场景
simple 直接流式生成 简单表单、卡片
hierarchical 五阶段分层生成 复杂仪表盘、多区域页面
auto 自动判断 默认模式

分层模式流程:

  1. SkeletonAgent - 生成带 $placeholder 的骨架
  2. BuilderAgent - 并行递归展开各区域
  3. DataBindingAgent - 配置数据绑定
  4. LogicAgent - 生成交互逻辑
  5. UXEnhancementAgent - 规则式 UX 优化

组件库

分类 组件数 示例
基础 13 Text, Button, Input, Badge, Link, Image
布局 12 Row, Col, Container, Grid, Card
表单 15 Select, Checkbox, Switch, Slider, Rating
数据 18 Table, Tag, Statistic, Timeline, List
反馈 10 Alert, Progress, Skeleton, Spinner, Result
导航 8 Tabs, Breadcrumb, Pagination
图表 8 LineChart, BarChart, PieChart, AreaChart

部署

Railway

项目已配置 Railway 部署支持,推送到 main 分支自动部署。

Docker

# 构建镜像
docker build -t chatui .

# 运行
docker run -p 8000:8000 -e OPENAI_API_KEY=your-key chatui

License

MIT

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published