File size: 7,839 Bytes
36b7c16 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 |
# OnDemand-API-Proxy 代理服务
## 本项目仅供学习交流使用,请勿用于其他用途
一款基于 Flask 的 API 代理服务,提供兼容 OpenAI API 的接口,支持多种大型语言模型,实现多账户轮询和会话管理。
## 功能特点
- **兼容 OpenAI API**:提供标准的 `/v1/models` 和 `/v1/chat/completions` 接口
- **多模型支持**:支持 GPT-4o、Claude 3.7 Sonnet、Gemini 2.0 Flash 等多种模型
- **多轮对话**:通过会话管理保持对话上下文
- **账户轮换**:自动轮询使用多个 on-demand.io 账户,平衡负载
- **会话管理**:自动处理会话超时和重新连接
- **统计面板**:提供实时使用统计和图表展示
- **可配置的认证**:支持通过环境变量或配置文件设置 API 访问令牌
- **Docker 支持**:易于部署到 Hugging Face Spaces 或其他容器环境
## 支持的模型
服务支持以下模型(部分列表):
| API 模型名称 | 实际使用模型 |
|------------|------------|
| `gpt-4o` | predefined-openai-gpt4o |
| `gpt-4o-mini` | predefined-openai-gpt4o-mini |
| `gpt-3.5-turbo` / `gpto3-mini` | predefined-openai-gpto3-mini |
| `gpt-4-turbo` / `gpt-4.1` | predefined-openai-gpt4.1 |
| `gpt-4.1-mini` | predefined-openai-gpt4.1-mini |
| `gpt-4.1-nano` | predefined-openai-gpt4.1-nano |
| `claude-3.5-sonnet` / `claude-3.7-sonnet` | predefined-claude-3.7-sonnet |
| `claude-3-opus` | predefined-claude-3-opus |
| `claude-3-haiku` | predefined-claude-3-haiku |
| `gemini-1.5-pro` / `gemini-2.0-flash` | predefined-gemini-2.0-flash |
| `deepseek-v3` | predefined-deepseek-v3 |
| `deepseek-r1` | predefined-deepseek-r1 |
## 配置说明
### 配置文件 (config.json)
配置文件支持以下参数:
```json
{
"api_access_token": "你的自定义访问令牌",
"accounts": [
{"email": "账户[email protected]", "password": "密码1"},
{"email": "账户[email protected]", "password": "密码2"}
],
"session_timeout_minutes": 30,
"max_retries": 3,
"retry_delay": 1,
"request_timeout": 30,
"stream_timeout": 120,
"rate_limit": 60,
"debug_mode": false
}
```
### 环境变量
所有配置也可以通过环境变量设置:
- `API_ACCESS_TOKEN`: API 访问令牌
- `ONDEMAND_ACCOUNTS`: JSON 格式的账户信息
- `SESSION_TIMEOUT_MINUTES`: 会话超时时间(分钟)
- `MAX_RETRIES`: 最大重试次数
- `RETRY_DELAY`: 重试延迟(秒)
- `REQUEST_TIMEOUT`: 请求超时(秒)
- `STREAM_TIMEOUT`: 流式请求超时(秒)
- `RATE_LIMIT`: 速率限制(每分钟请求数)
- `DEBUG_MODE`: 调试模式(true/false)
## API 接口说明
### 获取模型列表
```
GET /v1/models
```
返回支持的模型列表,格式与 OpenAI API 兼容。
### 聊天补全
```
POST /v1/chat/completions
```
**请求头:**
```
Authorization: Bearer 你的API访问令牌
Content-Type: application/json
```
**请求体:**
```json
{
"model": "gpt-4o",
"messages": [
{"role": "system", "content": "你是一个有用的助手。"},
{"role": "user", "content": "你好,请介绍一下自己。"}
],
"temperature": 0.7,
"max_tokens": 2000,
"stream": false
}
```
**参数说明:**
- `model`: 使用的模型名称
- `messages`: 对话消息数组
- `temperature`: 温度参数(0-1)
- `max_tokens`: 最大生成令牌数
- `stream`: 是否使用流式响应
- `top_p`: 核采样参数(0-1)
- `frequency_penalty`: 频率惩罚(0-2)
- `presence_penalty`: 存在惩罚(0-2)
## 统计面板
访问根路径 `/` 可以查看使用统计面板,包括:
- 总请求数和成功率
- Token 使用统计
- 每日和每小时使用量图表
- 模型使用情况
- 最近请求历史
## 部署指南
### Hugging Face Spaces 部署(推荐)
1. **创建 Hugging Face 账户**:
- 访问 [https://huggingface.co/](https://huggingface.co/) 注册账户
2. **创建 Space**:
- 点击 [创建新的 Space](https://huggingface.co/new-space)
- 填写 Space 名称
- **重要**:选择 `Docker` 作为 Space 类型
- 设置权限(公开或私有)
3. **上传代码**:
- 将以下文件上传到你的 Space 代码仓库:
- `app.py`(主程序)
- `routes.py`(路由定义)
- `config.py`(配置管理)
- `auth.py`(认证模块)
- `client.py`(客户端实现)
- `utils.py`(工具函数)
- `requirements.txt`(依赖列表)
- `Dockerfile`(Docker 配置)
- `templates/`(模板目录)
- `static/`(静态资源目录)
4. **配置账户信息和 API 访问令牌**:
- 进入 Space 的 "Settings" → "Repository secrets"
- 添加 `ONDEMAND_ACCOUNTS` Secret:
```json
{
"accounts": [
{"email": "你的邮箱[email protected]", "password": "你的密码1"},
{"email": "你的邮箱[email protected]", "password": "你的密码2"}
]
}
```
- 添加 `API_ACCESS_TOKEN` Secret 设置自定义访问令牌
- 如果不设置,将使用默认值 "sk-2api-ondemand-access-token-2025"
5. **可选配置**:
- 添加其他环境变量如 `SESSION_TIMEOUT_MINUTES`、`RATE_LIMIT` 等
6. **完成部署**:
- Hugging Face 会自动构建 Docker 镜像并部署你的 API
- 访问你的 Space URL(如 `https://你的用户名-你的space名称.hf.space`)
### 本地部署
1. **克隆代码**:
```bash
git clone https://github.com/你的用户名/ondemand-api-proxy.git
cd ondemand-api-proxy
```
2. **安装依赖**:
```bash
pip install -r requirements.txt
```
3. **配置**:
- 创建 `config.json` 文件:
```json
{
"api_access_token": "你的自定义访问令牌",
"accounts": [
{"email": "账户[email protected]", "password": "密码1"},
{"email": "账户[email protected]", "password": "密码2"}
]
}
```
- 或设置环境变量
4. **启动服务**:
```bash
python app.py
```
5. **访问服务**:
- API 接口:`http://localhost:5000/v1/chat/completions`
- 统计面板:`http://localhost:5000/`
### Docker 部署
```bash
# 构建镜像
docker build -t ondemand-api-proxy .
# 运行容器
docker run -p 7860:7860 \
-e API_ACCESS_TOKEN="你的访问令牌" \
-e ONDEMAND_ACCOUNTS='{"accounts":[{"email":"账户[email protected]","password":"密码1"}]}' \
ondemand-api-proxy
```
## 客户端连接
### Cherry Studio 连接
1. 打开 Cherry Studio
2. 进入设置 → API 设置
3. 选择 "OpenAI API"
4. API 密钥填入你配置的 API 访问令牌
5. API 地址填入你的服务地址(如 `https://你的用户名-你的space名称.hf.space/v1`)
### 其他 OpenAI 兼容客户端
任何支持 OpenAI API 的客户端都可以连接到此服务,只需将 API 地址修改为你的服务地址即可。
## 故障排除
### 常见问题
1. **认证失败**:
- 检查 API 访问令牌是否正确配置
- 确认请求头中包含 `Authorization: Bearer 你的令牌`
2. **账户连接问题**:
- 确认 on-demand.io 账户信息正确
- 检查账户是否被限制或封禁
3. **模型不可用**:
- 确认请求的模型名称在支持列表中
- 检查 on-demand.io 是否支持该模型
4. **统计图表显示错误**:
- 清除浏览器缓存后重试
- 检查浏览器控制台是否有错误信息
## 安全建议
1. **永远不要**在代码中硬编码账户信息和访问令牌
2. 使用环境变量或安全的配置管理系统存储敏感信息
3. 定期更换 API 访问令牌
4. 限制 API 的访问范围,只允许受信任的客户端连接
5. 启用速率限制防止滥用
## 贡献与反馈
欢迎提交 Issue 和 Pull Request 来改进此项目。如有任何问题或建议,请随时联系。
## 许可证
本项目采用 MIT 许可证。
|