stock-ai-agent/PM2_DEPLOYMENT_GUIDE.md
2026-02-03 10:27:04 +08:00

3.4 KiB
Raw Blame History

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 配置文件:
cd /path/to/Stock_Agent
pm2 start ecosystem.config.js
  1. 如果需要修改路径,编辑 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

解决:

  1. 检查API Key是否包含 . 分隔符
  2. 确认从智谱AI官网复制的完整Key
  3. 检查是否有多余的空格或换行符

Q2: 环境变量未加载

症状: 日志显示 智谱AI API Key未配置

解决:

  1. 使用 ecosystem.config.js 配置文件
  2. 确保 cwdENV_FILE 路径正确
  3. 重启PM2进程

Q3: .env文件路径问题

症状: 日志显示 警告:未找到.env文件

解决:

  1. 确认.env文件在项目根目录
  2. 使用绝对路径指定ENV_FILE
  3. 检查文件权限

验证修复

修复后,运行以下命令验证:

# 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值