Files
ailine/QUICKSTART.md

441 lines
8.7 KiB
Markdown
Raw Normal View History

# 快速开始指南
详细的启动和部署指南,面向开发者和运维人员。
---
## 🚀 快速启动3 步)
### 方式一Docker Compose推荐 ⭐)
适合生产环境,一键启动所有服务。
#### 1. 配置环境变量
```bash
2026-04-14 17:34:12 +08:00
# 复制 Docker 部署模板
cp .env.docker .env
# 编辑 .env 文件,填入真实的 API Key
vim .env # 或使用你喜欢的编辑器
```
**必需配置项**
- `ZHIPUAI_API_KEY` - 智谱 AI API 密钥(从 [智谱开放平台](https://open.bigmodel.cn/) 获取)
2026-04-21 00:00:56 +08:00
- `DEEPSEEK_API_KEY` - DeepSeek API 密钥(从 [DeepSeek 开放平台](https://platform.deepseek.com/) 获取)
- `LLAMACPP_API_KEY` - llama.cpp 服务认证 Token与容器启动参数一致默认 `token-abc123`
**可选配置项**
2026-04-21 00:00:56 +08:00
- `VLLM_BASE_URL` - LLM 服务地址(本地默认:`http://127.0.0.1:8081/v1`
- `LLAMACPP_EMBEDDING_URL` - Embedding 服务地址(本地默认:`http://127.0.0.1:8082/v1`
- `DB_URI` - PostgreSQL 连接字符串(默认已配置远程服务器地址)
- `QDRANT_URL` - Qdrant 向量数据库地址(默认已配置远程服务器地址)
- `LOG_LEVEL` - 日志级别(`DEBUG`/`INFO`/`WARNING`/`ERROR`
- `ENABLE_GRAPH_TRACE` - 是否启用图流转追踪(`true`/`false`
- `MEMORY_SUMMARIZE_INTERVAL` - 对话摘要生成间隔(默认 `10`
#### 2. 启动服务
```bash
docker compose -f docker/docker-compose.yml up -d --build
```
#### 3. 访问应用
2026-04-17 01:26:05 +08:00
- **前端**: http://127.0.0.1:8501
2026-04-21 00:00:56 +08:00
- **后端 API**: http://127.0.0.1:8083
- **健康检查**: http://127.0.0.1:8083/health
#### 常用命令
```bash
# 查看服务状态
docker compose ps
# 查看日志
docker compose logs -f
2026-04-21 00:00:56 +08:00
# 查看特定服务日志
docker compose logs -f backend
# 重启特定服务
docker compose restart backend
# 停止所有服务
docker compose down
2026-04-21 00:00:56 +08:00
# 重新构建并启动
docker compose up -d --build
```
---
### 方式二:本地开发模式
适合开发和调试。
#### 前置要求
- Python 3.10+
#### 1. 安装依赖
```bash
pip install -r requirement.txt
```
#### 2. 配置环境变量
2026-04-13 19:49:18 +08:00
复制并编辑 `.env` 文件:
2026-04-21 00:00:56 +08:00
```bash
2026-04-14 17:34:12 +08:00
cp .env.docker .env
vim .env
```
2026-04-21 00:00:56 +08:00
**本地开发配置示例**
2026-04-13 19:49:18 +08:00
2026-04-21 00:00:56 +08:00
```env
# API Keys
ZHIPUAI_API_KEY=your_api_key_here
2026-04-21 00:00:56 +08:00
DEEPSEEK_API_KEY=your_deepseek_api_key_here
LLAMACPP_API_KEY=token-abc123
2026-04-21 00:00:56 +08:00
# LLM 服务地址(本地开发)
VLLM_BASE_URL=http://127.0.0.1:8081/v1
LLAMACPP_EMBEDDING_URL=http://127.0.0.1:8082/v1
2026-04-21 00:00:56 +08:00
# 远程数据库和向量存储
DB_URI=postgresql://postgres:your_password_here@115.190.121.151:5432/langgraph_db?sslmode=disable
QDRANT_URL=http://115.190.121.151:6333
2026-04-14 17:34:12 +08:00
2026-04-21 00:00:56 +08:00
# 日志和调试
LOG_LEVEL=INFO
ENABLE_GRAPH_TRACE=true
MEMORY_SUMMARIZE_INTERVAL=10
2026-04-13 19:49:18 +08:00
```
#### 3. 启动服务
2026-04-13 19:49:18 +08:00
**终端 1 - 后端:**
2026-04-13 19:49:18 +08:00
```bash
python backend/app/backend.py
```
2026-04-13 19:49:18 +08:00
**终端 2 - 前端:**
```bash
streamlit run frontend/src/frontend_main.py
```
或者使用启动脚本(推荐):
```bash
./scripts/start.sh both
2026-04-13 19:49:18 +08:00
```
2026-04-21 00:00:56 +08:00
浏览器自动打开前端页面,访问 http://127.0.0.1:8501
2026-04-13 19:49:18 +08:00
---
## 🐳 Docker 部署详解
2026-04-13 19:49:18 +08:00
### 文件说明
2026-04-13 19:49:18 +08:00
| 文件 | 用途 |
|------|------|
| `docker/docker-compose.yml` | 服务编排配置(包含 backend 和 frontend |
| `docker/backend/Dockerfile` | 后端镜像构建 |
| `docker/frontend/Dockerfile` | 前端镜像构建 |
| `.gitea/workflows/deploy.yml` | CI/CD 自动化部署 |
2026-04-13 19:49:18 +08:00
### docker-compose.yml 结构
2026-04-13 19:49:18 +08:00
```yaml
services:
2026-04-21 00:00:56 +08:00
backend: # FastAPI 后端服务(端口 8083
frontend: # Streamlit 前端界面(端口 8501
```
2026-04-13 19:49:18 +08:00
**特性:**
- ✅ 通过环境变量连接远程 PostgreSQL 和 Qdrant
- ✅ 自动重启策略(`restart: unless-stopped`
2026-04-21 00:00:56 +08:00
- ✅ 内部网络隔离ai-network
- ✅ 文档目录挂载(`./data/user_docs`
- ✅ 日志目录挂载(`./logs`
2026-04-13 19:49:18 +08:00
### 只更新特定服务
2026-04-13 19:49:18 +08:00
```bash
# 只重新构建后端
docker compose up -d --build backend
# 只重新启动前端
docker compose up -d frontend
2026-04-13 19:49:18 +08:00
```
---
## 🔧 开发指南
### 添加新工具
2026-04-13 19:49:18 +08:00
在 [backend/app/graph/graph_tools.py](file:///home/huang/Study/AIProject/Agent1/backend/app/graph/graph_tools.py) 中添加:
```python
@tool
def my_new_tool(param: str) -> str:
"""
工具描述(会显示给 LLM
Args:
param: 参数说明
Returns:
返回值说明
"""
# 实现逻辑
return result
```
2026-04-13 19:49:18 +08:00
2026-04-21 00:00:56 +08:00
工具会自动注册到 `AVAILABLE_TOOLS` 列表,无需修改其他文件。
2026-04-13 19:49:18 +08:00
### 添加新模型
2026-04-13 19:49:18 +08:00
在 [backend/app/agent/llm_factory.py](file:///home/huang/Study/AIProject/Agent1/backend/app/agent/llm_factory.py) 中:
2026-04-13 19:49:18 +08:00
```python
2026-04-21 00:00:56 +08:00
@staticmethod
def create_new_model():
2026-04-13 19:49:18 +08:00
"""创建新模型的 LLM"""
2026-04-21 00:00:56 +08:00
api_key = os.getenv("NEW_MODEL_API_KEY")
return ChatOpenAI(
base_url="https://api.new-model.com/v1",
api_key=SecretStr(api_key),
2026-04-13 19:49:18 +08:00
model="model-name",
2026-04-21 00:00:56 +08:00
temperature=0.1,
streaming=True,
2026-04-13 19:49:18 +08:00
)
```
2026-04-21 00:00:56 +08:00
然后在 `CREATORS` 字典中注册:
2026-04-13 19:49:18 +08:00
```python
2026-04-21 00:00:56 +08:00
CREATORS = {
"local": create_local,
"deepseek": create_deepseek,
"zhipu": create_zhipu,
"new_model": create_new_model, # 新增
}
```
2026-04-13 19:49:18 +08:00
### 调试技巧
2026-04-13 19:49:18 +08:00
```bash
# 进入后端容器
docker compose exec backend bash
2026-04-13 19:49:18 +08:00
# 查看实时日志
docker compose logs -f backend
# 测试后端 API
2026-04-21 00:00:56 +08:00
curl http://127.0.0.1:8083/health
# 测试对话接口
curl -X POST http://127.0.0.1:8083/chat \
-H "Content-Type: application/json" \
-d '{"message": "你好", "model": "zhipu"}'
```
2026-04-13 19:49:18 +08:00
---
## 🔄 CI/CD 自动化部署
2026-04-13 19:49:18 +08:00
### Gitea Workflows
2026-04-13 19:49:18 +08:00
项目包含自动化部署配置 `.gitea/workflows/deploy.yml`
2026-04-13 19:49:18 +08:00
**触发条件:**
- 推送到 `main``master` 分支
- 手动触发workflow_dispatch
2026-04-13 19:49:18 +08:00
**部署流程:**
1. 检出代码
2. 准备环境变量
3. 重新构建并启动前后端(不影响远程数据库)
4. 健康检查(等待后端就绪)
5. 清理无用 Docker 资源
2026-04-13 19:49:18 +08:00
**配置 Secrets**
2026-04-13 19:49:18 +08:00
在 Gitea 仓库设置中添加:
- `ZHIPUAI_API_KEY`
2026-04-21 00:00:56 +08:00
- `DEEPSEEK_API_KEY`
2026-04-17 01:26:05 +08:00
- `LLAMACPP_API_KEY`
2026-04-13 19:49:18 +08:00
---
## 🐛 故障排查
2026-04-13 19:49:18 +08:00
### 常见问题
2026-04-13 19:49:18 +08:00
#### 1. 无法连接远程数据库
2026-04-13 19:49:18 +08:00
```bash
# 测试 PostgreSQL 连接
psql -h 115.190.121.151 -U postgres -d langgraph_db -c "SELECT version();"
# 测试 Qdrant 连接
curl http://115.190.121.151:6333/collections
2026-04-13 19:49:18 +08:00
```
**解决方案:**
- 确认远程服务器防火墙开放了 5432 和 6333 端口
- 检查网络连接是否正常
- 验证用户名和密码是否正确
2026-04-13 19:49:18 +08:00
#### 2. 后端启动失败
```bash
# 查看详细日志
docker compose logs backend
# 检查端口占用
2026-04-21 00:00:56 +08:00
lsof -i :8083
2026-04-13 19:49:18 +08:00
```
**常见原因:**
- API Key 未配置或错误
2026-04-21 00:00:56 +08:00
- 端口 8083 被占用
- 依赖包缺失
2026-04-13 19:49:18 +08:00
#### 3. 前端无法连接后端
2026-04-14 17:34:12 +08:00
**错误信息:**
```
2026-04-21 00:00:56 +08:00
HTTPConnectionPool(host='backend', port=8083): Max retries exceeded
2026-04-14 17:34:12 +08:00
```
2026-04-13 19:49:18 +08:00
2026-04-14 17:34:12 +08:00
**解决方案:**
1. **检查容器是否在同一网络中:**
```bash
2026-04-14 17:34:12 +08:00
docker network inspect docker_ai-network
```
2. **验证环境变量配置:**
2026-04-14 17:34:12 +08:00
```bash
docker compose exec frontend env | grep API_URL
```
3. **重启服务:**
2026-04-14 17:34:12 +08:00
```bash
docker compose down
docker compose up -d --build
docker compose logs -f
```
#### 4. 模型初始化失败
```bash
# 查看后端启动日志
docker compose logs backend | grep -i "model\|error"
```
**可能原因:**
2026-04-21 00:00:56 +08:00
- 智谱/DeepSeek API Key 无效
- vLLM 容器未启动(如使用本地模型)
- 网络连接问题
2026-04-14 17:34:12 +08:00
#### 5. 环境变量未生效
**症状:**
- 服务启动时提示缺少必需的环境变量
- API Key 为空或使用默认值
**解决方案:**
1. **检查 .env 文件格式:**
```bash
cat -A .env
```
2. **验证环境变量已加载:**
```bash
docker compose exec backend env | grep ZHIPUAI_API_KEY
docker compose exec frontend env | grep API_URL
```
3. **重新构建容器:**
```bash
docker compose down
docker compose up -d --build
```
---
## 📊 监控和维护
### 查看资源使用
```bash
# Docker 容器资源使用
docker stats
# 磁盘空间
docker system df
# 清理无用资源
docker system prune -f
```
### 日志管理
```bash
# 查看所有服务日志
docker compose logs
# 查看特定服务最近 100 行日志
docker compose logs --tail=100 backend
# 实时跟踪日志
docker compose logs -f backend frontend
```
### 备份和恢复
```bash
# 备份远程数据库
pg_dump -h 115.190.121.151 -U postgres langgraph_db > backup.sql
# 恢复数据库
cat backup.sql | psql -h 115.190.121.151 -U postgres langgraph_db
```
---
## 🎯 性能优化建议
### 开发环境
- 使用 `docker compose watch` 实现热重载(需配置)
- 挂载代码目录而非复制到镜像
- 启用 Python 调试模式
### 生产环境
- 使用反向代理Nginx
- 启用 HTTPS
- 配置日志轮转
- 设置资源限制CPU、内存
- 定期备份远程数据库
2026-04-13 19:49:18 +08:00
---
## 📞 获取帮助
- **完整文档**: [README.md](README.md)
- **报告问题**: 提交 Issue 并附上日志
2026-04-13 19:49:18 +08:00
---
**祝您部署顺利!** 🎉