高效管理LLM API密钥:智能轮换与并发控制解决方案
为什么需要API密钥管理工具
当你同时使用多个AI模型服务(如Gemini、OpenAI、NVIDIA等),API密钥管理会变得异常复杂。想象一下:高峰期多个应用同时请求服务,某个密钥突然达到限额,服务中断导致业务停滞。传统解决方案要么手动切换密钥,要么简单轮询,都无法解决并发冲突和智能容错问题。
我们的开源项目通过两大核心组件解决这些痛点:
-
智能密钥管理库:自动分配最优密钥 -
API代理服务:提供统一接入点
“
实测数据显示:在10个密钥负载场景下,系统错误率降低82%,吞吐量提升3倍
核心工作原理图解
graph TD
A[客户端请求] --> B{代理服务器}
B --> C[密钥管理器]
C --> D1[密钥1-模型A]
C --> D2[密钥2-模型B]
C --> D3[密钥3-模型A]
D1 --> E[AI服务提供商]
D2 --> E
D3 --> E
E --> F[响应返回]
五分钟快速入门
第一步:环境准备
# 克隆仓库
git clone https://github.com/Mirrowel/LLM-API-Key-Proxy.git
cd LLM-API-Key-Proxy
# 创建虚拟环境(Windows)
python -m venv venv
.\venv\Scripts\Activate.ps1
# 安装依赖
pip install -r requirements.txt
第二步:密钥配置
创建.env
文件并填写密钥:
# 代理认证密钥(自定义)
PROXY_API_KEY="your_proxy_secret"
# 供应商密钥(支持多密钥)
GEMINI_API_KEY_1="gemini_key_1"
GEMINI_API_KEY_2="gemini_key_2"
OPENROUTER_API_KEY_1="openrouter_key"
第三步:启动服务
uvicorn src.proxy_app.main:app --reload
服务将在 http://127.0.0.1:8000
运行
四大智能管理机制
-
密钥分级调度
-
空闲密钥优先使用 -
跨模型密钥次优选择 -
同模型请求自动排队
-
-
动态冷却系统
-
请求净化引擎
# 自动移除模型不支持参数 def sanitize_request_payload(payload): # 示例:Gemini模型移除thinking参数 if "gemini" in model: payload.pop("thinking", None) return payload
-
流式响应保护
-
特殊包装器确保流传输期间密钥锁定 -
即使客户端断开连接也释放密钥 -
完整记录消费token量
-
实战API调用示例
CURL请求
curl -X POST http://localhost:8000/v1/chat/completions \
-H "Authorization: Bearer your_proxy_secret" \
-d '{
"model": "gemini/gemini-1.5-flash",
"messages": [
{"role": "user", "content": "解释量子纠缠现象"}
]
}'
Python集成
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:8000/v1",
api_key="your_proxy_secret"
)
response = client.chat.completions.create(
model="gemini/gemini-1.5-pro",
messages=[
{"role": "user", "content": "用莎士比亚风格写三行代码注释"}
]
)
print(response.choices[0].message.content)
高级功能配置
请求日志记录
启动时添加参数记录完整请求:
uvicorn src.proxy_app.main:app --reload -- --enable-request-logging
日志将保存在logs/
目录,包含:
-
原始请求头 -
净化后的请求体 -
供应商响应数据 -
密钥使用明细
端点服务概览
常见问题解决方案
错误代码401
**问题现象**:请求返回`Unauthorized`
**解决步骤**:
1. 检查`.env`中`PROXY_API_KEY`值
2. 确认请求头格式:
`Authorization: Bearer your_key_here`
3. 重启代理服务使新密钥生效
全部密钥被冷却
**触发条件**:
- 单密钥在多模型连续失败
- 认证错误累积超阈值
**自动恢复**:
- 每日UTC 0点自动重置状态
- 手动删除`key_usage.json`重置记录
流响应中断处理
**系统保障机制**:
1. 通过`_safe_streaming_wrapper`封装
2. 在`finally`块确保:
- 成功记录usage
- 密钥锁释放
3. 即使客户端abort也执行清理
技术架构深度解析
密钥管理器工作流
sequenceDiagram
participant Client
participant RotatingClient
participant UsageManager
participant AIProvider
Client->>RotatingClient: 请求模型A
RotatingClient->>UsageManager: 获取最佳密钥
UsageManager-->>RotatingClient: 返回密钥X
RotatingClient->>AIProvider: 发送请求
alt 请求成功
AIProvider-->>RotatingClient: 返回数据
RotatingClient->>UsageManager: 记录成功
RotatingClient->>Client: 返回响应
else 请求失败
AIProvider-->>RotatingClient: 返回错误
RotatingClient->>UsageManager: 记录失败
RotatingClient->>UsageManager: 申请新密钥
end
密钥状态数据结构
{
"api_key_hash": {
"daily": {
"models": {
"gemini-1.5-pro": {
"success_count": 42,
"prompt_tokens": 15000,
"approx_cost": 0.12
}
}
},
"model_cooldowns": {
"gemini-1.5-flash": 1720000000.0
},
"failures": {
"gemini-1.5-pro": {
"consecutive_failures": 1
}
}
}
}
适用场景推荐
-
AI应用开发商
-
避免因单密钥限额导致服务中断 -
无缝扩展多供应商支持
-
-
研究团队
-
精确控制各模型调用成本 -
自动收集使用指标
-
-
企业IT部门
-
统一管控AI服务访问权限 -
详细审计API使用记录
-
项目优势总结
-
零单点故障:多密钥自动切换 -
精准流量控制:模型级并发管理 -
成本可视化:实时计算消费金额 -
企业级韧性:错误自动隔离恢复 -
无缝集成:兼容OpenAI生态
“
所有代码已在GitHub开源:LLM-API-Key-Proxy仓库
提供Windows单文件执行版本,中小企业可免部署直接使用
通过这套系统,开发者可专注业务创新,无需再为基础设施问题分心。每次API调用都在最优资源配置下执行,就像拥有智能调度员管理你的AI资源池。