站点图标
Linux-技术共享

Gemini Balance:Gemini模型API兼容OpenAI格式,解锁区域限制并支持多API Key轮询

综合介绍

Gemini Balance是一个基于FastAPI框架开发的OpenAI API代理服务,旨在提供高效的多API Key管理和优化功能。该项目支持Gemini模型调用,主要功能包括多API Key轮询、认证鉴权、流式响应、CORS跨域支持和健康检查接口。通过使用Python 3.9+和Docker等技术栈,Gemini Balance为开发者提供了一个灵活且高效的API代理解决方案,适用于需要高并发和高可靠性的应用场景。

de764f6b7eec4e8

 

功能列表

 

使用帮助

环境要求

安装依赖


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": []
}

  POST /v1/embeddings
Authorization: Bearer your-token
{
"input": "Your text here",
"model": "text-embedding-004"
}

  GET /health

代码结构

安全特性

注意事项

 

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

退出移动版