ai_service/README.md

402 lines
10 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海报生成系统是一个集成多个AI模型的智能海报生成平台能够根据用户输入一键生成Vue组件代码和PSD文件。
**核心特性**:
- 🤖 **AI驱动**: 集成DeepSeek、Kimi、ComfyUI三大AI模型
- 🎨 **一键生成**: 输入需求自动生成Vue代码和PSD文件
- 📱 **前端友好**: 提供统一的REST API接口
- 🎭 **智能排版**: 自动生成响应式Vue组件布局
- 🖼️ **图片合成**: 自动生成图片并合成PSD文件
- ✍️ **文案优化**: AI生成适配的标题和文案内容
## 🏗️ 系统架构
```
┌─────────────┐ HTTP请求 ┌──────────────┐ 调用AI服务 ┌─────────────┐
│ 前端 │ ─────────────→ │ FastAPI服务器 │ ─────────────→ │ AI模型集群 │
│ (Vue/React) │ │ (8000端口) │ │ │
└─────────────┘ └──────────────┘ └─────────────┘
│ │
▼ ▼
┌──────────────┐ ┌─────────────┐
│ 会话管理 │ │ ComfyUI图片 │
│ 文件存储 │ │ 生成服务 │
└──────────────┘ │ (101.201.50.90) │
└─────────────┘
```
## 🚀 快速开始
### 环境准备
1. **Python环境**
```bash
# 创建虚拟环境
conda create -n ai_service python=3.11
conda activate ai_service
# 安装依赖
pip install -r requirements.txt
```
2. **环境配置**
```bash
# 复制环境变量文件
cp .env.example .env
# 配置API密钥编辑.env文件
DEEPSEEK_API_KEY=your_deepseek_api_key
MOONSHOT_API_KEY=your_kimi_api_key
```
### 启动服务
#### 方式1: 交互式启动
```bash
cd scripts
python run_pipeline.py
# 选择: 2 (API服务器模式)
```
#### 方式2: 直接启动API服务器
```bash
cd scripts
uvicorn run_pipeline:app --host 0.0.0.0 --port 8000 --reload
```
### 验证服务
```bash
# 健康检查
curl http://localhost:8000/health
# 查看API信息
curl http://localhost:8000/
```
## 📋 主要功能
### 1. 智能需求分析
- 使用**DeepSeek**模型分析用户输入
- 提取主题、风格、尺寸等关键信息
- 生成结构化的设计参数
### 2. AI图片生成
- 调用**ComfyUI**服务(101.201.50.90:8188)
- 根据分析结果生成高质量图片
- 支持多种风格和主题
### 3. 智能文案生成
- 使用**Kimi**模型生成文案内容
- 智能选择字体和颜色搭配
- 支持多层级文案结构
### 4. Vue组件生成
- 使用**DeepSeek**生成Vue 3组件代码
- 响应式布局设计
- 完整的template、script、style结构
### 5. PSD文件合成
- 自动合成多图层PSD文件
- 支持手动PSD模板优先
- 包含预览图片生成
## 🛠️ 使用方法
### API调用
```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();
if (result.status === 'success') {
// 获取Vue代码
console.log('Vue代码:', result.data.vue_code);
// 获取文案建议
console.log('文案建议:', result.data.suggestions);
// 下载PSD文件
const downloadUrl = `http://localhost:8000/api/download/psd?session_id=${result.session_id}`;
window.open(downloadUrl);
}
```
### 本地开发测试
```bash
cd scripts
python run_pipeline.py
# 选择: 1 (本地测试模式)
# 输入: "春节海报,红色背景,现代风格"
```
## 📁 项目结构
```
ai_service/
├── scripts/ # 核心脚本
│ ├── run_pipeline.py # 主服务入口和API服务器
│ ├── prompt_analysis.py # 用户输入分析 (DeepSeek)
│ ├── flux_con.py # 图片生成 (ComfyUI)
│ ├── generate_text.py # 文案生成 (Kimi)
│ ├── generate_layout.py # Vue代码生成 (DeepSeek)
│ └── export_psd_from_json.py # PSD文件合成
├── configs/ # 配置文件
│ ├── font.yaml # 字体配置
│ └── example.json # 配置示例
├── outputs/ # 输出目录
│ ├── session_*/ # 会话相关文件
│ ├── *.psd # 生成的PSD文件
│ ├── *.vue # 生成的Vue组件
│ └── *.png # 生成的图片
├── workflows/ # ComfyUI工作流
│ ├── flux_work.json # 主要工作流配置
│ └── temp/ # 临时工作流文件
├── README.md # 项目说明
├── requirements.txt # Python依赖
├── API_文档.md # API使用文档
├── 接口文档.md # 接口技术文档
└── 部署方案.md # 部署指南
```
## 🔧 核心模块
### 1. prompt_analysis.py
- **功能**: 使用DeepSeek分析用户输入
- **输入**: 用户描述文本
- **输出**: 结构化分析结果
```python
user_input_analysis_result = llm_user_analysis("端午节海报,传统风格")
```
### 2. flux_con.py
- **功能**: 调用ComfyUI生成图片
- **输入**: 分析结果和系统提示
- **输出**: 图片文件列表
```python
parse_imglist = comfyui_img_info(user_input_analysis_result, system_prompt)
```
### 3. generate_text.py
- **功能**: 使用Kimi生成文案建议
- **输入**: 分析后的提示词
- **输出**: 分层文案内容
```python
suggestions = get_poster_content_suggestions(analyzed_prompt)
```
### 4. generate_layout.py
- **功能**: 使用DeepSeek生成Vue组件
- **输入**: 布局提示词
- **输出**: 完整Vue组件代码
```python
vue_code = generate_vue_code(prompt)
```
### 5. export_psd_from_json.py
- **功能**: 合成PSD文件
- **输入**: 图片路径列表
- **输出**: PSD文件
```python
create_psd_from_images(image_paths, output_path, canvas_size)
```
## 🌐 API接口
### 主要接口
| 接口 | 方法 | 功能 | 状态 |
|------|------|------|------|
| `/api/generate-poster` | POST | 一键生成海报 | ✅ |
| `/api/download/{type}` | GET | 文件下载 | ✅ |
| `/api/status/{session_id}` | GET | 会话状态 | ✅ |
| `/health` | GET | 健康检查 | ✅ |
### 请求示例
```bash
# 生成海报
curl -X POST http://localhost:8000/api/generate-poster \
-H "Content-Type: application/json" \
-d '{"user_input": "春节海报,红色背景,现代风格"}'
# 下载PSD文件
curl "http://localhost:8000/api/download/psd?session_id=SESSION_ID" \
--output poster.psd
```
## 🎨 使用示例
### 1. 传统节日海报
```
输入: "端午节海报,传统风格,包含荷花和龙舟"
输出: 传统中式风格的Vue组件 + 精美PSD文件
```
### 2. 现代活动海报
```
输入: "科技大会海报,现代简约风格,蓝色主题"
输出: 现代简约风格的Vue组件 + 科技感PSD文件
```
### 3. 节庆祝福海报
```
输入: "春节祝福海报,红色背景,包含灯笼烟花"
输出: 喜庆风格的Vue组件 + 节日氛围PSD文件
```
## 🚀 部署方案
### 开发环境
```bash
# 本地启动
python scripts/run_pipeline.py
# 访问: http://localhost:8000
```
### 生产环境
#### 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"]
```
```bash
# 构建和运行
docker build -t ai-poster-generator .
docker run -p 8000:8000 ai-poster-generator
```
#### PM2部署
```bash
# 安装PM2
npm install -g pm2
# 启动服务
pm2 start "uvicorn scripts.run_pipeline:app --host 0.0.0.0 --port 8000" --name poster-api
# 开机自启
pm2 startup
pm2 save
```
### 反向代理Nginx
```nginx
server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
```
## 🔍 故障排查
### 常见问题
1. **API密钥错误**
```bash
# 检查环境变量
echo $DEEPSEEK_API_KEY
echo $MOONSHOT_API_KEY
```
2. **ComfyUI连接失败**
```bash
# 测试ComfyUI连接
curl http://101.201.50.90:8188/system_stats
```
3. **PSD生成失败**
```bash
# 检查pytoshop安装
pip show pytoshop psd-tools
```
4. **端口被占用**
```bash
# 查找占用端口的进程
netstat -tulpn | grep 8000
# 或使用其他端口
uvicorn run_pipeline:app --port 8001
```
### 日志查看
```bash
# 查看实时日志
tail -f logs/app.log
# 检查错误日志
grep -i error logs/app.log
```
## 🤝 贡献指南
### 开发环境搭建
```bash
# 克隆项目
git clone <repository-url>
cd ai_service
# 安装开发依赖
pip install -r requirements.txt
pip install -r requirements-dev.txt
# 运行测试
pytest tests/
```
### 代码规范
- 使用Python 3.11+
- 遵循PEP 8代码风格
- 添加类型注解
- 编写单元测试
## 📄 License
MIT License - 详见 [LICENSE](LICENSE) 文件
## 📞 联系方式
- **项目维护**: AI海报生成系统团队
- **技术支持**: 查看[API文档](API_文档.md)和[接口文档](接口文档.md)
- **问题反馈**: 提交Issue到项目仓库
## 📝 更新日志
### v1.0.0 (2025-01-02)
- ✅ 集成DeepSeek + Kimi + ComfyUI
- ✅ 统一API接口设计
- ✅ 支持Vue组件生成
- ✅ 支持PSD文件合成
- ✅ 完整的会话管理
- ✅ 丰富的文档和示例
### 近期规划
- 🔄 支持更多图片风格
- 🔄 增加文案模板库
- 🔄 优化PSD分层效果
- 🔄 增加批量生成功能