xiaoyukkkk commited on
Commit
5077e8a
·
verified ·
1 Parent(s): a9295a6

Upload README.md

Browse files
Files changed (1) hide show
  1. README.md +94 -22
README.md CHANGED
@@ -22,15 +22,24 @@ license: mit
22
 
23
  ## ✨ 功能特性
24
 
 
25
  - ✅ **OpenAI API 完全兼容** - 无缝对接现有工具
26
  - ✅ **流式响应支持** - 实时输出
27
  - ✅ **多模态支持** - 文本 + 图片输入
28
  - ✅ **图片生成 & 图生图** - 支持 `gemini-3-pro-preview` 模型
 
 
29
  - ✅ **多账户负载均衡** - 支持多账户轮询,故障自动转移
30
- - ✅ **智能会话复用** - 自动管理对话历史
 
 
 
 
 
31
  - ✅ **JWT自动管理** - 无需手动刷新令牌
32
- - 📊 **可视化管理面板** - 实时监控账户状态
33
- - 📝 **公开日志系统** - 实时查看服务运行状态
 
34
 
35
  ## 📸 功能展示
36
 
@@ -147,6 +156,26 @@ PROXY=http://127.0.0.1:7890
147
  LOGO_URL=https://your-domain.com/logo.png
148
  CHAT_URL=https://your-chat-app.com
149
  MODEL_NAME=gemini-business
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
150
  ```
151
 
152
  ### 多账户配置示例
@@ -206,12 +235,19 @@ ACCOUNTS_CONFIG='[
206
 
207
  ### 访问端点
208
 
209
- | 端点 | 方法 | 说明 |
210
- | -------------------------- | ---- | --------------------- |
211
- | `/{PATH_PREFIX}/v1/models` | GET | 获取模型列表 |
212
- | `/{PATH_PREFIX}/admin` | GET | 管理面板(需ADMIN_KEY) |
213
- | `/public/log/html` | GET | 公开日志页面 |
214
- | `/health` | GET | 健康检查 |
 
 
 
 
 
 
 
215
 
216
  **访问示例**:
217
 
@@ -296,12 +332,31 @@ curl -X POST http://localhost:7860/v1/v1/chat/completions \
296
 
297
  ## ❓ 常见问题
298
 
299
- ### 1. 图片生成后在哪里找到文件?
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
300
 
301
  - **临时存储**: 图片保存在 `./images/`,可通过 URL 访问
302
  - **重启后会丢失**,建议使用持久化存储
303
 
304
- ### 2. 如何设置 BASE_URL?
305
 
306
  **自动检测**(推荐):
307
  - 不设置 `BASE_URL` 环境变量
@@ -338,18 +393,24 @@ Deno.serve(handler);
338
 
339
  配置反向代理后,将 `BASE_URL` 设置为你的自定义域名即可。
340
 
341
- ### 3. API_KEY 和 ADMIN_KEY 的区别?
342
 
343
  - **API_KEY**: 保护聊天接口 (`/v1/chat/completions`)
344
  - **ADMIN_KEY**: 保护管理面板 (`/admin`)
345
 
346
  可以设置相同的值,也可以分开
347
 
348
- ### 4. 如何查看日志?
349
 
350
  - **公开日志**: 访问 `/public/log/html` (无需密钥)
351
  - **管理面板**: 访问 `/admin?key=YOUR_ADMIN_KEY`
352
 
 
 
 
 
 
 
353
  ## 🔧 油猴脚本使用说明
354
 
355
  本项目提供油猴脚本辅助获取配置参数,使用前需要配置 TamperMonkey:
@@ -373,21 +434,32 @@ Deno.serve(handler);
373
 
374
  ```
375
  gemini-business2api/
376
- ├── main.py # 主程序
 
 
 
 
377
  ├── util/ # 工具模块
378
- │ └── streaming_parser.py
379
  ├── requirements.txt # Python依赖
380
- ├── Dockerfile # Docker构建
381
  ├── README.md # 项目文档
382
  ├── .env.example # 环境变量配置示例
383
- ├── accounts_config.example.json # 多账户配置示例
384
- └── .gitignore # Git忽略文件
385
  ```
386
 
387
- **运行时生成的目录**:
388
- - `images/` - 生成的图片存储
389
- - `static/` - 静态文件缓存
390
- - `logs/` - 日志文件
 
 
 
 
 
 
 
 
391
 
392
  ## 🛠️ 技术栈
393
 
 
22
 
23
  ## ✨ 功能特性
24
 
25
+ ### 核心功能
26
  - ✅ **OpenAI API 完全兼容** - 无缝对接现有工具
27
  - ✅ **流式响应支持** - 实时输出
28
  - ✅ **多模态支持** - 文本 + 图片输入
29
  - ✅ **图片生成 & 图生图** - 支持 `gemini-3-pro-preview` 模型
30
+
31
+ ### 多账户管理
32
  - ✅ **多账户负载均衡** - 支持多账户轮询,故障自动转移
33
+ - ✅ **智能熔断机制** - 账户连续失败自动熔断并冷却恢复
34
+ - ✅ **三层重试策略** - 新会话重试、请求重试、账户切换
35
+ - ✅ **智能会话复用** - 自动管理对话历史,缓存过期自动清理
36
+ - ✅ **在线配置管理** - Web界面编辑账户配置,实时生效
37
+
38
+ ### 系统功能
39
  - ✅ **JWT自动管理** - 无需手动刷新令牌
40
+ - 📊 **可视化管理面板** - 实时监控账户状态、过期时间、失败计数
41
+ - 📝 **公开日志系统** - 实时查看服务运行状态(内存最多3000条,自动淘汰)
42
+ - 🔐 **双重认证保护** - API_KEY 保护聊天接口,ADMIN_KEY 保护管理面板
43
 
44
  ## 📸 功能展示
45
 
 
156
  LOGO_URL=https://your-domain.com/logo.png
157
  CHAT_URL=https://your-chat-app.com
158
  MODEL_NAME=gemini-business
159
+
160
+ # 重试配置(可选)
161
+ MAX_NEW_SESSION_TRIES=5 # 新会话尝试账户数(默认5)
162
+ MAX_REQUEST_RETRIES=3 # 请求失败重试次数(默认3)
163
+ MAX_ACCOUNT_SWITCH_TRIES=5 # 每次重试查找账户次数(默认5)
164
+ ACCOUNT_FAILURE_THRESHOLD=3 # 账户失败阈值,达到后熔断(默认3)
165
+ ACCOUNT_COOLDOWN_SECONDS=300 # 账户冷却时间,秒(默认300=5分钟)
166
+ SESSION_CACHE_TTL_SECONDS=3600 # 会话缓存过期时间,秒(默认3600=1小时)
167
+ ```
168
+
169
+ ### 重试机制说明
170
+
171
+ 系统提供三层重试保护:
172
+
173
+ 1. **新会话创建重试**:创建新对话时,如果账户失败,自动切换到其他账户(最多尝试5个)
174
+ 2. **请求失败重试**:对话过程中出错,自动重试并切换账户(最多重试3次)
175
+ 3. **智能熔断机制**:
176
+ - 账户连续失败3次 → 自动标记为不可用
177
+ - 冷却5分钟后自动恢复
178
+ - JWT失败和请求失败都会触发熔断
179
  ```
180
 
181
  ### 多账户配置示例
 
235
 
236
  ### 访问端点
237
 
238
+ | 端点 | 方法 | 说明 |
239
+ | -------------------------------------- | ------ | --------------------------- |
240
+ | `/{PATH_PREFIX}/v1/models` | GET | 获取模型列表 |
241
+ | `/{PATH_PREFIX}/v1/chat/completions` | POST | 聊天接口(需API_KEY) |
242
+ | `/{PATH_PREFIX}/admin` | GET | 管理面板(需ADMIN_KEY) |
243
+ | `/{PATH_PREFIX}/admin/accounts` | GET | 获取账户状态(需ADMIN_KEY) |
244
+ | `/{PATH_PREFIX}/admin/accounts-config` | GET | 获取账户配置(需ADMIN_KEY) |
245
+ | `/{PATH_PREFIX}/admin/accounts-config` | PUT | 更新账户配置(需ADMIN_KEY) |
246
+ | `/{PATH_PREFIX}/admin/accounts/{id}` | DELETE | 删除指定账户(需ADMIN_KEY) |
247
+ | `/{PATH_PREFIX}/admin/log` | GET | 获取系统日志(需ADMIN_KEY) |
248
+ | `/{PATH_PREFIX}/admin/log` | DELETE | 清空系统日志(需ADMIN_KEY) |
249
+ | `/public/log/html` | GET | 公开日志页面(无需认证) |
250
+ | `/public/stats` | GET | 公开统计信息(无需认证) |
251
 
252
  **访问示例**:
253
 
 
332
 
333
  ## ❓ 常见问题
334
 
335
+ ### 1. 如何在线编辑账户配置?
336
+
337
+ 访问管理面板 `/{PATH_PREFIX}/admin?key=YOUR_ADMIN_KEY`,点击"编辑配置"按钮:
338
+ - ✅ 实时编辑 JSON 格式配置
339
+ - ✅ 保存后立即生效,无需重启
340
+ - ✅ 配置保存到 `accounts.json` 文件
341
+ - ⚠️ 重启后从环境变量 `ACCOUNTS_CONFIG` 重新加载
342
+
343
+ **建议**:在线修改后,同步更新环境变量 `ACCOUNTS_CONFIG`,避免重启后配置丢失。
344
+
345
+ ### 2. 账户熔断后如何恢复?
346
+
347
+ 账户连续失败3次后会自动熔断(标记为不可用):
348
+ - ⏰ 冷却期:5分钟(可通过 `ACCOUNT_COOLDOWN_SECONDS` 配置)
349
+ - 🔄 自动恢复:冷却期过后自动重新尝试
350
+ - ✅ 成功后:失败计数重置为0,账���恢复正常
351
+
352
+ 可在管理面板实时查看账户状态和失败计数。
353
+
354
+ ### 3. 图片生成后在哪里找到文件?
355
 
356
  - **临时存储**: 图片保存在 `./images/`,可通过 URL 访问
357
  - **重启后会丢失**,建议使用持久化存储
358
 
359
+ ### 4. 如何设置 BASE_URL?
360
 
361
  **自动检测**(推荐):
362
  - 不设置 `BASE_URL` 环境变量
 
393
 
394
  配置反向代理后,将 `BASE_URL` 设置为你的自定义域名即可。
395
 
396
+ ### 5. API_KEY 和 ADMIN_KEY 的区别?
397
 
398
  - **API_KEY**: 保护聊天接口 (`/v1/chat/completions`)
399
  - **ADMIN_KEY**: 保护管理面板 (`/admin`)
400
 
401
  可以设置相同的值,也可以分开
402
 
403
+ ### 6. 如何查看日志?
404
 
405
  - **公开日志**: 访问 `/public/log/html` (无需密钥)
406
  - **管理面板**: 访问 `/admin?key=YOUR_ADMIN_KEY`
407
 
408
+ 日志系统说明:
409
+ - 内存存储最多 3000 条日志
410
+ - 超过上限自动删除最旧的日志
411
+ - 重启后清空(内存存储)
412
+ - 可通过 API 手动清空日志
413
+
414
  ## 🔧 油猴脚本使用说明
415
 
416
  本项目提供油猴脚本辅助获取配置参数,使用前需要配置 TamperMonkey:
 
434
 
435
  ```
436
  gemini-business2api/
437
+ ├── main.py # 主程序入口
438
+ ├── core/ # 核心模块
439
+ │ ├── __init__.py
440
+ │ ├── auth.py # 认证装饰器
441
+ │ └── templates.py # HTML模板生成
442
  ├── util/ # 工具模块
443
+ │ └── streaming_parser.py # 流式JSON解析器
444
  ├── requirements.txt # Python依赖
445
+ ├── Dockerfile # Docker构建文件
446
  ├── README.md # 项目文档
447
  ├── .env.example # 环境变量配置示例
448
+ └── accounts_config.example.json # 多账户配置示例
 
449
  ```
450
 
451
+ **运行时生成的文件和目录**:
452
+ - `accounts.json` - 账户配置持久化文件(Web编辑后保存)
453
+ - `stats.json` - 统计数据(访问量、请求数等)
454
+ - `images/` - 生成的图片存储目录
455
+ - HF Pro: `/data/images`(持久化,重启不丢失)
456
+ - 其他环境: `./images`(临时存储,重启会丢失)
457
+
458
+ **日志系统**:
459
+ - 内存日志缓冲区:最多保存 3000 条日志
460
+ - 自动淘汰机制:超过上限自动删除最旧的日志(FIFO)
461
+ - 重启后清空:日志存储在内存中,重启后丢失
462
+ - 内存占用:约 450KB - 750KB(非常小,不会爆炸)
463
 
464
  ## 🛠️ 技术栈
465