override_model_switcher最初是为override工具开发的一个模型切换管理器,目的是实现在运行时灵活切换模型而无需停止项目、修改配置并重启。随着开发的深入,我们发现这个工具不仅适用于override,还能很好地支持各种AI工具的模型管理需求。它完全兼容OpenAI的API请求格式,这意味着任何使用OpenAI API的应用都可以无缝接入使用。它提供了一个直观的Web界面和完整的API接口,让用户能够轻松管理多个API渠道配置,并在不同渠道和模型之间灵活切换。特别适合需要管理多个API密钥或在多个AI模型间切换的场景。
-
多渠道管理
- 支持添加、删除和管理多个API渠道
- 提供批量导入渠道配置功能
- 实时切换不同渠道
-
模型管理
- 自动获取可用模型列表
- 支持模型实时切换
- 支持模型可用性测试
-
API代理功能
- 完整支持OpenAI聊天接口
- 支持流式响应和普通响应
- 自动消息合并优化(针对Claude等模型)
-
安全特性
- API密钥认证
- CORS支持
- 错误处理和日志记录
-
后端框架:
- FastAPI:高性能异步Web框架
- Uvicorn:ASGI服务器
- Pydantic:数据验证
-
前端技术:
- HTML + JavaScript + CSS
- Jinja2模板引擎
-
网络处理:
- HTTPX:异步HTTP客户端
- Starlette:CORS中间件
-
其他组件:
- python-dotenv:环境变量管理
- colorlog:日志美化
- SQLAlchemy:数据库支持(可选)
-
在override工具中配置API代理:
# 配置其他ai工具使用本工具作为API代理 ai工具的模型base_url配置 = 指向model_switcher的地址 ai工具的模型model配置 = override (固定这个名称,可以用来切换模型)
-
在Web界面或通过API进行模型切换:
- 添加新的API渠道(包含不同的API密钥或基础URL)
- 选择想要使用的渠道
- 选择该渠道下可用的模型
- 切换完成后,override工具会自动使用新选择的模型,无需重启项目
本工具完全实现了OpenAI的API接口规范,可以作为独立的API代理使用。这意味着:
- 支持所有标准的OpenAI API端点
- 请求格式与OpenAI API完全一致
- 响应格式保持与OpenAI一致
- 支持流式输出等高级特性
- 可以无缝替代OpenAI的API端点
因此,任何使用OpenAI API的应用都可以通过简单修改API基础URL来使用本工具,无需其他改动。
-
构建镜像:
docker build -t openai-api-manager .
-
运行容器:
docker run -p 8000:8000 openai-api-manager
-
安装依赖:
pip install -r requirements.txt
-
运行应用:
python main.py
访问 http://localhost:8000
使用Web界面。
在 .env
文件中设置:
DEFAULT_BASE_URL=xxx # 默认API基础URL
DEFAULT_API_KEY=xxx # 默认API密钥(同时用作管理接口的认证密钥)
DEFAULT_MODEL=gpt-4o # 默认使用的模型
CURRENT_CHANNEL=default # 默认渠道名称
DATABASE_URL=mysql+pymysql://root:123456@host:port/model_switcher # 数据库连接信息
系统使用 config.json
存储渠道配置:
{
"channels": {
"default": {
"base_url": "https://xxx",
"api_key": "sk-xxx",
"model": "gpt-4o"
}
},
"current_channel": "",
"current_model": "",
"api_key": ""
}
GET /health_check
:服务健康检查GET /
:Web界面
GET /v1/models
:获取可用模型列表POST /switch/override_model
:切换当前模型GET /export_models
:导出模型列表POST /test_all_models
:测试指定渠道的所有模型
GET /get_channels
:获取所有渠道列表POST /add_channel
:添加单个渠道POST /bulk_add_channels
:批量添加渠道DELETE /delete_channel/{channel_name}
:删除指定渠道POST /switch_channel
:切换当前渠道GET /export_channels
:导出所有渠道配置
POST /v1/chat/completions
:代理OpenAI聊天接口- 支持流式响应
- 自动消息合并
- 模型自动替换
本项目采用MIT许可证。详情请见LICENSE文件。
snailyp