这是一个基于 FastAPI 框架开发的 OpenAI API 代理服务。主要提供多 API Key 轮询、认证鉴权、流式响应等功能。
- 🔄 多 API Key 轮询支持
- 🔐 Bearer Token 认证
- 📡 支持流式响应
- 🌐 CORS 跨域支持
- 📊 健康检查接口
- FastAPI
- Python 3.9+
- Pydantic
- Docker
- httpx
- uvicorn
- Python 3.9+
- Docker (可选)
pip install -r requirements.txt
创建 .env
文件并配置以下参��:
# API密钥列表,支持为每个密钥配置独立的代理地址
# 方式一:简单配置(使用默认代理地址)
API_KEYS='["your-api-key-1","your-api-key-2"]'
# 方式二:高级配置(指定代理地址)
API_KEYS='[
{"key": "your-api-key-1", "base_url": "https://api.openai.com/v1"},
{"key": "your-api-key-2", "base_url": "https://your-proxy-domain.com/v1"},
{"key": "your-api-key-3"}
]'
# 允许的访问令牌列表
ALLOWED_TOKENS='["your-access-token-1","your-access-token-2"]'
# 可用模型列表(可选,默认包含gpt-4-turbo-preview等模型)
AVAILABLE_MODELS='["gpt-4-turbo-preview","gpt-4","gpt-3.5-turbo","text-embedding-3-small"]'
注意:
- 环境变量中的 JSON 字符串必须使用单引号包裹
- 列表类型的配置必须是有效的 JSON 格式
- 所有配置项都支持通过环境变量传入
你可以选择以下任一方式部署:
# 拉取最新版本镜像
docker pull ghcr.io/[your-username]/[repo-name]:latest
# 运行容器(简单配置)
docker run -d \
-p 8000:8000 \
-e API_KEYS='["your-api-key-1","your-api-key-2"]' \
-e ALLOWED_TOKENS='["your-token-1","your-token-2"]' \
ghcr.io/[your-username]/[repo-name]:latest
# 运行容器(高级配置)
docker run -d \
-p 8000:8000 \
-e API_KEYS='[{"key":"your-api-key-1"},{"key":"your-api-key-2","base_url":"https://your-proxy.com/v1"}]' \
-e ALLOWED_TOKENS='["your-token-1","your-token-2"]' \
-e AVAILABLE_MODELS='["gpt-4-turbo-preview","gpt-3.5-turbo"]' \
ghcr.io/[your-username]/[repo-name]:latest
# 构建镜像
docker build -t openai-proxy .
# 运行容器
docker run -d \
-p 8000:8000 \
-e API_KEYS='[{"key":"your-api-key-1"},{"key":"your-api-key-2","base_url":"https://your-proxy.com/v1"}]' \
-e ALLOWED_TOKENS='["your-token-1","your-token-2"]' \
openai-proxy
GET /v1/models
Authorization: Bearer your-token
POST /v1/chat/completions
Authorization: Bearer your-token
{
"messages": [...],
"model": "gpt-4-turbo-preview",
"temperature": 0.7,
"stream": false
}
POST /v1/embeddings
Authorization: Bearer your-token
{
"input": "Your text here",
"model": "text-embedding-3-small"
}
GET /health
.
├── app/
│ ├── api/
│ │ ├── routes.py # API路由
│ │ └── dependencies.py # 依赖注入
│ ├── core/
│ │ ├── config.py # 配置管理
│ │ └── security.py # 安全认证
│ ├── services/
│ │ ├── chat_service.py # 聊天服务
│ │ ├── key_manager.py # Key管理
│ │ └── model_service.py # 模型服务
│ ├── schemas/
│ │ └── request_model.py # 请求模型
│ └── main.py # 主程序入口
├── Dockerfile # Docker配置
└── requirements.txt # 项目依赖
- API Key 轮询机制
- Bearer Token 认证
- 请求日志记录
- 失败重试机制
- Key 有效性检查
- 请确保妥善保管 API Keys 和访问令牌
- 建议在生产环境中使用环境变量配置敏感信息
- 默认服务端口为 8000
- API Key 失败重试次数默认为 10 次
- 可以通过环境变量 AVAILABLE_MODELS 配置可用的模型列表
- 每个 API Key 可以配置独立的代理地址,默认使用 OpenAI 官方地址
- Docker 镜像支持 AMD64 和 ARM64 架构
- 每次推送到主分支或创建新的标签时会自动构建并发布 Docker 镜像
欢迎提交 Issue 和 Pull Request!
MIT License