Files
recommend/API_KEY_SETUP_GUIDE.md

239 lines
5.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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密钥不要分享给他人或提交到公开仓库。