UStackUStack
FreeLLMAPI icon

FreeLLMAPI

FreeLLMAPI 提供 OpenAI 兼容代理,聚合约14家 LLM 免费级别密钥并自动切换;按 key 进行限流统计与加密存储,便于实验。

FreeLLMAPI

FreeLLMAPI 是什么?

FreeLLMAPI 是一个 OpenAI 兼容的代理服务器,将多家 LLM 提供商的免费额度接入统一 API 接口。只需将 OpenAI 兼容客户端指向代理,即可向单一端点发送请求,而无需配置各家 SDK 或处理不同限流。

该项目专为个人实验设计。它聚合约 14 家提供商的密钥(通过提供商适配器),将每个请求路由至可用模型,并在提供商限流或出错时自动切换。

主要特性

  • OpenAI 兼容端点:实现 POST /v1/chat/completionsGET /v1/models,只需更改 OpenAI SDK 或其他兼容客户端的 base_url 即可使用。
  • 流式支持:当 stream: true 时,服务器使用 Server-Sent Events (SSE) 返回响应;否则返回标准 JSON 响应。
  • 工具调用直通:支持 OpenAI 风格的 tools / tool_choice 请求,并将助手 tool_calls 及后续 tool 角色消息转发至提供商适配器。
  • 自动切换与重试:若选中提供商返回 4295xx 或超时,路由器将该密钥标记为临时不可用,并沿回退链重试下一个提供商(最多 20 次)。
  • 按密钥追踪使用量:针对每个 (platform, model, key) 追踪 RPM, RPD, TPM, 和 TPD,选择未达免费额度上限的密钥。
  • 粘性多轮路由:对话保持在同一模型 30 分钟,减少中途切换。
  • 加密密钥存储:使用 AES-256-GCM 加密上游提供商密钥后存入 SQLite;使用前在内存中解密。
  • 统一代理认证:客户端使用单一 freellmapi-... bearer 令牌认证代理,而非上游提供商密钥。
  • 健康检查与管理控制:定期探测将密钥标记为健康/限流/无效/错误;内置管理面板(React + Vite)可管理密钥、重排序回退优先级、查看分析并运行提示 playground。

如何使用 FreeLLMAPI

  1. 安装依赖:使用 Node.js 20+npm
  2. 克隆并安装
    • git clone https://github.com/tashfeenahmed/freellmapi.git
    • cd freellmapi
    • npm install
  3. 设置环境配置
    • 复制示例 env:cp .env.example .env
    • 生成 ENCRYPTION_KEY 并置入 .env(仓库提供命令输出随机 32 字节十六进制密钥)。
  4. 启动代理:按仓库 quick start / README 所述运行服务器(页面摘录包含设置步骤,仓库文档详述确切启动命令)。
  5. 配置 OpenAI 兼容客户端
    • 将客户端 base_url 设置为本地 FreeLLMAPI 服务器。
    • 使用代理 bearer 令牌(freellmapi-...)认证并调用 POST /v1/chat/completions(可选 stream: true)。

使用场景

  • 跨提供商单代码库聊天测试:将现有 OpenAI 兼容应用(或库)指向代理,即可实验多种模型,无需管理各家 SDK。
  • 减少手动限流失败:利用自动切换跳过返回 429/5xx/超时的提供商,按配置回退顺序继续请求下一个可用模型。
  • 工具使用聊天流程:运行 OpenAI 风格工具调用请求,tool_calls 和工具结果消息通过同一代理流程路由。
  • 长对话一致性:活跃使用中保持聊天会话在同一模型(粘性会话 30 分钟),提供商不可用时仍享回退。
  • 本地实验加密密钥处理:代理内集中上游密钥并静态加密存储,客户端应用无需暴露提供商密钥。

常见问题

  • FreeLLMAPI 支持完整 OpenAI API 吗? 不支持。该项目专注聊天补全和模型列表(/v1/chat/completions/v1/models)。嵌入、图像、音频/语音、多模态输入均不支持,遗留 /v1/completions、审核及多补全亦然。

  • FreeLLMAPI 如何处理限流? 追踪按密钥使用计数器(RPM/RPD/TPM/TPD),选择未达上限的密钥。若提供商仍返回 429(或 5xx/超时),路由器沿回退链重试下一个提供商。

  • 流式传输与我的客户端兼容吗? 是。聊天端点 stream: true 时代理支持 SSE 流式传输。

  • 能用现有 OpenAI 兼容库吗? 代理旨在与官方 OpenAI SDK 和其他兼容客户端配合,只需指向代理 base_url

  • 适合生产使用吗? 仓库明确声明“仅供个人实验”。

替代方案

  • 直接使用单一提供商:许多服务提供自家 API,语义一致,但无法获得多提供商聚合、自动切换或免费额度叠加至单一端点。
  • 自建路由/回退层:自定义代理可实现切换和密钥轮换,但需自行管理各提供商专用 SDK、限额及错误处理。
  • 使用支持多 LLM 后端的编排框架:某些工具可在不同模型提供商间路由请求,但工作流可能不同(且可能不提供此处所述的 OpenAI 兼容 /v1/chat/completions 代理行为)。
  • 手动切换密钥和模型:可在应用中手动选择提供商,但会丢失 FreeLLMAPI 提供的自动重试/切换及按密钥限流跟踪功能。
FreeLLMAPI | UStack