239 lines
5.3 KiB
Markdown
239 lines
5.3 KiB
Markdown
|
|
# API密钥配置指南
|
|||
|
|
|
|||
|
|
## 📋 概述
|
|||
|
|
|
|||
|
|
本项目已将所有API密钥统一管理到 `config/api_keys.py` 文件中,提供更安全、更便捷的密钥管理方式。
|
|||
|
|
|
|||
|
|
## 🔧 配置步骤
|
|||
|
|
|
|||
|
|
### 1. 创建环境变量文件
|
|||
|
|
|
|||
|
|
在项目根目录创建 `.env` 文件:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 复制模板文件
|
|||
|
|
cp .env.template .env
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 配置API密钥
|
|||
|
|
|
|||
|
|
编辑 `.env` 文件,填入您的API密钥:
|
|||
|
|
|
|||
|
|
```env
|
|||
|
|
# 千问大模型API密钥 (必需)
|
|||
|
|
QWEN_API_KEY=sk-your-actual-qwen-api-key-here
|
|||
|
|
|
|||
|
|
# OpenAI API密钥 (可选)
|
|||
|
|
OPENAI_API_KEY=sk-your-actual-openai-api-key-here
|
|||
|
|
|
|||
|
|
# Anthropic API密钥 (可选)
|
|||
|
|
ANTHROPIC_API_KEY=sk-ant-your-actual-anthropic-api-key-here
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 验证配置
|
|||
|
|
|
|||
|
|
运行以下命令验证API密钥配置:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
python -c "from config.api_keys import get_api_status_report; print(get_api_status_report())"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🏗️ 架构说明
|
|||
|
|
|
|||
|
|
### 统一API密钥管理
|
|||
|
|
|
|||
|
|
- **文件位置**: `config/api_keys.py`
|
|||
|
|
- **管理类**: `APIKeyManager`
|
|||
|
|
- **全局实例**: 通过 `get_api_key_manager()` 获取
|
|||
|
|
|
|||
|
|
### 支持的API提供商
|
|||
|
|
|
|||
|
|
| 提供商 | 环境变量 | 必需性 | 用途 |
|
|||
|
|
|--------|----------|--------|------|
|
|||
|
|
| 千问 | `QWEN_API_KEY` | ✅ 必需 | 主要AI分析服务 |
|
|||
|
|
| OpenAI | `OPENAI_API_KEY` | ⚪ 可选 | 备用AI服务 |
|
|||
|
|
| Anthropic | `ANTHROPIC_API_KEY` | ⚪ 可选 | 备用AI服务 |
|
|||
|
|
| Google | `GOOGLE_API_KEY` | ⚪ 可选 | 扩展服务 |
|
|||
|
|
| 百度 | `BAIDU_API_KEY` | ⚪ 可选 | 扩展服务 |
|
|||
|
|
| 腾讯 | `TENCENT_API_KEY` | ⚪ 可选 | 扩展服务 |
|
|||
|
|
|
|||
|
|
## 🔒 安全特性
|
|||
|
|
|
|||
|
|
### 1. 密钥验证
|
|||
|
|
- 自动验证API密钥格式
|
|||
|
|
- 检查密钥是否为空或无效
|
|||
|
|
- 提供详细的验证报告
|
|||
|
|
|
|||
|
|
### 2. 环境隔离
|
|||
|
|
- 所有密钥存储在环境变量中
|
|||
|
|
- `.env` 文件被 `.gitignore` 忽略
|
|||
|
|
- 不会意外提交到版本控制
|
|||
|
|
|
|||
|
|
### 3. 运行时管理
|
|||
|
|
- 支持运行时动态设置密钥
|
|||
|
|
- 提供密钥状态监控
|
|||
|
|
- 支持多提供商切换
|
|||
|
|
|
|||
|
|
## 📚 使用方法
|
|||
|
|
|
|||
|
|
### 基本用法
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
from config.api_keys import get_qwen_key, get_openai_key
|
|||
|
|
|
|||
|
|
# 获取千问API密钥
|
|||
|
|
qwen_key = get_qwen_key()
|
|||
|
|
if qwen_key:
|
|||
|
|
print("千问API密钥已配置")
|
|||
|
|
else:
|
|||
|
|
print("千问API密钥未配置")
|
|||
|
|
|
|||
|
|
# 获取OpenAI API密钥
|
|||
|
|
openai_key = get_openai_key()
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 高级用法
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
from config.api_keys import get_api_key_manager
|
|||
|
|
|
|||
|
|
# 获取管理器实例
|
|||
|
|
manager = get_api_key_manager()
|
|||
|
|
|
|||
|
|
# 检查提供商可用性
|
|||
|
|
if manager.is_available('qwen'):
|
|||
|
|
print("千问服务可用")
|
|||
|
|
|
|||
|
|
# 获取所有可用提供商
|
|||
|
|
available = manager.get_available_providers()
|
|||
|
|
print(f"可用提供商: {available}")
|
|||
|
|
|
|||
|
|
# 获取状态报告
|
|||
|
|
status = manager.get_status_report()
|
|||
|
|
print(f"配置状态: {status}")
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 动态设置密钥
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
from config.api_keys import get_api_key_manager
|
|||
|
|
|
|||
|
|
manager = get_api_key_manager()
|
|||
|
|
|
|||
|
|
# 运行时设置API密钥
|
|||
|
|
manager.set_key('qwen', 'sk-your-new-api-key')
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🛠️ 开发工具
|
|||
|
|
|
|||
|
|
### 创建环境变量模板
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
from config.api_keys import create_env_template
|
|||
|
|
|
|||
|
|
# 创建 .env 文件模板
|
|||
|
|
create_env_template()
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 获取配置建议
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
from config.api_keys import get_api_status_report
|
|||
|
|
|
|||
|
|
status = get_api_status_report()
|
|||
|
|
for recommendation in status['recommendations']:
|
|||
|
|
print(f"💡 {recommendation}")
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🔍 故障排除
|
|||
|
|
|
|||
|
|
### 常见问题
|
|||
|
|
|
|||
|
|
1. **API密钥未配置**
|
|||
|
|
```
|
|||
|
|
ValueError: 千问API密钥未配置,请在.env文件中设置QWEN_API_KEY
|
|||
|
|
```
|
|||
|
|
**解决方案**: 检查 `.env` 文件是否存在且包含正确的API密钥
|
|||
|
|
|
|||
|
|
2. **密钥格式错误**
|
|||
|
|
```
|
|||
|
|
⚠️ 千问API密钥格式可能不正确
|
|||
|
|
```
|
|||
|
|
**解决方案**: 确保API密钥以 `sk-` 开头(千问)或 `sk-ant-` 开头(Anthropic)
|
|||
|
|
|
|||
|
|
3. **环境变量未加载**
|
|||
|
|
```
|
|||
|
|
⚠️ 千问API密钥未配置
|
|||
|
|
```
|
|||
|
|
**解决方案**: 确保 `.env` 文件在项目根目录,且格式正确
|
|||
|
|
|
|||
|
|
### 调试命令
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 检查环境变量
|
|||
|
|
python -c "import os; print('QWEN_API_KEY:', os.getenv('QWEN_API_KEY', 'Not set'))"
|
|||
|
|
|
|||
|
|
# 测试API密钥管理
|
|||
|
|
python config/api_keys.py
|
|||
|
|
|
|||
|
|
# 验证配置
|
|||
|
|
python -c "from config.api_keys import get_api_status_report; import json; print(json.dumps(get_api_status_report(), indent=2, ensure_ascii=False))"
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📈 最佳实践
|
|||
|
|
|
|||
|
|
1. **密钥安全**
|
|||
|
|
- 永远不要将API密钥硬编码在代码中
|
|||
|
|
- 使用环境变量或配置文件
|
|||
|
|
- 定期轮换API密钥
|
|||
|
|
|
|||
|
|
2. **错误处理**
|
|||
|
|
- 始终检查API密钥是否可用
|
|||
|
|
- 提供友好的错误提示
|
|||
|
|
- 实现降级策略
|
|||
|
|
|
|||
|
|
3. **配置管理**
|
|||
|
|
- 使用统一的配置管理
|
|||
|
|
- 提供配置验证
|
|||
|
|
- 支持多环境配置
|
|||
|
|
|
|||
|
|
## 🔄 迁移指南
|
|||
|
|
|
|||
|
|
如果您之前在其他文件中硬编码了API密钥,请按以下步骤迁移:
|
|||
|
|
|
|||
|
|
1. **移除硬编码密钥**
|
|||
|
|
```python
|
|||
|
|
# 旧方式 ❌
|
|||
|
|
api_key = "sk-hardcoded-key"
|
|||
|
|
|
|||
|
|
# 新方式 ✅
|
|||
|
|
from config.api_keys import get_qwen_key
|
|||
|
|
api_key = get_qwen_key()
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
2. **更新导入语句**
|
|||
|
|
```python
|
|||
|
|
# 添加统一导入
|
|||
|
|
from config.api_keys import get_qwen_key, get_openai_key, get_anthropic_key
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
3. **添加错误处理**
|
|||
|
|
```python
|
|||
|
|
api_key = get_qwen_key()
|
|||
|
|
if not api_key:
|
|||
|
|
raise ValueError("千问API密钥未配置")
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📞 支持
|
|||
|
|
|
|||
|
|
如果您在配置API密钥时遇到问题,请:
|
|||
|
|
|
|||
|
|
1. 检查本指南的故障排除部分
|
|||
|
|
2. 运行调试命令验证配置
|
|||
|
|
3. 查看项目日志获取详细错误信息
|
|||
|
|
4. 提交Issue描述具体问题
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
**注意**: 请妥善保管您的API密钥,不要分享给他人或提交到公开仓库。
|