增加智瞰龙虎板块
This commit is contained in:
+177
@@ -0,0 +1,177 @@
|
||||
# API配置问题修复说明
|
||||
|
||||
## 问题描述
|
||||
|
||||
用户遇到股票分析API调用失败,提示:
|
||||
```
|
||||
API调用失败: Error code: 401 - {'error': {'message': 'Authentication Fails, Your api key: ****a7fc is invalid'}}
|
||||
```
|
||||
|
||||
虽然`.env`文件中已配置了新的API key,但系统仍在使用旧的key(结尾为`a7fc`)。
|
||||
|
||||
## 问题原因
|
||||
|
||||
1. **PowerShell环境变量中存在旧的API key**
|
||||
- 用户之前在系统环境变量中设置过旧的`DEEPSEEK_API_KEY`
|
||||
- 旧key: `sk-b6c714570b9844f392aa3812f3f7a7fc`
|
||||
|
||||
2. **python-dotenv默认行为**
|
||||
- `load_dotenv()`默认**不会覆盖**已存在的环境变量
|
||||
- 导致系统读取的是环境变量中的旧key,而非`.env`文件中的新key
|
||||
|
||||
3. **调用链路**
|
||||
```
|
||||
.env文件 (新key) → load_dotenv() → 不覆盖环境变量 → config.py读取环境变量 (旧key) → deepseek_client使用旧key → API调用失败
|
||||
```
|
||||
|
||||
## 修复方案
|
||||
|
||||
### 1. 修改 `config.py`
|
||||
|
||||
**修改前:**
|
||||
```python
|
||||
load_dotenv()
|
||||
```
|
||||
|
||||
**修改后:**
|
||||
```python
|
||||
# 加载环境变量(override=True 强制覆盖已存在的环境变量)
|
||||
load_dotenv(override=True)
|
||||
```
|
||||
|
||||
### 2. 修改 `config_manager.py`
|
||||
|
||||
在`reload_config()`方法中也添加`override=True`:
|
||||
```python
|
||||
def reload_config(self):
|
||||
"""重新加载配置(重新加载.env文件)"""
|
||||
from dotenv import load_dotenv
|
||||
# 强制覆盖已存在的环境变量
|
||||
load_dotenv(override=True)
|
||||
```
|
||||
|
||||
### 3. 清除Python缓存
|
||||
|
||||
```bash
|
||||
Remove-Item -Recurse -Force __pycache__
|
||||
```
|
||||
|
||||
## 修复验证
|
||||
|
||||
运行测试脚本验证修复:
|
||||
```bash
|
||||
.\venv\Scripts\python.exe test_api_config.py
|
||||
```
|
||||
|
||||
测试结果:
|
||||
```
|
||||
✅ .env文件存在
|
||||
.env中的API Key: sk-e32f5***********************2abe
|
||||
|
||||
⚠️ 环境变量中的API Key(加载前): sk-b6c71***********************a7fc
|
||||
|
||||
✅ config.py读取到的API Key: sk-e32f5***********************2abe
|
||||
✅ 环境变量已被覆盖: sk-e32f5***********************2abe
|
||||
✅ config.py读取的key与.env文件一致!
|
||||
✅ API调用成功!
|
||||
```
|
||||
|
||||
## 影响范围
|
||||
|
||||
此修复影响所有使用API的模块:
|
||||
|
||||
### 1. 股票分析模块
|
||||
- ✅ `ai_agents.py` - 个股分析
|
||||
- ✅ `deepseek_client.py` - API客户端
|
||||
|
||||
### 2. 智策板块模块
|
||||
- ✅ `sector_strategy_agents.py` - 板块分析
|
||||
- ✅ `sector_strategy_engine.py` - 策略引擎
|
||||
|
||||
### 3. 主力选股模块
|
||||
- ✅ `main_force_analysis.py` - 主力资金分析
|
||||
|
||||
### 4. UI和服务模块
|
||||
- ✅ `app.py` - 主应用
|
||||
- ✅ `monitor_service.py` - 监测服务
|
||||
|
||||
## 验证步骤
|
||||
|
||||
修复后,所有模块都会从`.env`文件读取正确的API key:
|
||||
|
||||
1. **启动应用**
|
||||
```bash
|
||||
python run.py
|
||||
```
|
||||
|
||||
2. **测试股票分析**
|
||||
- 在Web界面输入股票代码
|
||||
- 点击"开始分析"
|
||||
- 确认API调用成功
|
||||
|
||||
3. **测试智策板块**
|
||||
- 点击"智策板块"
|
||||
- 开始板块分析
|
||||
- 确认API调用成功
|
||||
|
||||
4. **测试主力选股**
|
||||
- 点击"主力选股"
|
||||
- 运行主力资金筛选
|
||||
- 确认API调用成功
|
||||
|
||||
## 预防措施
|
||||
|
||||
为避免将来再次出现此问题:
|
||||
|
||||
1. **优先使用.env文件配置**
|
||||
- 不要在系统环境变量中设置API key
|
||||
- 统一在`.env`文件中管理所有配置
|
||||
|
||||
2. **清除旧的环境变量**
|
||||
- Windows: 系统属性 → 高级 → 环境变量 → 删除`DEEPSEEK_API_KEY`
|
||||
- PowerShell临时清除: `Remove-Item Env:DEEPSEEK_API_KEY`
|
||||
|
||||
3. **重启应用生效**
|
||||
- 修改`.env`文件后,需要重启Streamlit应用
|
||||
- 或使用环境配置界面的"保存并重新加载"功能
|
||||
|
||||
## 技术细节
|
||||
|
||||
### python-dotenv 的 override 参数
|
||||
|
||||
```python
|
||||
load_dotenv(override=True)
|
||||
```
|
||||
|
||||
- `override=False` (默认): 不覆盖已存在的环境变量,优先使用系统环境变量
|
||||
- `override=True`: 强制覆盖环境变量,优先使用`.env`文件中的值
|
||||
|
||||
### 配置优先级
|
||||
|
||||
**修复前:**
|
||||
1. 系统环境变量 (最高优先级)
|
||||
2. .env文件
|
||||
|
||||
**修复后:**
|
||||
1. .env文件 (最高优先级)
|
||||
2. 系统环境变量 (作为默认值)
|
||||
|
||||
## 相关文件
|
||||
|
||||
- `config.py` - 主配置文件
|
||||
- `config_manager.py` - 配置管理器
|
||||
- `.env` - 环境变量配置文件
|
||||
- `test_api_config.py` - API配置测试脚本
|
||||
|
||||
## 修复日期
|
||||
|
||||
2025-10-17
|
||||
|
||||
## 测试人员
|
||||
|
||||
AI Assistant
|
||||
|
||||
## 状态
|
||||
|
||||
✅ 已修复并验证通过
|
||||
|
||||
Reference in New Issue
Block a user