综合介绍
Gemini Balance是一个基于FastAPI框架开发的OpenAI API代理服务,旨在提供高效的多API Key管理和优化功能。该项目支持Gemini模型调用,主要功能包括多API Key轮询、认证鉴权、流式响应、CORS跨域支持和健康检查接口。通过使用Python 3.9+和Docker等技术栈,Gemini Balance为开发者提供了一个灵活且高效的API代理解决方案,适用于需要高并发和高可靠性的应用场景。
功能列表
- 多API Key轮询支持
- Bearer Token认证
- 支持流式响应
- CORS跨域支持
- 健康检查接口
- 支持Gemini模型调用
- 支持搜索功能
- 支持代码执行
使用帮助
环境要求
- Python 3.9+
- Docker(可选)
安装依赖
pip install -r requirements.txt
配置文件
创建.env
文件并配置以下参数:
API_KEYS=["your-api-key-1","your-api-key-2"]
ALLOWED_TOKENS=["your-access-token-1","your-access-token-2"]
BASE_URL="https://generativelanguage.googleapis.com/v1beta"
TOOLS_CODE_EXECUTION_ENABLED=true
MODEL_SEARCH=["gemini-2.0-flash-exp"]
Docker部署
docker build -t gemini-balance .
docker run -p 8000:8000 -d gemini-balance
API接口
- 获取模型列表
GET /v1/models
Authorization: Bearer your-token
- 聊天完成
POST /v1/chat/completions
Authorization: Bearer your-token
{
"messages": [...],
"model": "gemini-1.5-flash-002",
"temperature": 0.7,
"stream": false,
"tools": []
}
- 获取Embedding
POST /v1/embeddings
Authorization: Bearer your-token
{
"input": "Your text here",
"model": "text-embedding-004"
}
- 健康检查
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次
- 支持的模型列表请参考Gemini API文档
补充:huggingface部署gemini代理,账号轮询调用,解锁区域限制
1.复制space空间
Gemini Balance - a Hugging Face Space by snailyp
2.修改visibility为Public
(一定注意修改成public,不然访问不到),配置ALLOWED_TOKENS
,API_KEYS
,BASE_URL
默认
ALLOWED_TOKENS
格式为["自定义apikey"]
,注意中括号,逗号,引号都有严格遵循。
API_KEYS
格式为单个key的形式:["gemini_key1"]
,多个key的形式["gemini_key1","gemini_key2"]
,注意中括号,逗号,引号都有严格遵循。
BASE_URL
保持默认
3.等待部署成功,部署成功后,会出现如下的日志和running状态
4.这时该huggingface服务的默认host为huggingface用户名-gemini-balance.hf.space
,比如我的就是snailyp-gemini-balance.hf.space
注意:huggingface服务48h不使用会进入sleeping,建议通过青龙面板或者uptime kuma等定时任务进行保活。(直接用get请求调用https://用户名-gemini-balance.hf.space
即可)
5.支持的端点/hf/v1/models
和/hf/v1/chat/completions
6.huggingface域名国内可能无法直接访问,hf.space 好像可以访问,如果不能访问,可以参考下面的流程。
可以通过cf workers代理一下,并且绑定自定义域名,便可在国内访问了,cf worker代理代码如下,url.host修改成自己的:
export default { async fetch(request, env) { const url = new URL(request.url); url.host = 'xxx-gemini-balance.hf.space'; url.pathname = "/hf" + url.pathname; return fetch(new Request(url, request)) } }
注意:经过代理后的端点去掉了/hf,因此现在的端点变成了/v1/models
和/v1/chat/completions
,客户端的配置需要注意一下
7.一些限制,目前还无法进行图片处理和结构话输出