ai_service/README.md
Wang Xiuqiang 20802db28a 重构run_pipeline和generate_layout
将辅助函数移动整合到utils.py当中
2025-07-03 11:47:48 +08:00

181 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# AI海报生成系统
## 概述
AI海报生成系统集成DeepSeek、Kimi、ComfyUI三大AI模型一键生成Vue组件代码和PSD文件。
**核心功能**:
- 🤖 **AI驱动**: DeepSeek分析 + Kimi文案 + ComfyUI图片
- 🎨 **一键生成**: 输入需求 → Vue代码 + PSD文件
- 📱 **REST API**: 统一接口,支持前端集成
- 🎭 **预定义模板**: lotus.jpg, nku.png, stamp.jpg, background.png
- 🖼️ **自动合成**: 多图层PSD文件生成
## 系统架构
```
前端 → FastAPI(8000) → AI模型集群
Vue代码 + PSD文件
```
## 快速开始
### 环境准备
```bash
# 创建虚拟环境
conda create -n ai_service python=3.11
conda activate ai_service
# 安装依赖
pip install -r requirements.txt
# 配置API密钥
cp .env.example .env
# 编辑 .env 文件,添加:
# DEEPSEEK_API_KEY=your_key
# MOONSHOT_API_KEY=your_key
```
### 启动服务
```bash
cd scripts
python run_pipeline.py # 选择: 2 (API服务器)
```
### 验证服务
```bash
curl http://localhost:8000/health
```
## API使用
### 生成海报
```bash
curl -X POST http://localhost:8000/api/generate-poster \
-H "Content-Type: application/json" \
-d '{"user_input": "端午节海报,传统风格"}'
```
### 下载文件
```bash
curl "http://localhost:8000/api/download/psd?session_id=SESSION_ID" -o poster.psd
curl "http://localhost:8000/api/download/vue?session_id=SESSION_ID" -o poster.vue
```
## 项目结构
```
ai_service/
├── scripts/ # 核心脚本
│ ├── run_pipeline.py # API服务器
│ ├── utils.py # 工具函数
│ ├── generate_layout.py # Vue代码生成
│ ├── generate_text.py # 文案生成
│ ├── flux_con.py # 图片生成
│ └── export_psd_from_json.py # PSD合成
├── configs/ # 配置文件
│ ├── vue_templates.yaml # Vue模板
│ └── font.yaml # 字体配置
├── outputs/ # 输出目录
└── workflows/ # ComfyUI工作流
```
## 核心模块
| 模块 | 功能 | AI模型 |
|------|------|--------|
| `utils.py` | 用户输入分析 | DeepSeek |
| `flux_con.py` | 图片生成 | ComfyUI |
| `generate_text.py` | 文案生成 | Kimi |
| `generate_layout.py` | Vue代码生成 | DeepSeek |
| `export_psd_from_json.py` | PSD合成 | - |
## 使用示例
### JavaScript调用
```javascript
const response = await fetch('http://localhost:8000/api/generate-poster', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ user_input: "春节海报,红色背景" })
});
const result = await response.json();
console.log('Vue代码:', result.data.vue_code);
```
### Python调用
```python
import requests
response = requests.post('http://localhost:8000/api/generate-poster',
json={"user_input": "端午节海报,传统风格"})
result = response.json()
if result["status"] == "success":
print("生成成功!")
print("Vue代码:", result["data"]["vue_code"])
```
### 本地测试
```bash
cd scripts
python run_pipeline.py # 选择: 1 (本地测试)
# 输入: "春节海报,红色背景,现代风格"
```
## 部署
### Docker部署
```dockerfile
FROM python:3.11
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
EXPOSE 8000
CMD ["uvicorn", "scripts.run_pipeline:app", "--host", "0.0.0.0", "--port", "8000"]
```
### PM2部署
```bash
pm2 start "uvicorn scripts.run_pipeline:app --host 0.0.0.0 --port 8000" --name poster-api
```
### Nginx反向代理
```nginx
server {
listen 80;
location / {
proxy_pass http://localhost:8000;
}
}
```
## 故障排查
### 常见问题
```bash
# 检查API密钥
echo $DEEPSEEK_API_KEY
# 测试ComfyUI连接
curl http://101.201.50.90:8188/system_stats
# 检查端口占用
netstat -tulpn | grep 8000
```
## 更新日志
### v2.0.0 (2025-07-03)
- ✅ 重构代码结构,移除冗余代码
- ✅ 新增预定义Vue模板系统
- ✅ 优化工具函数模块化
- ✅ 简化API接口设计
### v1.0.0 (2025-01-02)
- ✅ 集成DeepSeek + Kimi + ComfyUI
- ✅ 统一API接口设计
- ✅ 支持Vue组件和PSD文件生成