330 lines
7.0 KiB
Markdown
330 lines
7.0 KiB
Markdown
|
|
# AI 女友项目 - 完整启动指南
|
|||
|
|
|
|||
|
|
## 📋 项目架构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
AI 女友项目
|
|||
|
|
├── PHP 后端 (FastAdmin) - 端口 30100
|
|||
|
|
│ ├── 用户管理
|
|||
|
|
│ ├── 后台管理
|
|||
|
|
│ └── 基础 API
|
|||
|
|
│
|
|||
|
|
├── Python 后端 (FastAPI) - 端口 30101
|
|||
|
|
│ ├── AI 对话 (LLM)
|
|||
|
|
│ ├── 语音识别 (ASR)
|
|||
|
|
│ ├── 语音合成 (TTS)
|
|||
|
|
│ ├── 图像生成
|
|||
|
|
│ ├── 视频生成
|
|||
|
|
│ └── 其他 AI 功能
|
|||
|
|
│
|
|||
|
|
└── 前端 (uni-app)
|
|||
|
|
├── 小程序
|
|||
|
|
└── APP
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🚀 启动步骤
|
|||
|
|
|
|||
|
|
### 方法 1:使用启动脚本(推荐)
|
|||
|
|
|
|||
|
|
1. **双击运行** `启动项目.bat`
|
|||
|
|
|
|||
|
|
2. **等待启动完成**
|
|||
|
|
- 会自动打开两个命令行窗口
|
|||
|
|
- PHP 服务器窗口
|
|||
|
|
- Python 后端窗口
|
|||
|
|
|
|||
|
|
3. **验证启动成功**
|
|||
|
|
- 浏览器会自动打开
|
|||
|
|
- PHP 后台:http://127.0.0.1:30100
|
|||
|
|
- Python API 文档:http://127.0.0.1:30101/docs
|
|||
|
|
|
|||
|
|
### 方法 2:手动启动
|
|||
|
|
|
|||
|
|
#### 启动 PHP 服务器
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd xunifriend_RaeeC/public
|
|||
|
|
php -S 0.0.0.0:30100 router.php
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
#### 启动 Python 后端
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 在项目根目录
|
|||
|
|
python -m uvicorn lover.main:app --host 0.0.0.0 --port 30101 --reload
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## ✅ 验证服务状态
|
|||
|
|
|
|||
|
|
### 1. 检查端口占用
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Windows
|
|||
|
|
netstat -ano | findstr :30100
|
|||
|
|
netstat -ano | findstr :30101
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
应该看到:
|
|||
|
|
```
|
|||
|
|
TCP 0.0.0.0:30100 0.0.0.0:0 LISTENING [PID]
|
|||
|
|
TCP 0.0.0.0:30101 0.0.0.0:0 LISTENING [PID]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 访问 API 文档
|
|||
|
|
|
|||
|
|
打开浏览器访问:
|
|||
|
|
|
|||
|
|
**Python API 文档**:http://127.0.0.1:30101/docs
|
|||
|
|
|
|||
|
|
应该看到 FastAPI 的 Swagger 文档界面,包含:
|
|||
|
|
- `/voice/call/asr` - ASR 语音识别
|
|||
|
|
- `/voice/call/conversation` - 完整语音对话
|
|||
|
|
- `/chat/send` - 文字聊天
|
|||
|
|
- 其他 AI 功能端点
|
|||
|
|
|
|||
|
|
**PHP 后台**:http://127.0.0.1:30100/admin
|
|||
|
|
|
|||
|
|
### 3. 测试健康检查
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Python 后端健康检查
|
|||
|
|
curl http://127.0.0.1:30101/health
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
应该返回:
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"code": 1,
|
|||
|
|
"msg": "ok",
|
|||
|
|
"data": {
|
|||
|
|
"status": "ok"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🎯 测试语音对话功能
|
|||
|
|
|
|||
|
|
### 1. 在前端测试
|
|||
|
|
|
|||
|
|
1. 打开 uni-app 应用(小程序或 APP)
|
|||
|
|
2. 进入语音通话页面
|
|||
|
|
3. 按住"按住说话"按钮
|
|||
|
|
4. 说话 2-3 秒:"你好,今天天气怎么样?"
|
|||
|
|
5. 松开按钮
|
|||
|
|
6. 等待处理(约 5-10 秒)
|
|||
|
|
7. 看到提示:"你说: 你好,今天天气怎么样?"
|
|||
|
|
8. 听到 AI 的语音回复
|
|||
|
|
|
|||
|
|
### 2. 查看日志
|
|||
|
|
|
|||
|
|
**Python 后端窗口**应该显示:
|
|||
|
|
```
|
|||
|
|
INFO - 收到语音对话请求,用户: XXX, 格式: wav
|
|||
|
|
INFO - 音频数据大小: XXX 字节
|
|||
|
|
INFO - 开始 ASR 识别...
|
|||
|
|
INFO - 音频已上传: https://...
|
|||
|
|
INFO - ASR 识别结果: 你好,今天天气怎么样?
|
|||
|
|
INFO - 开始 LLM 对话生成...
|
|||
|
|
INFO - LLM 回复: 今天天气很好哦...
|
|||
|
|
INFO - 开始 TTS 语音合成...
|
|||
|
|
INFO - TTS 合成完成,音频大小: XXX 字节
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🔧 常见问题
|
|||
|
|
|
|||
|
|
### 问题 1:端口被占用
|
|||
|
|
|
|||
|
|
**症状**:
|
|||
|
|
```
|
|||
|
|
[错误] 端口 30100 或 30101 已被占用
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**解决方案**:
|
|||
|
|
|
|||
|
|
1. 使用启动脚本(会自动清理端口)
|
|||
|
|
2. 或手动清理:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 查找占用端口的进程
|
|||
|
|
netstat -ano | findstr :30100
|
|||
|
|
netstat -ano | findstr :30101
|
|||
|
|
|
|||
|
|
# 终止进程(替换 [PID] 为实际的进程 ID)
|
|||
|
|
taskkill /F /PID [PID]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 问题 2:Python 依赖缺失
|
|||
|
|
|
|||
|
|
**症状**:
|
|||
|
|
```
|
|||
|
|
ModuleNotFoundError: No module named 'xxx'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**解决方案**:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd lover
|
|||
|
|
pip install -r requirements.txt
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 问题 3:PHP 路径错误
|
|||
|
|
|
|||
|
|
**症状**:
|
|||
|
|
```
|
|||
|
|
[错误] PHP 未找到
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**解决方案**:
|
|||
|
|
|
|||
|
|
编辑 `启动项目.bat`,修改 PHP 路径:
|
|||
|
|
```bat
|
|||
|
|
set PHP_PATH=D:\你的PHP路径\php.exe
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 问题 4:前端连接失败
|
|||
|
|
|
|||
|
|
**症状**:
|
|||
|
|
前端显示"连接失败"或"网络错误"
|
|||
|
|
|
|||
|
|
**解决方案**:
|
|||
|
|
|
|||
|
|
1. 检查前端配置 `xuniYou/utils/request.js`:
|
|||
|
|
```javascript
|
|||
|
|
export const baseURL = 'http://192.168.1.141:30100' // PHP
|
|||
|
|
export const baseURLPy = 'http://192.168.1.141:30101' // Python
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. 确保 IP 地址正确(局域网 IP 或 127.0.0.1)
|
|||
|
|
|
|||
|
|
3. 如果使用真机测试,确保手机和电脑在同一局域网
|
|||
|
|
|
|||
|
|
## 📱 前端配置
|
|||
|
|
|
|||
|
|
### 本地开发(电脑测试)
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
// xuniYou/utils/request.js
|
|||
|
|
export const baseURL = 'http://127.0.0.1:30100'
|
|||
|
|
export const baseURLPy = 'http://127.0.0.1:30101'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 局域网测试(手机测试)
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
// xuniYou/utils/request.js
|
|||
|
|
export const baseURL = 'http://192.168.1.141:30100' // 替换为你的电脑 IP
|
|||
|
|
export const baseURLPy = 'http://192.168.1.141:30101'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 生产环境
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
// xuniYou/utils/request.js
|
|||
|
|
export const baseURL = 'http://你的域名:30100'
|
|||
|
|
export const baseURLPy = 'http://你的域名:30101'
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🔒 安全提示
|
|||
|
|
|
|||
|
|
### 开发环境
|
|||
|
|
|
|||
|
|
- ✅ 使用 `0.0.0.0` 监听所有网络接口
|
|||
|
|
- ✅ 允许局域网访问
|
|||
|
|
- ✅ 开启 CORS
|
|||
|
|
- ✅ 开启调试日志
|
|||
|
|
|
|||
|
|
### 生产环境
|
|||
|
|
|
|||
|
|
- ⚠️ 使用 Nginx 反向代理
|
|||
|
|
- ⚠️ 配置 HTTPS
|
|||
|
|
- ⚠️ 限制 CORS 来源
|
|||
|
|
- ⚠️ 关闭调试日志
|
|||
|
|
- ⚠️ 使用环境变量管理敏感信息
|
|||
|
|
|
|||
|
|
## 📊 服务监控
|
|||
|
|
|
|||
|
|
### 查看服务状态
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Windows
|
|||
|
|
tasklist | findstr php.exe
|
|||
|
|
tasklist | findstr python.exe
|
|||
|
|
|
|||
|
|
# 查看端口
|
|||
|
|
netstat -ano | findstr :30100
|
|||
|
|
netstat -ano | findstr :30101
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 查看日志
|
|||
|
|
|
|||
|
|
- **PHP 日志**:在 PHP 服务器窗口查看
|
|||
|
|
- **Python 日志**:在 Python 后端窗口查看
|
|||
|
|
- **前端日志**:在浏览器控制台或 HBuilderX 控制台查看
|
|||
|
|
|
|||
|
|
## 🛑 停止服务
|
|||
|
|
|
|||
|
|
### 使用启动脚本启动的
|
|||
|
|
|
|||
|
|
直接关闭对应的命令行窗口即可:
|
|||
|
|
- 关闭"PHP 服务器"窗口 → 停止 PHP 服务
|
|||
|
|
- 关闭"Python 后端"窗口 → 停止 Python 服务
|
|||
|
|
|
|||
|
|
### 手动启动的
|
|||
|
|
|
|||
|
|
在对应的命令行窗口按 `Ctrl + C`
|
|||
|
|
|
|||
|
|
### 强制停止
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 停止所有 PHP 进程
|
|||
|
|
taskkill /F /IM php.exe
|
|||
|
|
|
|||
|
|
# 停止所有 Python 进程(谨慎使用)
|
|||
|
|
taskkill /F /IM python.exe
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📝 启动检查清单
|
|||
|
|
|
|||
|
|
启动前确认:
|
|||
|
|
|
|||
|
|
- [ ] PHP 已安装并配置正确
|
|||
|
|
- [ ] Python 已安装并配置正确
|
|||
|
|
- [ ] Python 依赖已安装(`pip install -r lover/requirements.txt`)
|
|||
|
|
- [ ] 环境变量已配置(`.env` 文件)
|
|||
|
|
- [ ] 数据库已配置并可连接
|
|||
|
|
- [ ] OSS 已配置(如需使用语音功能)
|
|||
|
|
- [ ] DashScope API Key 已配置(如需使用 AI 功能)
|
|||
|
|
|
|||
|
|
启动后验证:
|
|||
|
|
|
|||
|
|
- [ ] PHP 服务器正常运行(端口 30100)
|
|||
|
|
- [ ] Python 后端正常运行(端口 30101)
|
|||
|
|
- [ ] 可以访问 API 文档(http://127.0.0.1:30101/docs)
|
|||
|
|
- [ ] 健康检查通过(http://127.0.0.1:30101/health)
|
|||
|
|
- [ ] 前端可以连接后端
|
|||
|
|
|
|||
|
|
## 🎉 启动成功!
|
|||
|
|
|
|||
|
|
如果以上步骤都完成,你应该看到:
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
╔════════════════════════════════════╗
|
|||
|
|
║ 启动成功! ║
|
|||
|
|
╚════════════════════════════════════╝
|
|||
|
|
|
|||
|
|
[PHP 服务器] ✓ 已启动
|
|||
|
|
→ http://127.0.0.1:30100
|
|||
|
|
→ http://127.0.0.1:30100/admin
|
|||
|
|
|
|||
|
|
[Python 后端] ✓ 已启动
|
|||
|
|
→ http://127.0.0.1:30101
|
|||
|
|
→ http://127.0.0.1:30101/docs
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
现在可以开始使用 AI 女友的所有功能了!💕
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**最后更新**: 2026-03-05
|
|||
|
|
**版本**: v2.0
|