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