ond / README.md
devme's picture
Upload 15 files
36b7c16 verified
|
raw
history blame
7.84 kB

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)

配置文件支持以下参数:

{
  "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

请求体:

{
  "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 账户

  2. 创建 Space

    • 点击 创建新的 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:
      {
        "accounts": [
          {"email": "你的邮箱[email protected]", "password": "你的密码1"},
          {"email": "你的邮箱[email protected]", "password": "你的密码2"}
        ]
      }
      
    • 添加 API_ACCESS_TOKEN Secret 设置自定义访问令牌
      • 如果不设置,将使用默认值 "sk-2api-ondemand-access-token-2025"
  5. 可选配置

    • 添加其他环境变量如 SESSION_TIMEOUT_MINUTESRATE_LIMIT
  6. 完成部署

    • Hugging Face 会自动构建 Docker 镜像并部署你的 API
    • 访问你的 Space URL(如 https://你的用户名-你的space名称.hf.space

本地部署

  1. 克隆代码

    git clone https://github.com/你的用户名/ondemand-api-proxy.git
    cd ondemand-api-proxy
    
  2. 安装依赖

    pip install -r requirements.txt
    
  3. 配置

    • 创建 config.json 文件:
      {
        "api_access_token": "你的自定义访问令牌",
        "accounts": [
          {"email": "账户[email protected]", "password": "密码1"},
          {"email": "账户[email protected]", "password": "密码2"}
        ]
      }
      
    • 或设置环境变量
  4. 启动服务

    python app.py
    
  5. 访问服务

    • API 接口:http://localhost:5000/v1/chat/completions
    • 统计面板:http://localhost:5000/

Docker 部署

# 构建镜像
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 许可证。