153 lines
3.4 KiB
Markdown
153 lines
3.4 KiB
Markdown
# PM2部署问题排查指南
|
||
|
||
## 问题描述
|
||
使用PM2部署时出现错误:
|
||
```
|
||
LLM调用失败: Exception: ('invalid api_key', ValueError('not enough values to unpack (expected 2, got 1)'))
|
||
```
|
||
|
||
## 原因分析
|
||
智谱AI的API Key格式要求包含`.`分隔符(例如:`xxxxx.yyyyyyy`),如果格式不正确或环境变量未正确加载,会导致此错误。
|
||
|
||
## 解决方案
|
||
|
||
### 方案1:使用PM2配置文件(推荐)
|
||
|
||
1. 使用项目根目录的 `ecosystem.config.js` 配置文件:
|
||
|
||
```bash
|
||
cd /path/to/Stock_Agent
|
||
pm2 start ecosystem.config.js
|
||
```
|
||
|
||
2. 如果需要修改路径,编辑 `ecosystem.config.js`:
|
||
|
||
```javascript
|
||
module.exports = {
|
||
apps: [{
|
||
name: 'stock-agent',
|
||
script: 'backend/app/main.py',
|
||
interpreter: 'python3',
|
||
cwd: '/your/project/path/Stock_Agent', // 修改为你的实际路径
|
||
env: {
|
||
ENV_FILE: '/your/project/path/Stock_Agent/.env' // 修改为你的实际路径
|
||
}
|
||
}]
|
||
};
|
||
```
|
||
|
||
### 方案2:直接指定环境变量
|
||
|
||
```bash
|
||
cd /path/to/Stock_Agent
|
||
pm2 start backend/app/main.py \
|
||
--name stock-agent \
|
||
--interpreter python3 \
|
||
--env ENV_FILE=/path/to/Stock_Agent/.env
|
||
```
|
||
|
||
### 方案3:在PM2中设置环境变量
|
||
|
||
```bash
|
||
pm2 start backend/app/main.py --name stock-agent --interpreter python3
|
||
pm2 env stock-agent ENV_FILE /path/to/Stock_Agent/.env
|
||
pm2 restart stock-agent
|
||
```
|
||
|
||
## 诊断步骤
|
||
|
||
### 1. 运行诊断脚本
|
||
|
||
```bash
|
||
cd /path/to/Stock_Agent
|
||
python3 diagnose_api_key.py
|
||
```
|
||
|
||
这个脚本会检查:
|
||
- .env文件是否存在
|
||
- API Key是否正确加载
|
||
- API Key格式是否正确
|
||
- 智谱AI客户端是否能初始化
|
||
|
||
### 2. 检查.env文件
|
||
|
||
确保 `.env` 文件存在且格式正确:
|
||
|
||
```bash
|
||
cat .env
|
||
```
|
||
|
||
应该看到类似内容:
|
||
```
|
||
ZHIPUAI_API_KEY=xxxxx.yyyyyyy
|
||
TUSHARE_TOKEN=your_token_here
|
||
```
|
||
|
||
### 3. 验证API Key格式
|
||
|
||
智谱AI的API Key应该:
|
||
- 包含 `.` 分隔符
|
||
- 格式类似:`415e176f8b964f98a6b4e44b24171145.AVe4qY6RSbxBolhI`
|
||
- 长度通常在40-60个字符
|
||
|
||
### 4. 检查PM2日志
|
||
|
||
```bash
|
||
pm2 logs stock-agent
|
||
```
|
||
|
||
查看启动日志中的配置加载信息:
|
||
- `[Config] 找到.env文件: /path/to/.env` - 表示找到了配置文件
|
||
- `正在初始化智谱AI客户端` - 表示开始初始化
|
||
- `智谱AI LLM服务初始化成功` - 表示初始化成功
|
||
|
||
## 常见问题
|
||
|
||
### Q1: API Key格式错误
|
||
**症状**: 错误信息包含 `not enough values to unpack`
|
||
|
||
**解决**:
|
||
1. 检查API Key是否包含 `.` 分隔符
|
||
2. 确认从智谱AI官网复制的完整Key
|
||
3. 检查是否有多余的空格或换行符
|
||
|
||
### Q2: 环境变量未加载
|
||
**症状**: 日志显示 `智谱AI API Key未配置`
|
||
|
||
**解决**:
|
||
1. 使用 `ecosystem.config.js` 配置文件
|
||
2. 确保 `cwd` 和 `ENV_FILE` 路径正确
|
||
3. 重启PM2进程
|
||
|
||
### Q3: .env文件路径问题
|
||
**症状**: 日志显示 `警告:未找到.env文件`
|
||
|
||
**解决**:
|
||
1. 确认.env文件在项目根目录
|
||
2. 使用绝对路径指定ENV_FILE
|
||
3. 检查文件权限
|
||
|
||
## 验证修复
|
||
|
||
修复后,运行以下命令验证:
|
||
|
||
```bash
|
||
# 1. 重启PM2进程
|
||
pm2 restart stock-agent
|
||
|
||
# 2. 查看日志
|
||
pm2 logs stock-agent --lines 50
|
||
|
||
# 3. 应该看到成功信息
|
||
# [Config] 找到.env文件: ...
|
||
# 正在初始化智谱AI客户端,API Key前10位: 415e176f8b...
|
||
# 智谱AI LLM服务初始化成功
|
||
```
|
||
|
||
## 联系支持
|
||
|
||
如果问题仍未解决,请提供以下信息:
|
||
1. 诊断脚本输出
|
||
2. PM2日志(隐藏敏感信息)
|
||
3. .env文件格式(隐藏实际Key值)
|