FreeLLMAPI:在一个兼容 OpenAI 的端点后堆叠 16 个免费 LLM 层

将 Google、Groq、Cerebras、Mistral、NVIDIA、OpenRouter 以及更多免费层聚合到单一代理中。~1.7B 令牌/月。Docker 安装,Claude Code 集成,工具调用,流式传输,回退链。

  • 更新于 2026-06-22

FreeLLMAPI:在一个 OpenAI 兼容端点后面堆叠 16 个免费 LLM 层 #

TL;DR — FreeLLMAPI 在单个“/v1/chat/completions”端点后面聚合了 16 个以上 LLM 提供商(Google Gemini、Groq、Cerebras、Mistral、NVIDIA、OpenRouter、GitHub Models、Cohere、Cloudflare、HuggingFace、Z.ai、Ollama Cloud、Kilo、Pollinations、LLM7、OVH)的免费层级。 合计起来,它们每月产生大约 17 亿代币的工作推理能力。 通过 Docker 在一个命令中进行安装,添加您的提供商密钥,并将任何 OpenAI 兼容客户端指向您的本地服务器。

什么是 FreeLLMAPI? #

现在每个主要的人工智能实验室都提供免费套餐——每月几百万个代币,每天几千个请求。 每层本身都是一个玩具。 将它们叠加在一起,总计大约每月 17 亿个代币的工作推理能力,涵盖 100 多个模型,从小而快速到功能相当强大。

问题在于,手动堆叠它们非常痛苦:十七个不同的 SDK、十七个不同的速率限制、十七个请求可能失败的地方。 FreeLLMAPI 将其折叠为一个 OpenAI 兼容端点。 将任何 OpenAI 客户端库指向您的本地服务器,它就会在您为其添加密钥的任何提供商之间透明地路由。

FreeLLMAPI 由 Tashfeen Ahmed 构建,是一个带有 React 管理仪表板的自托管 Node.js 代理 (TypeScript/Express)。 它支持:

  • OpenAI 聊天完成 API (/v1/chat/completions)
  • Anthropic Messages API (/v1/messages) — 与 Claude Code 一起使用
  • 响应 API (/v1/responses) — 用于 Codex CLI
  • 图像生成(/v1/images/ Generations
  • 文本转语音(/v1/audio/speech
  • 具有往返多步骤流程的工具调用
  • 嵌入基于家庭的路由
  • 流式和非流式响应
  • 429/5xx/超时自动故障转移
  • SQLite 中的 AES-256-GCM 加密密钥存储

GitHub: tashfeenahmed/freellmapi · 星星: 11,381+ · 许可证: MIT · 语言: TypeScript

支持的提供商 #

FreeLLMAPI 目前支持 16 个免费提供商和 100 多个模型:

供应商主要型号速率限制
谷歌人工智能Gemini 2.5 Flash、3.x 预览约 30 转/分
格罗克骆驼 3.3 70B、骆驼 4、GPT-OSS、Qwen3约 40 转/分
大脑Qwen3 235B快速推理
米斯特拉尔大 3、中 3.5、Codestral、Devstral约 60 转/分钟
开放路由器21 个免费模式变化
GitHub 模型GPT-4.1、GPT-4o~10K 代币/天
Cloudflare Workers AIKimi K2、GLM-4.7、GPT-OSS、花岗岩 4约 40 转/分
连贯命令 R+、命令-A约 15 转/分
Z.ai(智浦)GLM-4.5、GLM-4.7 闪存变化
NVIDIA NIM40 RPM 免费(仅限评估服务条款)约 40 转/分
拥抱脸路由器、DeepSeek V4、Kimi K2.6、Qwen3变化
奥拉玛云GLM-4.7、Kimi K2、gpt-oss、Qwen3变化
基洛网关:免费航线匿名 好
授粉GPT-OSS 20B匿名 好
法学硕士7GPT-OSS、Llama 3.1、GLM匿名 好
OVH AI 端点Qwen3.5 397B、GPT-OSS、Llama 3.3匿名 好
OpenCode ZenDeepSeek V4 闪存、Nelotron促销期

再加上一个自定义提供程序 - 从“密钥”页面指向任何 OpenAI 兼容端点(llama.cpp、LM Studio、vLLM、本地 Ollama 或远程网关)。

安装 #

单线(Docker) #

最快的路径是设置所有内容的单个命令:

卷曲-fsSL https://freellmapi.co/install.sh | 巴什

这将创建“~/freellmapi”,生成加密密钥,拉取 Docker 映像,并在端口 3001 上启动容器。重新运行是安全的 - 您的“.env”和加密密钥将被保留。

Docker Compose(手动) #

git 克隆 https://github.com/tashfeenahmed/freellmapi.git
cd freellmapi

# 生成静态密钥存储的加密密钥
ENCRYPTION_KEY =“$(openssl rand -hex 32)”
printf "ENCRYPTION_KEY=%s\nPORT=3001\n" "$ENCRYPTION_KEY" > .env

docker 组成-d

打开“http://localhost:3001”,在 Keys 页面上添加您的提供程序密钥,重新排序 Fallback Chain 以进行尝试,并从 Keys 页面标题中获取统一的 API 密钥。

本地发展 #

git 克隆 https://github.com/tashfeenahmed/freellmapi.git
cd freellmapi
npm 安装
cp .env.example .env
ENCRYPTION_KEY="$(node -e 'console.log(require("crypto").randomBytes(32).toString("hex"))')"
printf "ENCRYPTION_KEY=%s\nPORT=3001\n" "$ENCRYPTION_KEY" > .env
npm 运行开发

桌面应用程序 #

本机 .dmg (macOS) 和 .exe (Windows) 安装程序可从 Releases 获取。 桌面应用程序从系统托盘运行整个路由器和仪表板,并带有显示实时请求统计信息的玻璃弹出窗口。

路由器的工作原理 #

FreeLLMAPI 的路由器针对每个请求做出决定:

  1. 选择具有健康密钥且符合所有速率限制的最高优先级模型 2.解密密钥(AES-256-GCM),调用提供商SDK
  2. 在 429/5xx/超时时 → 冷却 + 重试后备链中的下一个模型(最多 20 次尝试)
 ┌──────────────────┐ 承载者 freellmapi-… ┌──────────────────────────┐
 │ OpenAI SDK / │ ──────────────────────▶ │ 快速代理 (:3001) │
 │ 卷曲 / 任何 │ ◀────────────────────── │ /v1/chat/completions │
 │ OpenAI 客户端 │ 流式代币 └────────────┬────────────┘
 └──────────────────┘ │
 ▼
 ┌────────────────────────────────────────────────┐
 │ 路由器 │
 │ 1. 选择最高优先级的模型 │
 │ (a) 有一个健康的密钥并且 │
 │ (b) 处于其所有速率限制之下。 │
 │ 2.解密密钥,调用提供商SDK。 │
 │ 3. 在 429/5xx → 冷却 + 重试下一个模型。 │
 └────────────────────────────────────────────────┘
 │
 ┌──────────────┬────────────┬──────────┴──────────┬────────────┬──────────┐
 ▼ ▼ ▼ ▼ ▼ ▼
 Google Groq Cerebras OpenRouter HF …10 更多

每个响应都带有“X-Roated-Via: /”标头,以便您可以查看哪个提供商实际为每个调用提供服务。 如果请求在提供者之间失败,您还会看到“X-Fallback-Attempts: N”。

将 FreeLLMAPI 与任何客户端一起使用 #

Python(OpenAI SDK) #

从 openai 导入 OpenAI

客户端 = OpenAI(
base_url =“http://localhost:3001/v1”,
api_key="freellmapi-your-unified-key",
)

resp = client.chat.completions.create(
model="auto", # 让路由器选择; 或指定例如 “gemini-2.5-flash”
messages=[{"role": "user", "content": "用一句话概括罗马的陷落。"}],
)
打印(resp.choices[0].message.content)
print("路由通过:", resp.headers.get("x-routed-via"))

流媒体 #

流 = client.chat.completions.create(
型号=“汽车”,
messages=[{"role": "user", "content": "给我发送一首关于 SQLite 的俳句。"}],
流=真,
)
对于流中的块:
print(chunk.choices[0].delta.content 或 "", end="",lush=True)

工具调用 #

工具=[{
“类型”:“功能”,
“功能”:{
“名称”:“获取天气”,
"description": "获取某个城市的当前天气。",
“参数”:{
“类型”:“对象”,
“属性”:{“城市”:{“类型”:“字符串”}},
“必填”:[“城市”],
},
},
}]

# 1. 模型请求工具调用
首先 = client.chat.completions.create(
型号=“汽车”,
messages=[{"role": "user", "content": "卡拉奇的天气怎么样?"}],
工具=工具,
tool_choice=“必需”,
)
呼叫=first.choices[0].message.tool_calls[0]

# 2.你执行该工具,反馈结果
最终 = client.chat.completions.create(
型号=“汽车”,
消息=[
{"role": "user", "content": "卡拉奇的天气怎么样?"},
第一个.choices[0].message,
{"role": "tool", "tool_call_id": call.id, "content": '{"temp_c": 32, "cond": "sunny"}'},
],
工具=工具,
)
打印(最终.选择[0].消息.内容)

Gemini Google 搜索基础 #

resp = client.chat.completions.create(
型号=“gemini-2.5-flash”,
messages=[{"role": "user", "content": "谁赢得了本周末的 F1 比赛?"}],
工具=[{“类型”:“功能”,“功能”:{“名称”:“google_search”,“参数”:{}}}],
)
打印(resp.choices[0].message.content)

视觉/图像输入 #

 resp = client.chat.completions.create(
 型号=“汽车”,
 消息=[{
 “角色”:“用户”,
 “内容”:[
 {"type": "text", "text": "这张图片里有什么?"},
 {"type": "image_url", "image_url": {"url": "data:image/png;base64,<...>"}},
 ],
 }],
 )
 打印(resp.choices[0].message.content)

克劳德代码集成 #

FreeLLMAPI 还支持 Anthropic Messages API,因此 Claude Code 和官方 Anthropic SDK 可以在您的免费池中运行:

导出 ANTHROPIC_BASE_URL=http://localhost:3001
导出 ANTHROPIC_AUTH_TOKEN=freellmapi-您的统一密钥
克劳德

使用“ANTHROPIC_AUTH_TOKEN”(作为承载令牌发送),不是“ANTHROPIC_API_KEY” - Claude 代码将一组“ANTHROPIC_API_KEY”视为冲突的第一方凭证并拒绝启动。

Claude 模型名称映射到 Keys → Anthropic 选项卡上的免费池:每个系列(“default”、“opus”、“sonnet”、“hai​​ku”)路由到“auto”(路由器选择一个免费模型)或您固定的模型。 流媒体、系统提示、工具使用和图像输入都通过与 OpenAI 端点相同的路由器进行转换。

嵌入 #

/v1/embeddings 与 OpenAI 兼容,但有一个故意的差异:**故障转移永远不会跨模型。**来自不同模型的向量存在于不兼容的空间中。 按家庭划分的嵌入路线:

resp = client.embeddings.create(
型号=“汽车”,
input=[“敏捷的棕色狐狸”,“在我的盒子里装上五打酒壶”],
)
print(len(resp.data), "向量", len(resp.data[0].embedding), "dims")

可用的嵌入系列:

家庭调暗供应商
gemini-embedding-00130723072 谷歌
文本嵌入-3-大30723072 GitHub 模型
文本嵌入-3-小15361536 GitHub 模型
嵌入-v4.015361536 连贯
bge-m310241024 Cloudflare → 拥抱脸
qwen3-embedding-0.6b10241024 云耀
nv-embedqa-e5-v510241024 英伟达

主要特点 #

  • 自动故障转移 — 如果所选提供商返回 429、5xx 或超时,路由器会跳过它,将密钥置于短暂的冷却状态,然后重试后备链中的下一个模型(最多 20 次尝试)
  • 粘性会话 — 多轮对话持续与同一个模型对话 30 分钟,以避免对话中模型切换造成的幻觉峰值
  • 加密密钥存储 — API 密钥在访问 SQLite 之前使用 AES-256-GCM 进行加密; 解密发生在请求之前的内存中
  • 统一 API 密钥 — 客户端使用单个 freellmapi-... 不记名令牌向您的代理进行身份验证。 您永远不会向您的应用程序公开上游提供商密钥
  • 运行状况检查 - 定期探测将键标记为“healthy”、“rate_limited”、“invalid”或“error”,以便路由器自动跳过死键
  • 分析 — 每个请求的日志记录,包括延迟、令牌计数、成功率和每个提供商的故障
  • 上下文切换 - 可选功能,当会话切换到不同模型时注入紧凑的系统消息,以便新模型知道它正在继续现有任务
  • 随处运行 — Windows、macOS、Linux 服务器或小型 ARM SBC(包括 Raspberry Pi)。 闲置时约 40 MB RSS

性能和容量 #

合并后的免费套餐容量约为每月 17 亿个代币。 以下是按层级的粗略细分:

等级预计每月代币
顶级(Gemini Pro、GPT-4o,来自 GitHub)约 5 亿代币
中层(Groq、Cerebras、Mistral)约 6 亿代币
较低层(Cloudflare、OVH、授粉)约 6 亿代币

您的实际容量取决于您启用的提供商及其当前的免费套餐配额。 路由器跟踪每个密钥的 RPM、RPD、TPM 和 TPD 计数器,因此它总是选择位于其上限之下的密钥。

限制 #

诚实地对待权衡:

  • 无前沿型号。 免费目录最多的是 Llama 3.3 70B、GLM-4.5、Qwen 3 Coder 和 Gemini 2.5 Pro。 您不会通过此获得 GPT-5 或 Claude Opus 类推理。 对于困难问题,请付费购买真正的 API。
  • 随着时间的推移,智力会下降。 您排名靠前的模型的每日上限最低。 一旦达到极限,路由器就会沿着优先级链下降到较小/较弱的型号。 预计有效情报会在每天深夜下降,然后在 UTC 午夜重置。
  • 延迟变化很大。 Cerebras 和 Groq 速度极快; 其他人则不然。 无论哪一个可用,您都可以获得。
  • 免费套餐可能会发生变化,恕不另行通知。 提供商会定期收紧、放松或删除免费套餐。 发生这种情况时,您将看到 429 或身份验证错误,直到更新目录为止。
  • 根据定义,没有 SLA。 如果您需要可靠性,请使用有合同的付费提供商。
  • 本地优先。 没有多租户身份验证。 自己运行这个; 不要将其暴露在互联网上。
  • 不支持旧版补全。 仅实现了 /v1/chat/completions,而不是 /v1/completions/v1/moderations

谁应该使用 FreeLLMAPI? #

  • 个人开发者 希望使用多个模型进行原型设计而无需管理 17 个 API 密钥
  • 人工智能爱好者 预算有限,希望以零成本获得最大推理能力
  • Claude Code / Codex CLI 用户 希望在空闲池上运行代理
  • RAG 构建者 需要来自多个提供商的嵌入并具有自动回退功能
  • 任何构建 OpenAI 兼容应用程序的人 想要一个能够承受单个提供商速率限制的弹性代理

替代方案比较 #

特色免费LLMAPI莱特法学硕士开放路由器
免费层级聚合✅ 16 家提供商❌ 仅限付费❌ 仅限付费
自托管✅ Docker/节点✅ Docker/节点❌ 仅限云
人类 API 支持/v1/messages
加密密钥存储✅ AES-256-GCM不适用
管理仪表板✅ 反应 + 投票❌ 仅 CLI✅ 网页
本地/桌面应用程序✅ macOS/Windows
成本免费(麻省理工学院)免费(阿帕奇2.0)按代币付费
多租户❌ 单用户

入门清单 #

  1. 安装 Docker(或 Node.js 20+ 用于本地开发)
  2. 运行 curl -fsSL https://freellmapi.co/install.sh | bash
  3. 打开“http://localhost:3001”并登录
  4. Keys 页面添加提供商密钥
  5. 重新排序您的 后备链 以优先考虑您最常使用的模型
  6. 获取您的统一 API 密钥
  7. 将您的 OpenAI SDK 指向“http://localhost:3001/v1”
  8. 开始提示 model: "auto"

常见问题 #

问:我是否需要所有 16 个提供商的 API 密钥? #

不需要。FreeLLMAPI 可与您添加的任何键配合使用。 一些提供商(Kilo、Polnations、LLM7、OVH)接受匿名请求。 其他则需要免费注册。 从 2-3 个键开始,然后根据需要添加更多。

问:我可以将 FreeLLMAPI 与 LangChain 或 LlamaIndex 一起使用吗? #

是的。 FreeLLMAPI 实现了 OpenAI 兼容的有线格式。 任何使用 base_url + api_key 的客户端都可以工作 — LangChain、LlamaIndex、Continue、Hermès Agent 等等。 只需将“base_url”更改为“http://localhost:3001/v1”即可。

问:后备链如何工作? #

您可以在仪表板中定义模型的优先级顺序。 当发出请求时,路由器会选择优先级最高的健康模型。 如果该模型返回 429、5xx 或超时,它将移至链中的下一个模型。 每个按键在重试之前都会有短暂的冷却时间。

问:我的数据安全吗? #

所有提供商 API 密钥均使用 AES-256-GCM 加密并存储在本地 SQLite 数据库中。 解密仅在发送请求之前在内存中发生。 您的提示和完成信息不会存储在外部 - 请求分析会在本地保留 90 天或 100,000 行(可配置)。

问:我可以添加自己的自定义提供商吗? #

是的。 自定义提供程序允许您指向任何 OpenAI 兼容端点 - llama.cpp、LM Studio、vLLM、远程 Ollama 实例或任何其他代理。 它出现在后备链的末尾,并且可以像任何其他提供商一样重新排序。

问:高级级别怎么样? #

免费安装遵循每月快照 - 永远零成本。 高级版(19 美元/年或 49 美元终身)遵循实时反馈,每 2-3 天刷新一次,因此新的免费型号会立即添加到您的路由器中。 目录服务器永远看不到您的提示、完成或提供程序密钥。

Docker Compose 设置 #

对于更喜欢 Docker Compose 而不是安装脚本的团队:

版本:'3.8'
服务:
免费地图:
图片:freellmapi/服务器:最新
端口:
- “3001:3001”
卷:
- ./data:/应用程序/数据
环境:
- ENCRYPTION_KEY=your-random-32-char-key-here
重新启动:除非停止
# 创建数据目录并启动
mkdir -p 数据
docker 组成-d
# 管理仪表板位于 http://localhost:3001

环境变量 #

所有配置都可以通过环境变量设置:

导出端口=3001
导出 ENCRYPTION_KEY="a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6"
导出 LOG_LEVEL=信息
导出 MAX_RETRIES=3
导出REQUEST_TIMEOUT=30000
# 验证您的配置
docker exec freellmapi 节点 --eval "console.log(process.env.PORT)"

CLI 管理 #

FreeLLMAPI 附带一个用于自动化的管理 CLI:

# 检查服务器状态
freellmapi状态

# 列出活跃的提供者及其关键数量
freellmapi 提供商 --list

# 导出配置以进行备份
freellmapi 配置导出 > freellmapi-backup.json

# 从备份中恢复配置
freellmapi 配置恢复 < freellmapi-backup.json
# 监控实时请求日志
freellmapi 日志 --follow --since 5m

# 检查哪些提供商现在受到速率限制
freellmapi 健康——提供商

来源 #


想要尝试 FreeLLMAPI? 使用 Docker 在 2 分钟内完成部署。 没有信用卡,没有 API 密钥管理,没有供应商锁定。 只需一个端点即可连接 16 个免费 LLM 提供商。

加入Dibi8社区: Telegram Group

📦 出现在以下合集中

💬 留言讨论