CoolFace
Apppublic

xfvsdf/qqbot

sourceHugging Faceupdated 11mo agoView on Hugging Face
0likes
README.md841 linesDownload Raw Back to root
1# GeminiCLI to API2 3**将 GeminiCLI 转换为 OpenAI 和 GEMINI API 接口**4 5[English](docs/README_EN.md) | 中文6 7## 🚀 快速部署8 9[![Deploy on Zeabur](https://zeabur.com/button.svg)](https://zeabur.com/templates/2QLQC2?referralCode=su-kaka)10---11 12## ⚠️ 许可证声明13 14**本项目采用 Cooperative Non-Commercial License (CNC-1.0)**15 16这是一个反商业化的严格开源协议,详情请查看 [LICENSE](LICENSE) 文件。17 18### ✅ 允许的用途:19- 个人学习、研究、教育用途20- 非营利组织使用21- 开源项目集成(需遵循相同协议)22- 学术研究和论文发表23 24### ❌ 禁止的用途:25- 任何形式的商业使用26- 年收入超过100万美元的企业使用27- 风投支持或公开交易的公司使用  28- 提供付费服务或产品29- 商业竞争用途30 31---32 33## 控制面板演示网址:https://gcli2api-9xbf.onrender.com 密码:pwd34 35## 核心功能36 37### 🔄 API 端点和格式支持38 39**多端点双格式支持**40- **OpenAI 兼容端点**:`/v1/chat/completions` 和 `/v1/models`41  - 支持标准 OpenAI 格式(messages 结构)42  - 支持 Gemini 原生格式(contents 结构)43  - 自动格式检测和转换,无需手动切换44  - 支持多模态输入(文本 + 图像)45- **Gemini 原生端点**:`/v1/models/{model}:generateContent` 和 `streamGenerateContent`46  - 支持完整的 Gemini 原生 API 规范47  - 多种认证方式:Bearer Token、x-goog-api-key 头部、URL 参数 key48 49### 🔐 认证和安全管理50 51**灵活的密码管理**52- **分离密码支持**:API 密码(聊天端点)和控制面板密码可独立设置53- **多种认证方式**:支持 Authorization Bearer、x-goog-api-key 头部、URL 参数等54- **JWT Token 认证**:控制面板支持 JWT 令牌认证55- **用户邮箱获取**:自动获取和显示 Google 账户邮箱地址56 57### 📊 智能凭证管理系统58 59**高级凭证管理**60- 多个 Google OAuth 凭证自动轮换61- 通过冗余认证增强稳定性62- 负载均衡与并发请求支持63- 自动故障检测和凭证禁用64- 凭证使用统计和配额管理65- 支持手动启用/禁用凭证文件66- 批量凭证文件操作(启用、禁用、删除)67 68**凭证状态监控**69- 实时凭证健康检查70- 错误码追踪(429、403、500 等)71- 自动封禁机制(可配置)72- 凭证轮换策略(基于调用次数)73- 使用统计和配额监控74 75### 🌊 流式传输和响应处理76 77**多种流式支持**78- 真正的实时流式响应79- 假流式模式(用于兼容性)80- 流式抗截断功能(防止回答被截断)81- 异步任务管理和超时处理82 83**响应优化**84- 思维链(Thinking)内容分离85- 推理过程(reasoning_content)处理86- 多轮对话上下文管理87- 兼容性模式(将 system 消息转换为 user 消息)88 89### 🎛️ Web 管理控制台90 91**全功能 Web 界面**92- OAuth 认证流程管理93- 凭证文件上传、下载、管理94- 实时日志查看(WebSocket)95- 系统配置管理96- 使用统计和监控面板97- 移动端适配界面98 99**批量操作支持**100- ZIP 文件批量上传凭证101- 批量启用/禁用/删除凭证102- 批量获取用户邮箱103- 批量配置管理104 105### 📈 使用统计和监控106 107**详细使用统计**108- 按凭证文件统计调用次数109- Gemini 2.5 Pro 模型专项统计110- 每日配额管理(UTC+7 重置)111- 聚合统计和分析112- 自定义每日限制配置113 114**实时监控**115- WebSocket 实时日志流116- 系统状态监控117- 凭证健康状态118- API 调用成功率统计119 120### 🔧 高级配置和自定义121 122**网络和代理配置**123- HTTP/HTTPS 代理支持124- 代理端点配置(OAuth、Google APIs、元数据服务)125- 超时和重试配置126- 网络错误处理和恢复127 128**性能和稳定性配置**129- 429 错误自动重试(可配置间隔和次数)130- 抗截断最大重试次数131- 凭证轮换策略132- 并发请求管理133 134**日志和调试**135- 多级日志系统(DEBUG、INFO、WARNING、ERROR)136- 日志文件管理137- 实时日志流138- 日志下载和清空139 140### 🔄 环境变量和配置管理141 142**灵活的配置方式**143- TOML 配置文件支持144- 环境变量配置145- 热配置更新(部分配置项)146- 配置锁定(环境变量优先级)147 148**环境变量凭证支持**149- `GCLI_CREDS_*` 格式环境变量导入150- 自动加载环境变量凭证151- Base64 编码凭证支持152- Docker 容器友好153 154## 支持的模型155 156所有模型均具备 1M 上下文窗口容量。每个凭证文件提供 1000 次请求额度。157 158### 🤖 基础模型159- `gemini-2.5-pro`160- `gemini-2.5-pro-preview-06-05`  161- `gemini-2.5-pro-preview-05-06`162 163### 🧠 思维模型(Thinking Models)164- `gemini-2.5-pro-maxthinking`:最大思考预算模式165- `gemini-2.5-pro-nothinking`:无思考模式166- 支持自定义思考预算配置167- 自动分离思维内容和最终回答168 169### 🔍 搜索增强模型170- `gemini-2.5-pro-search`:集成搜索功能的模型171 172### 🌊 特殊功能变体173- **假流式模式**:在任何模型名称后添加 `-假流式` 后缀174  - 例:`gemini-2.5-pro-假流式`175  - 用于需要流式响应但服务端不支持真流式的场景176- **流式抗截断模式**:在模型名称前添加 `流式抗截断/` 前缀177  - 例:`流式抗截断/gemini-2.5-pro`  178  - 自动检测响应截断并重试,确保完整回答179 180### 🔧 模型功能自动检测181- 系统自动识别模型名称中的功能标识182- 透明地处理功能模式转换183- 支持功能组合使用184 185---186 187## 安装指南188 189### Termux 环境190 191**初始安装**192```bash193curl -o termux-install.sh "https://raw.githubusercontent.com/su-kaka/gcli2api/refs/heads/master/termux-install.sh" && chmod +x termux-install.sh && ./termux-install.sh194```195 196**重启服务**197```bash198cd gcli2api199bash termux-start.sh200```201 202### Windows 环境203 204**初始安装**205```powershell206iex (iwr "https://raw.githubusercontent.com/su-kaka/gcli2api/refs/heads/master/install.ps1" -UseBasicParsing).Content207```208 209**重启服务**210双击执行 `start.bat`211 212### Linux 环境213 214**初始安装**215```bash216curl -o install.sh "https://raw.githubusercontent.com/su-kaka/gcli2api/refs/heads/master/install.sh" && chmod +x install.sh && ./install.sh217```218 219**重启服务**220```bash221cd gcli2api222bash start.sh223```224 225### macOS 环境226 227**初始安装**228```bash229curl -o darwin-install.sh "https://raw.githubusercontent.com/su-kaka/gcli2api/refs/heads/master/darwin-install.sh" && chmod +x darwin-install.sh && ./darwin-install.sh230```231 232**重启服务**233```bash234cd gcli2api235bash start.sh236```237 238### Docker 环境239 240**Docker 运行命令**241```bash242# 使用通用密码243docker run -d --name gcli2api --network host -e PASSWORD=pwd -e PORT=7861 -v $(pwd)/data/creds:/app/creds ghcr.io/su-kaka/gcli2api:latest244 245# 使用分离密码246docker run -d --name gcli2api --network host -e API_PASSWORD=api_pwd -e PANEL_PASSWORD=panel_pwd -e PORT=7861 -v $(pwd)/data/creds:/app/creds ghcr.io/su-kaka/gcli2api:latest247```248 249**Docker Compose 运行命令**2501. 将以下内容保存为 `docker-compose.yml` 文件:251    ```yaml252    version: '3.8'253 254    services:255      gcli2api:256        image: ghcr.io/su-kaka/gcli2api:latest257        container_name: gcli2api258        restart: unless-stopped259        network_mode: host260        environment:261          # 使用通用密码(推荐用于简单部署)262          - PASSWORD=pwd263          - PORT=7861264          # 或使用分离密码(推荐用于生产环境)265          # - API_PASSWORD=your_api_password266          # - PANEL_PASSWORD=your_panel_password267        volumes:268          - ./data/creds:/app/creds269        healthcheck:270          test: ["CMD-SHELL", "python -c \"import sys, urllib.request, os; port = os.environ.get('PORT', '7861'); req = urllib.request.Request(f'http://localhost:{port}/v1/models', headers={'Authorization': 'Bearer ' + os.environ.get('PASSWORD', 'pwd')}); sys.exit(0 if urllib.request.urlopen(req, timeout=5).getcode() == 200 else 1)\""]271          interval: 30s272          timeout: 10s273          retries: 3274          start_period: 40s275    ```2762. 启动服务:277    ```bash278    docker-compose up -d279    ```280 281---282 283## ⚠️ 注意事项284 285- 当前 OAuth 验证流程**仅支持本地主机(localhost)访问**,即须通过 `http://127.0.0.1:7861/auth` 完成认证(默认端口 7861,可通过 PORT 环境变量修改)。286- **如需在云服务器或其他远程环境部署,请先在本地运行服务并完成 OAuth 验证,获得生成的 json 凭证文件(位于 `./geminicli/creds` 目录)后,再在auth面板将该文件上传即可。**287- **请严格遵守使用限制,仅用于个人学习和非商业用途**288 289---290 291## 配置说明292 2931. 访问 `http://127.0.0.1:7861/auth` (默认端口,可通过 PORT 环境变量修改)2942. 完成 OAuth 认证流程(默认密码:`pwd`,可通过环境变量修改)2953. 配置客户端:296 297**OpenAI 兼容客户端:**298   - **端点地址**:`http://127.0.0.1:7861/v1`299   - **API 密钥**:`pwd`(默认值,可通过 API_PASSWORD 或 PASSWORD 环境变量修改)300 301**Gemini 原生客户端:**302   - **端点地址**:`http://127.0.0.1:7861`303   - **认证方式**:304     - `Authorization: Bearer your_api_password`305     - `x-goog-api-key: your_api_password` 306     - URL 参数:`?key=your_api_password`307 308## 💾 分布式存储模式309 310### 🌟 存储后端优先级311 312gcli2api 支持多种存储后端,按优先级自动选择:**Redis > Postgres > MongoDB > 本地文件**313 314### ⚡ Redis 分布式存储模式315 316### ⚙️ 启用 Redis 模式317 318**步骤 1: 配置 Redis 连接**319```bash320# 本地 Redis321export REDIS_URI="redis://localhost:6379"322 323# 带密码的 Redis324export REDIS_URI="redis://:password@localhost:6379"325 326# SSL 连接(推荐生产环境)327export REDIS_URI="rediss://default:password@host:6380"328 329# Upstash Redis(免费云服务)330export REDIS_URI="rediss://default:token@your-host.upstash.io:6379"331 332# 可选:自定义数据库索引(默认: 0)333export REDIS_DATABASE="1"334```335 336**步骤 2: 启动应用**337```bash338# 应用会自动检测 Redis 配置并优先使用 Redis 存储339python web.py340```341 342### 🐘 Postgres 分布式存储模式343 344如果未配置 Redis,或者你希望使用关系型数据库作为主要存储方案,gcli2api 也支持 Postgres(位于 Redis 之后,优先于 MongoDB)。345 346⚙️ 启用 Postgres 模式347 348步骤 1: 配置 Postgres 连接349```bash350# 使用标准 DSN(示例)351export POSTGRES_DSN="postgresql://user:password@localhost:5432/gcli2api"352 353# 也可以使用 socket 或其他 DSN 格式,取决于你的部署方式354```355 356步骤 2: 启动应用357```bash358# 应用会自动检测 POSTGRES_DSN 并在 Redis 未启用时优先使用 Postgres 存储359python web.py360```361 362### 🍃 MongoDB 分布式存储模式363 364### 🌟 备选存储方案365 366如果未配置 Redis,gcli2api 将尝试使用 **MongoDB 存储模式**,367 368### ⚙️ 启用 MongoDB 模式369 370**步骤 1: 配置 MongoDB 连接**371```bash372# 本地 MongoDB373export MONGODB_URI="mongodb://localhost:27017"374 375# MongoDB Atlas 云服务376export MONGODB_URI="mongodb+srv://username:password@cluster.mongodb.net"377 378# 带认证的 MongoDB379export MONGODB_URI="mongodb://admin:password@localhost:27017/admin"380 381# 可选:自定义数据库名称(默认: gcli2api)382export MONGODB_DATABASE="my_gcli_db"383```384 385**步骤 2: 启动应用**386```bash387# 应用会自动检测 MongoDB 配置并使用 MongoDB 存储388python web.py389```390 391**Docker 环境使用 MongoDB**392```bash393# 单机 MongoDB 部署394docker run -d --name gcli2api \395  -e MONGODB_URI="mongodb://mongodb:27017" \396  -e API_PASSWORD=your_password \397  --network your_network \398  ghcr.io/su-kaka/gcli2api:latest399 400# 使用 MongoDB Atlas401docker run -d --name gcli2api \402  -e MONGODB_URI="mongodb+srv://user:pass@cluster.mongodb.net/gcli2api" \403  -e API_PASSWORD=your_password \404  -p 7861:7861 \405  ghcr.io/su-kaka/gcli2api:latest406```407 408**Docker Compose 示例**409```yaml410version: '3.8'411 412services:413  mongodb:414    image: mongo:7415    container_name: gcli2api-mongodb416    restart: unless-stopped417    environment:418      MONGO_INITDB_ROOT_USERNAME: admin419      MONGO_INITDB_ROOT_PASSWORD: password123420    volumes:421      - mongodb_data:/data/db422    ports:423      - "27017:27017"424 425  gcli2api:426    image: ghcr.io/su-kaka/gcli2api:latest427    container_name: gcli2api428    restart: unless-stopped429    depends_on:430      - mongodb431    environment:432      - MONGODB_URI=mongodb://admin:password123@mongodb:27017/admin433      - MONGODB_DATABASE=gcli2api434      - API_PASSWORD=your_api_password435      - PORT=7861436    ports:437      - "7861:7861"438 439volumes:440  mongodb_data:441```442 443 444### 🔧 高级配置445 446**MongoDB 连接优化**447```bash448# 连接池和超时配置449export MONGODB_URI="mongodb://localhost:27017?maxPoolSize=10&serverSelectionTimeoutMS=5000"450 451# 副本集配置452export MONGODB_URI="mongodb://host1:27017,host2:27017,host3:27017/gcli2api?replicaSet=myReplicaSet"453 454# 读写分离配置455export MONGODB_URI="mongodb://localhost:27017/gcli2api?readPreference=secondaryPreferred"456```457 458## 🏗️ 技术架构459 460### 核心模块说明461 462**认证和凭证管理** (`src/auth.py`, `src/credential_manager.py`)463- OAuth 2.0 认证流程管理464- 多凭证文件状态管理和轮换465- 自动故障检测和恢复466- JWT 令牌生成和验证467 468**API 路由和转换** (`src/openai_router.py`, `src/gemini_router.py`, `src/openai_transfer.py`)469- OpenAI 和 Gemini 格式双向转换470- 多模态输入处理(文本+图像)471- 思维链内容分离和处理472- 流式响应管理473 474**网络和代理** (`src/httpx_client.py`, `src/google_chat_api.py`)475- 统一 HTTP 客户端管理476- 代理配置和热更新支持477- 超时和重试策略478- 异步请求池管理479 480**状态管理** (`src/state_manager.py`, `src/usage_stats.py`)481- 原子化状态操作482- 使用统计和配额管理483- 文件锁和并发安全484- 数据持久化(TOML 格式)485 486**任务管理** (`src/task_manager.py`)487- 全局异步任务生命周期管理488- 资源清理和内存管理489- 优雅关闭和异常处理490 491**Web 控制台** (`src/web_routes.py`)492- RESTful API 端点493- WebSocket 实时通信494- 移动端适配检测495- 批量操作支持496 497### 高级特性实现498 499**流式抗截断机制** (`src/anti_truncation.py`)500- 检测响应截断模式501- 自动重试和状态恢复502- 上下文连接管理503 504**格式检测和转换** (`src/format_detector.py`)505- 自动检测请求格式(OpenAI vs Gemini)506- 无缝格式转换507- 参数映射和验证508 509**用户代理模拟** (`src/utils.py`)510- GeminiCLI 格式用户代理生成511- 平台检测和客户端元数据512- API 兼容性保证513 514### 环境变量配置515 516**基础配置**517- `PORT`: 服务端口(默认:7861)518- `HOST`: 服务器监听地址(默认:0.0.0.0)519 520**密码配置**521- `API_PASSWORD`: 聊天 API 访问密码(默认:继承 PASSWORD 或 pwd)522- `PANEL_PASSWORD`: 控制面板访问密码(默认:继承 PASSWORD 或 pwd)  523- `PASSWORD`: 通用密码,设置后覆盖上述两个(默认:pwd)524 525**性能和稳定性配置**526- `CALLS_PER_ROTATION`: 每个凭证轮换前的调用次数(默认:10)527- `RETRY_429_ENABLED`: 启用 429 错误自动重试(默认:true)528- `RETRY_429_MAX_RETRIES`: 429 错误最大重试次数(默认:3)529- `RETRY_429_INTERVAL`: 429 错误重试间隔,秒(默认:1.0)530- `ANTI_TRUNCATION_MAX_ATTEMPTS`: 抗截断最大重试次数(默认:3)531 532**网络和代理配置**533- `PROXY`: HTTP/HTTPS 代理地址(格式:`http://host:port`)534- `OAUTH_PROXY_URL`: OAuth 认证代理端点535- `GOOGLEAPIS_PROXY_URL`: Google APIs 代理端点536- `METADATA_SERVICE_URL`: 元数据服务代理端点537 538**自动化配置**539- `AUTO_BAN`: 启用凭证自动封禁(默认:true)540- `AUTO_LOAD_ENV_CREDS`: 启动时自动加载环境变量凭证(默认:false)541 542**兼容性配置**543- `COMPATIBILITY_MODE`: 启用兼容性模式,将 system 消息转为 user 消息(默认:false)544 545**日志配置**546- `LOG_LEVEL`: 日志级别(DEBUG/INFO/WARNING/ERROR,默认:INFO)547- `LOG_FILE`: 日志文件路径(默认:gcli2api.log)548 549**存储配置(按优先级)**550 551**Redis 配置(最高优先级)**552- `REDIS_URI`: Redis 连接字符串(设置后启用 Redis 模式)553  - 本地:`redis://localhost:6379`554  - 带密码:`redis://:password@host:6379`555  - SSL:`rediss://default:password@host:6380`556- `REDIS_DATABASE`: Redis 数据库索引(0-15,默认:0)557 558**MongoDB 配置(第二优先级)**559- `MONGODB_URI`: MongoDB 连接字符串(设置后启用 MongoDB 模式)560- `MONGODB_DATABASE`: MongoDB 数据库名称(默认:gcli2api)561 562**凭证配置**563 564支持使用 `GCLI_CREDS_*` 环境变量导入多个凭证:565 566#### 凭证环境变量使用示例567 568**方式 1:编号格式**569```bash570export GCLI_CREDS_1='{"client_id":"your-client-id","client_secret":"your-secret","refresh_token":"your-token","token_uri":"https://oauth2.googleapis.com/token","project_id":"your-project"}'571export GCLI_CREDS_2='{"client_id":"...","project_id":"..."}'572```573 574**方式 2:项目名格式**575```bash576export GCLI_CREDS_myproject='{"client_id":"...","project_id":"myproject",...}'577export GCLI_CREDS_project2='{"client_id":"...","project_id":"project2",...}'578```579 580**启用自动加载**581```bash582export AUTO_LOAD_ENV_CREDS=true  # 程序启动时自动导入环境变量凭证583```584 585**Docker 使用示例**586```bash587# 使用通用密码588docker run -d --name gcli2api \589  -e PASSWORD=mypassword \590  -e PORT=8080 \591  -e GOOGLE_CREDENTIALS="$(cat credential.json | base64 -w 0)" \592  ghcr.io/su-kaka/gcli2api:latest593 594# 使用分离密码595docker run -d --name gcli2api \596  -e API_PASSWORD=my_api_password \597  -e PANEL_PASSWORD=my_panel_password \598  -e PORT=8080 \599  -e GOOGLE_CREDENTIALS="$(cat credential.json | base64 -w 0)" \600  ghcr.io/su-kaka/gcli2api:latest601```602 603注意:当设置了凭证环境变量时,系统将优先使用环境变量中的凭证,忽略 `creds` 目录中的文件。604 605### API 使用方式606 607本服务支持两套完整的 API 端点:608 609#### 1. OpenAI 兼容端点610 611**端点:** `/v1/chat/completions`  612**认证:** `Authorization: Bearer your_api_password`613 614支持两种请求格式,会自动检测并处理:615 616**OpenAI 格式:**617```json618{619  "model": "gemini-2.5-pro",620  "messages": [621    {"role": "system", "content": "You are a helpful assistant"},622    {"role": "user", "content": "Hello"}623  ],624  "temperature": 0.7,625  "stream": true626}627```628 629**Gemini 原生格式:**630```json631{632  "model": "gemini-2.5-pro",633  "contents": [634    {"role": "user", "parts": [{"text": "Hello"}]}635  ],636  "systemInstruction": {"parts": [{"text": "You are a helpful assistant"}]},637  "generationConfig": {638    "temperature": 0.7639  }640}641```642 643#### 2. Gemini 原生端点644 645**非流式端点:** `/v1/models/{model}:generateContent`  646**流式端点:** `/v1/models/{model}:streamGenerateContent`  647**模型列表:** `/v1/models`648 649**认证方式(任选一种):**650- `Authorization: Bearer your_api_password`651- `x-goog-api-key: your_api_password`  652- URL 参数:`?key=your_api_password`653 654**请求示例:**655```bash656# 使用 x-goog-api-key 头部657curl -X POST "http://127.0.0.1:7861/v1/models/gemini-2.5-pro:generateContent" \658  -H "x-goog-api-key: your_api_password" \659  -H "Content-Type: application/json" \660  -d '{661    "contents": [662      {"role": "user", "parts": [{"text": "Hello"}]}663    ]664  }'665 666# 使用 URL 参数667curl -X POST "http://127.0.0.1:7861/v1/models/gemini-2.5-pro:streamGenerateContent?key=your_api_password" \668  -H "Content-Type: application/json" \669  -d '{670    "contents": [671      {"role": "user", "parts": [{"text": "Hello"}]}672    ]673  }'674```675 676**Gemini 原生banana:**677```python678from io import BytesIO679from PIL import Image680from google.genai import Client681from google.genai.types import HttpOptions682from google.genai import types683# The client gets the API key from the environment variable `GEMINI_API_KEY`.684 685client = Client(686            api_key="pwd",687            http_options=HttpOptions(base_url="http://127.0.0.1:7861"),688        )689 690prompt = (691    """692    画一只猫693    """694)695 696response = client.models.generate_content(697    model="gemini-2.5-flash-image",698    contents=[prompt],699    config=types.GenerateContentConfig(700        image_config=types.ImageConfig(701            aspect_ratio="16:9",702        )703    )704)705for part in response.candidates[0].content.parts:706    if part.text is not None:707        print(part.text)708    elif part.inline_data is not None:709        image = Image.open(BytesIO(part.inline_data.data))710        image.save("generated_image.png")711 712```713 714**说明:**715- OpenAI 端点返回 OpenAI 兼容格式716- Gemini 端点返回 Gemini 原生格式717- 两种端点使用相同的 API 密码718 719## 📋 完整 API 参考720 721### Web 控制台 API722 723**认证端点**724- `POST /auth/login` - 用户登录725- `POST /auth/start` - 开始 OAuth 认证726- `POST /auth/callback` - 处理 OAuth 回调727- `GET /auth/status/{project_id}` - 检查认证状态728 729**凭证管理端点**730- `GET /creds/status` - 获取所有凭证状态731- `POST /creds/action` - 单个凭证操作(启用/禁用/删除)732- `POST /creds/batch-action` - 批量凭证操作733- `POST /auth/upload` - 批量上传凭证文件(支持 ZIP)734- `GET /creds/download/{filename}` - 下载凭证文件735- `GET /creds/download-all` - 打包下载所有凭证736- `POST /creds/fetch-email/{filename}` - 获取用户邮箱737- `POST /creds/refresh-all-emails` - 批量刷新用户邮箱738 739**配置管理端点**740- `GET /config/get` - 获取当前配置741- `POST /config/save` - 保存配置742 743**环境变量凭证端点**744- `POST /auth/load-env-creds` - 加载环境变量凭证745- `DELETE /auth/env-creds` - 清除环境变量凭证746- `GET /auth/env-creds-status` - 获取环境变量凭证状态747 748**日志管理端点**749- `POST /auth/logs/clear` - 清空日志750- `GET /auth/logs/download` - 下载日志文件751- `WebSocket /auth/logs/stream` - 实时日志流752 753**使用统计端点**754- `GET /usage/stats` - 获取使用统计755- `GET /usage/aggregated` - 获取聚合统计756- `POST /usage/update-limits` - 更新使用限制757- `POST /usage/reset` - 重置使用统计758 759### 聊天 API 功能特性760 761**多模态支持**762```json763{764  "model": "gemini-2.5-pro",765  "messages": [766    {767      "role": "user",768      "content": [769        {"type": "text", "text": "描述这张图片"},770        {771          "type": "image_url",772          "image_url": {773            "url": "data:image/jpeg;base64,/9j/4AAQSkZJRgABA..."774          }775        }776      ]777    }778  ]779}780```781 782**思维模式支持**783```json784{785  "model": "gemini-2.5-pro-maxthinking",786  "messages": [787    {"role": "user", "content": "复杂数学问题"}788  ]789}790```791 792响应将包含分离的思维内容:793```json794{795  "choices": [{796    "message": {797      "role": "assistant",798      "content": "最终答案",799      "reasoning_content": "详细的思考过程..."800    }801  }]802}803```804 805**流式抗截断使用**806```json807{808  "model": "流式抗截断/gemini-2.5-pro",809  "messages": [810    {"role": "user", "content": "写一篇长文章"}811  ],812  "stream": true813}814```815 816**兼容性模式**817```bash818# 启用兼容性模式819export COMPATIBILITY_MODE=true820```821此模式下,所有 `system` 消息会转换为 `user` 消息,提高与某些客户端的兼容性。822 823---824 825## 支持项目826 827如果这个项目对您有帮助,欢迎支持项目的持续发展!828 829详细捐赠信息请查看:[📖 捐赠说明文档](docs/DONATE.md)830 831---832 833## 许可证与免责声明834 835本项目仅供学习和研究用途。使用本项目表示您同意:836- 不将本项目用于任何商业用途837- 承担使用本项目的所有风险和责任838- 遵守相关的服务条款和法律法规839 840项目作者对因使用本项目而产生的任何直接或间接损失不承担责任。841