综合介绍
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.一些限制,目前还无法进行图片处理和结构话输出