Files
gemini-balance/README.md

146 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🚀 FastAPI OpenAI 代理服务
## 📝 项目简介
这是一个基于 FastAPI 框架开发的 OpenAI API 代理服务,支持 Gemini 模型调用。主要提供多 API Key 轮询、认证鉴权、流式响应等功能。
## ✨ 主要特性
- 🔄 多 API Key 轮询支持
- 🔐 Bearer Token 认证
- 📡 支持流式响应
- 🌐 CORS 跨域支持
- 📊 健康检查接口
- 🤖 支持 Gemini 模型
- 🔍 支持搜索功能
- 🛠️ 支持代码执行
## 🛠️ 技术栈
- FastAPI
- Python 3.9+
- Pydantic
- Docker
- httpx
- uvicorn
## 🚀 快速开始
### 环境要求
- Python 3.9+
- Docker (可选)
### 📦 安装依赖
```bash
pip install -r requirements.txt
```
### ⚙️ 配置文件
创建 `.env` 文件并配置以下参数:
```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 部署
```bash
docker build -t gemini-balance .
docker run -p 8000:8000 -d gemini-balance
```
## 🔌 API 接口
### 获取模型列表
```http
GET /v1/models
Authorization: Bearer your-token
```
### 聊天完成
```http
POST /v1/chat/completions
Authorization: Bearer your-token
{
"messages": [...],
"model": "gemini-1.5-flash-002",
"temperature": 0.7,
"stream": false,
"tools": []
}
```
### 获取 Embedding
```http
POST /v1/embeddings
Authorization: Bearer your-token
{
"input": "Your text here",
"model": "text-embedding-004"
}
```
### 健康检查
```http
GET /health
```
## 📚 代码结构
```plaintext
.
├── 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 文档
## 🤝 贡献
欢迎提交 Issue 和 Pull Request
## 📄 许可证
MIT License