强大的API代理解决方案
Gemini Balance 是一个基于 Python FastAPI 构建的高性能应用程序,专为提供 Google Gemini API 的代理和负载均衡功能而设计。
- 支持多个 Gemini API Key 的智能负载均衡
- 完美兼容 OpenAI 和 Gemini 双协议格式
- 提供可视化的Web管理界面
- 集成图像生成和多种图床上传功能
- 支持联网搜索和图文对话功能
- Docker容器化部署,支持AMD/ARM架构
🎯 核心价值
通过智能的负载均衡算法和故障转移机制,确保API服务的高可用性和稳定性。支持实时监控、自动恢复和详细的日志记录,为开发者提供企业级的API代理服务。
核心特性
Gemini Balance 提供的强大功能,让您的API服务更加稳定可靠
多Key负载均衡
支持配置多个 Gemini API Key,自动按顺序轮询使用,提高可用性和并发能力,确保服务稳定运行。
双协议兼容
同时支持 Gemini 和 OpenAI 格式的 API 请求转发,完美兼容现有的客户端和工具。
可视化管理
提供直观的Web管理界面,配置修改后无需重启服务即可生效,支持实时监控和状态查看。
图文对话
支持图像生成和修改功能,集成多种图床上传服务,提供完整的多媒体对话体验。
联网搜索
集成Web搜索功能,让AI模型能够获取最新的网络信息,提供更准确的回答。
状态监控
实时监控各个API Key的状态和使用情况,提供详细的调用日志和错误分析。
Docker支持
支持AMD和ARM架构的Docker部署,提供官方镜像,简化部署和维护流程。
自动恢复
智能的故障检测和自动恢复机制,失效的Key会被自动禁用,恢复后自动重新启用。
代理支持
支持HTTP/SOCKS5代理配置,适应各种网络环境,确保API访问的稳定性。
详细日志
提供完整的请求和错误日志记录,支持日志自动清理,便于问题排查和性能优化。
技术架构
基于现代化技术栈构建的高性能API代理服务
核心技术栈
Python 3.9+ + FastAPI
SQLite / MySQL
Docker + Docker Compose
Uvicorn ASGI
🏗️ 系统架构特点
- 基于FastAPI的异步ASGI架构,支持高并发请求处理
- 模块化分层设计:Router → Service → Handler → Client
- 智能Key轮询算法,支持一致性哈希代理选择
- 完善的错误处理和自动重试机制
- 实时监控、统计分析和详细日志记录
- 支持SQLite和MySQL双数据库后端
- 智能路由中间件,自动修复API路径
- 流式响应优化器,提升长文本输出体验
📁 项目结构
├── config/ # 配置管理
├── core/ # 核心应用逻辑
├── database/ # 数据库模型
├── router/ # API路由
├── service/ # 业务逻辑
├── middleware/ # 中间件
├── scheduler/ # 定时任务
├── templates/ # HTML模板
└── main.py # 应用入口
核心算法与高级特性
深入了解 Gemini Balance 的技术实现和创新功能
智能Key轮询算法
采用循环迭代器(cycle)实现Key轮询,结合异步锁确保线程安全。支持失败计数机制, 自动跳过失效Key,并提供一致性哈希算法用于代理服务器选择。
async def get_next_working_key():
while key_failure_count < MAX_FAILURES:
return next(key_cycle)
智能路由中间件
自动检测和修复API路径格式,支持Gemini和OpenAI格式的智能转换。 通过URL规范化功能,自动处理不同客户端的路径差异。
generateContent → /v1beta/models/{model}:generateContent
chat/completions → /v1/chat/completions
流式响应优化器
可配置的流式输出优化器,根据文本长度动态调整输出延迟。 支持短文本快速输出和长文本分块传输,提升用户体验。
STREAM_MIN_DELAY = 0.016s
STREAM_MAX_DELAY = 0.024s
CHUNK_SIZE = 5 tokens
多模态内容处理
智能检测消息中的图像内容,自动构建相应的工具配置。 支持图像生成、图像编辑、联网搜索和代码执行等多种工具。
model-image → 图像生成工具
model-search → 联网搜索工具
codeExecution → 代码执行工具
实时统计分析
完整的API调用统计系统,支持按时间段、模型、Key等维度分析。 提供详细的请求日志和错误日志,支持自动清理和数据导出。
• 调用次数、成功率、响应时间
• 模型使用分布、Key状态监控
• 错误类型分析、性能趋势
动态配置系统
基于数据库的配置管理系统,支持运行时动态更新配置。 Web界面可视化编辑,配置变更无需重启服务即可生效。
环境变量 → 内存配置 → 数据库存储
支持JSON、列表、字典等复杂类型
安装指南
选择适合您的部署方式,快速开始使用 Gemini Balance
🐳 Docker 部署(推荐)
使用 Docker 容器快速部署,支持 AMD/ARM 架构
docker pull ghcr.io/snailyp/gemini-balance:latest
docker run -d -p 8000:8000 --env-file .env \
-v /path/to/data:/app/data \
ghcr.io/snailyp/gemini-balance:latest
🔧 本地运行
适用于开发和测试环境
git clone https://github.com/snailyp/gemini-balance.git
cd gemini-balance
pip install -r requirements.txt
uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
API接口文档
完整的API接口说明和使用示例
获取可用的 Gemini 模型列表
请求示例
curl -X GET "http://localhost:8000/v1beta/models" \
-H "Authorization: Bearer your-token"
使用指定模型生成内容(Gemini 原生格式)
请求示例
curl -X POST "http://localhost:8000/v1beta/models/gemini-1.5-flash:generateContent" \
-H "Authorization: Bearer your-token" \
-H "Content-Type: application/json" \
-d '{
"contents": [{
"parts": [{"text": "Hello, how are you?"}]
}],
"generationConfig": {
"temperature": 0.7,
"maxOutputTokens": 1024
}
}'
OpenAI 格式的聊天补全接口,支持流式传输
请求示例
curl -X POST "http://localhost:8000/v1/chat/completions" \
-H "Authorization: Bearer your-token" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-1.5-flash",
"messages": [
{"role": "user", "content": "Hello!"}
],
"stream": true,
"temperature": 0.7,
"max_tokens": 1024
}'
OpenAI 格式的图像生成接口,使用 Imagen 模型
请求示例
curl -X POST "http://localhost:8000/v1/images/generations" \
-H "Authorization: Bearer your-token" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A beautiful sunset over the ocean",
"n": 1,
"size": "1024x1024",
"response_format": "url"
}'
OpenAI 格式的文本嵌入接口,用于向量化文本
请求示例
curl -X POST "http://localhost:8000/v1/embeddings" \
-H "Authorization: Bearer your-token" \
-H "Content-Type: application/json" \
-d '{
"model": "text-embedding-004",
"input": "The quick brown fox jumps over the lazy dog"
}'
查看所有 API Key 的状态和使用情况(需要管理员权限)
功能特性
- 实时显示Key状态(有效/无效)
- API调用统计和成功率
- 错误日志查看和分析
- 配置在线编辑和保存
部署架构与最佳实践
生产环境部署指南和性能优化建议
🏗️ 推荐部署架构
│
├─ Gemini Balance (Docker)
│ ├─ FastAPI Application
│ ├─ Key Manager
│ ├─ Request Router
│ └─ Response Handler
│
├─ Database (MySQL/SQLite)
│ ├─ Configuration Storage
│ ├─ Request Logs
│ └─ Error Logs
│
└─ External Services
├─ Google Gemini API
├─ Image Hosting (SM.MS/PicGo)
└─ Proxy Servers (Optional)
🚀 性能优化建议
- 使用Docker Compose进行容器编排
- 配置MySQL主从复制提升数据库性能
- 启用Nginx反向代理和负载均衡
- 配置Redis缓存减少数据库查询
- 使用CDN加速静态资源访问
- 定期清理日志文件避免磁盘占满
⚙️ Docker Compose 配置
version: '3.8'
services:
gemini-balance:
image: ghcr.io/snailyp/gemini-balance:latest
container_name: gemini-balance
restart: unless-stopped
ports:
- "8000:8000"
env_file:
- .env
depends_on:
mysql:
condition: service_healthy
healthcheck:
test: ["CMD-SHELL", "python -c \"import requests; exit(0) if requests.get('http://localhost:8000/health').status_code == 200 else exit(1)\""]
interval: 30s
timeout: 5s
retries: 3
mysql:
image: mysql:8
container_name: gemini-balance-mysql
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: ${MYSQL_DATABASE}
MYSQL_USER: ${MYSQL_USER}
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
volumes:
- mysql_data:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1"]
interval: 10s
timeout: 5s
retries: 3
volumes:
mysql_data:
🔧 环境变量配置
API_KEYS='["key1", "key2"]'
ALLOWED_TOKENS='["token1"]'
DATABASE_TYPE=mysql
# 高级功能
STREAM_OPTIMIZER_ENABLED=true
URL_NORMALIZATION_ENABLED=true
TOOLS_CODE_EXECUTION_ENABLED=true
# 监控配置
LOG_LEVEL=INFO
AUTO_DELETE_ERROR_LOGS_ENABLED=true
CHECK_INTERVAL_HOURS=1
💡 生产环境建议
🔒 安全配置
- 使用强密码和复杂Token
- 启用HTTPS和SSL证书
- 配置防火墙规则
- 定期更新Docker镜像
📊 监控告警
- 配置健康检查端点
- 监控API响应时间
- 设置Key失效告警
- 监控磁盘和内存使用
🔄 备份策略
- 定期备份数据库
- 配置文件版本控制
- 日志文件归档
- 容器镜像备份
配置参考
完整的环境变量配置说明和最佳实践
🔑 API 核心配置
Gemini API 密钥列表,支持多Key负载均衡
["AIzaSy...", "AIzaSy..."]
允许访问的客户端Token列表
["sk-123456", "sk-789012"]
Gemini API 基础URL,支持自定义代理
https://generativelanguage.googleapis.com/v1beta
Vertex AI API密钥列表(可选)
["vertex-key-1", "vertex-key-2"]
🗄️ 数据库配置
数据库类型选择
mysql | sqlite
MySQL服务器地址和端口
localhost:3306
MySQL用户名和密码
username / password
SQLite数据库文件路径
./data/gemini_balance.db
🎨 AI功能配置
支持图像生成和编辑的模型
["gemini-2.0-flash-exp"]
支持联网搜索的模型
["gemini-2.0-flash-exp"]
支持思考过程显示的模型
["gemini-2.0-flash-thinking-exp"]
是否启用代码执行工具
true | false
🌐 网络与代理
HTTP/SOCKS5代理服务器列表
["http://proxy:8080", "socks5://proxy:1080"]
是否使用一致性哈希选择代理
true | false
是否启用智能路由映射
true | false
API请求超时时间(秒)
300
⚡ 性能优化
是否启用流式输出优化器
true | false
流式输出延迟范围(秒)
0.016 / 0.024
是否启用伪流式传输
true | false
Key失败阈值和重试次数
3 / 3
📊 监控与日志
日志级别设置
DEBUG | INFO | WARNING | ERROR
是否自动删除错误日志
true | false
错误日志保留天数
7
Key状态检查间隔(小时)
1