@DeRonin_: 每月8亿个免费token,所有主流大语言模型,开源。这家伙真的让你忘记一切限制。仓库: htt…
摘要
FreeLLMAPI 是一款开源工具,它将11家主流大语言模型提供商的免费套餐汇聚到一个兼容OpenAI的单一接口中,通过路由请求并管理速率限制,每月提供约10亿+token。它通过一台本地服务器简化了对多个免费模型的访问。
查看缓存全文
缓存时间: 2026/05/20 04:24
每月8亿免费Token,覆盖所有主流大模型——这个开源项目让你彻底忘记限制
仓库:https://t.co/OZ3iUKrkzB 祝你顺利发布。 https://t.co/wixOjBQ1dq
tashfeenahmed/freellmapi
来源:https://github.com/tashfeenahmed/freellmapi
FreeLLMAPI
一个兼容 OpenAI 的端点,汇集十一家免费 LLM 服务商,每月可获约 10 亿以上的 Token。
将 Google、Groq、Cerebras、SambaNova、NVIDIA、Mistral、OpenRouter、GitHub Models、Cohere、Cloudflare 以及 Z.ai(智谱)的免费额度整合到统一的 /v1/chat/completions 端点后面。
密钥加密存储。路由器会为每次请求选择当前最佳的可用模型,当某家服务被限流时自动回退到下一个服务商,并跟踪每个密钥的使用量,确保你不超出任何免费额度的上限。
CI(https://github.com/tashfeenahmed/freellmapi/actions/workflows/ci.yml)
许可证:MIT
欢迎提交 PR
带每服务商 Token 预算的回退链
目录
为什么存在
如今每一个严肃的 AI 实验室都提供免费额度——每月几百万 Token、每天几千次请求。单独看每个都是玩具,但叠加起来,累计约 每月 13 亿 Token 的可用推理容量,覆盖从轻量快速到能力不错的几十个模型。
问题在于手工叠加这些额度非常痛苦:十四个不同的 SDK、十四个不同的速率限制、十四个请求可能失败的地方。FreeLLMAPI 把这些压缩成一个兼容 OpenAI 的端点。只需将任意 OpenAI 客户端库指向你的本地服务器,它便会透明地路由到你所添加密钥的各个服务商。
支持的服务商
GoogleGemini 2.5 Flash · 3.x 预览版
GroqLlama 3.3, Llama 4, GPT-OSS, Qwen3
CerebrasQwen3 235B
SambaNovaDeepSeek V3.x · Llama 4 · Gemma 3
MistralLarge 3 · Medium 3.5 · Codestral · Devstral
OpenRouter19 个免费模型
GitHub ModelsGPT-4.1 · GPT-4o
CloudflareKimi K2 · GLM-4.7 · GPT-OSS · Granite 4
CohereCommand R+ · Command-A(试用)
Z.ai(智谱)GLM-4.5 · GLM-4.7 Flash
NVIDIANIM(默认禁用)
想添加更多?请参阅 贡献指南。
功能特性
- 兼容 OpenAI —
POST /v1/chat/completions和GET /v1/models可配合官方 OpenAI SDK 以及任何兼容 OpenAI 的客户端(LangChain、LlamaIndex、Continue、Hermes 等)使用。只需修改base_url。 - 支持流式和非流式 —
stream: true时发送 Server-Sent Events,否则返回 JSON。每个服务商适配器都实现了这两种模式。 - 工具调用 — 支持 OpenAI 风格的
tools/tool_choice请求,助手返回的tool_calls以及tool角色的后续消息均能在各服务商间正常往返。 - 自动回退 — 当选定服务商返回 429、5xx 或超时时,路由器会跳过该服务商,将密钥短暂冷却,并在你的回退链中尝试下一个模型(最多尝试 20 次)。
- 逐密钥速率跟踪 — 每个
(平台、模型、密钥)的 RPM(每分钟请求数)、RPD(每天请求数)、TPM(每分钟 Token 数)、TPD(每天 Token 数)计数器,确保路由器总是选用未超过限度的密钥。 - 会话粘性 — 多轮对话会在 30 分钟内保持与同一模型通信,避免中途切换模型导致的“幻觉”激增。
- 加密密钥存储 — API 密钥使用 AES-256-GCM 加密后存入 SQLite;仅在请求前于内存中解密。
- 统一 API 密钥 — 客户端使用一个
freellmapi-...格式的 Bearer Token 向你的代理进行身份验证。你永远无需向应用暴露上游服务商的密钥。 - 健康检查 — 定期探测将密钥标记为
healthy(健康)、rate_limited(被限流)、invalid(无效)或error(错误),路由器自动跳过失效密钥。 - 管理面板 — 基于 React + Vite 的 UI,用于管理密钥、重新排序回退链、查看分析数据,并在 playground 中运行提示词。包含暗色模式。
- 数据分析 — 每次请求的日志记录,包括延迟、Token 数量、成功率以及按服务商拆分的数据。
- 可部署到树莓派 — 可在 Pi 4 上通过 PM2 配合 nginx 稳定运行。空闲时内存占用约 40 MB RSS。
暂不支持
功能范围经过刻意限定。如果某个功能未在以下列表中列出,也未被说明为“不支持”,则视为尚未实现。
- Embeddings(嵌入)(
/v1/embeddings) - 图片生成(
/v1/images/*) - 音频 / 语音(
/v1/audio/*) - 视觉 / 多模态输入 — 消息内容仅限于文本
- 传统补全(
/v1/completions) — 仅实现了聊天端点 - 内容审核(
/v1/moderations) n > 1(每次请求多个补全)- 按用户计费 / 多租户认证 — 设计为单人使用
添加上述任何功能的 PR 非常欢迎。请参阅 贡献指南。
快速上手
前置条件: Node.js 20+,npm。
git clone https://github.com/tashfeenahmed/freellmapi.git
cd freellmapi
npm install
# 生成用于静态密钥存储的加密密钥
cp .env.example .env
echo "ENCRYPTION_KEY=$(node -e "console.log(require('crypto').randomBytes(32).toString('hex'))")" >> .env
# 同时启动服务器和面板
npm run dev
打开 http://localhost:5173(Vite 开发 UI),在 Keys 页面添加你的服务商密钥,按需在 Fallback Chain 页面调整优先级,然后从 Keys 页面顶部获取你的统一 API 密钥。这个统一密钥就是你要指向 OpenAI SDK 的凭据。
生产构建:
npm run build
node server/dist/index.js # 服务器和面板同时在 :3001 端口提供服务
使用 API
任何兼容 OpenAI 的客户端均可使用。以下是一些示例:
Python
from openai import OpenAI
client = 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": "用一句话总结罗马帝国的衰亡。"}],
)
print(resp.choices[0].message.content)
print("路由方式:", resp.headers.get("x-routed-via"))
curl
curl http://localhost:3001/v1/chat/completions \
-H "Authorization: Bearer freellmapi-your-unified-key" \
-H "Content-Type: application/json" \
-d '{
"model": "auto",
"messages": [{"role": "user", "content": "hi"}]
}'
流式输出
stream = client.chat.completions.create(
model="auto",
messages=[{"role": "user", "content": "给我写一首关于 SQLite 的俳句。"}],
stream=True,
)
for chunk in stream:
print(chunk.choices[0].delta.content or "", end="", flush=True)
工具调用
传入 OpenAI 风格的 tools 和 tool_choice;助手响应会像 OpenAI API 一样通过代理往返。多步骤流程(助手 tool_calls → tool 角色后续消息 → 最终答案)在路由器能访问的所有服务商上均能正常工作。
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取某个城市的当前天气。",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
},
}]
# 1. 模型要求调用工具
first = client.chat.completions.create(
model="auto",
messages=[{"role": "user", "content": "卡拉奇的天气如何?"}],
tools=tools,
tool_choice="required",
)
call = first.choices[0].message.tool_calls[0]
# 2. 你执行工具,并将结果返回
final = client.chat.completions.create(
model="auto",
messages=[
{"role": "user", "content": "卡拉奇的天气如何?"},
first.choices[0].message,
{"role": "tool", "tool_call_id": call.id, "content": '{"temp_c": 32, "cond": "sunny"}'},
],
tools=tools,
)
print(final.choices[0].message.content)
同样支持 stream=True——你会先收到 delta.tool_calls 块,然后收到一个 finish_reason: "tool_calls" 的结束信号。
底层机制:兼容 OpenAI 的服务商(Groq、Cerebras、SambaNova、Mistral、OpenRouter、GitHub Models、HuggingFace、Cloudflare、Cohere 兼容模式)直接透传请求;Gemini 请求则被转换为 Google 的 functionDeclarations / functionResponse 格式,响应再转换回来。
每个响应都会携带 X-Routed-Via: / 头,方便你查看实际处理请求的服务商。如果请求在多个服务商之间经历了回退,你还会看到 X-Fallback-Attempts: N。
截图
密钥管理
管理服务商凭据,获取应用连接时使用的统一 API 密钥。每个密钥显示状态圆点以及上次健康检查的时间。

Playground
通过路由器发送聊天补全,查看实际响应的服务商、模型 ID 和延迟信息直接显示在消息上。

数据分析
请求量、成功率、输入输出 Token 数、平均延迟以及按服务商拆分的统计数据,支持 24 小时 / 7 天 / 30 天时间窗口。

工作原理
┌──────────────────┐ Bearer freellmapi-... ┌─────────────────────────┐
│ OpenAI SDK / │ ──────────────────────────────▶ │ Express 代理 (:3001) │
│ curl / 任何 │ ◀────────────────────────────── │ /v1/chat/completions │
│ OpenAI 客户端 │ 流式输出的 Token └────────────┬────────────┘
└──────────────────┘ │
▼
┌────────────────────────────────────────────────┐
│ 路由器 │
│ 1. 选择优先级最高的模型,满足: │
│ (a) 有健康的密钥 │
│ (b) 未超过任何速率限制 │
│ 2. 解密密钥,调用服务商 SDK。 │
│ 3. 遇到 429/5xx → 冷却 + 尝试下一个模型。 │
└────────────────────────────────────────────────┘
│
┌──────────────┬────────────┬────────┴─────────┬─────────────┬──────────┐
▼ ▼ ▼ ▼ ▼ ▼
Google Groq Cerebras OpenRouter HF ... 10 家以上
- 路由器(
server/src/services/router.ts)— 为每个请求选择模型。 - 速率限制台账(
server/src/services/ratelimit.ts)— 内存中的 RPM/RPD/TPM/TPD 计数器,以 SQLite 为持久化后端,遇到 429 时自动冷却。 - 服务商适配器(
server/src/providers/*.ts)— 每个服务商一个文件,实现Provider基类:chatCompletion()和streamChatCompletion()。 - 健康检查服务(
server/src/services/health.ts)— 定期探测保持密钥状态更新。 - 管理面板(
client/)— 基于 React + Vite + shadcn/ui 的管理界面。 - 存储— SQLite(使用
better-sqlite3),密钥采用 AES-256-GCM 信封加密。
局限性
叠加免费额度有真实的权衡。请对自己保持诚实:
- 没有前沿模型。 免费目录的上限大约是 Llama 3.3 70B、GLM-4.5、Qwen 3 Coder 和 Gemini 2.5 Pro。你无法通过这个获得 GPT-5 或 Claude Opus 级别的推理能力。对于困难问题,请付费使用真正的 API。
- 智能水平随一天时间的推移而下降。 你最优先的模型(通常是 Gemini 2.5 Pro、GitHub Models 的 GPT-4o)具有最低的每日配额。一旦它们达到上限,路由器就会沿着优先级链向下回退到更小/更弱的模型。预计每天晚些时候该端点的有效智能会下降——然后在 UTC 午夜重置。
- 延迟变化很大。 Cerebras 和 Groq 非常快;其他则不然。你只能得到当前可用的那一个。
- 免费额度可能随时变更。 服务商会定期收紧、放宽或取消免费额度。发生时你会看到 429 或鉴权错误,直到你更新目录。重新填充脚本位于
server/src/scripts/。 - 没有 SLA,这是定义上的。 如果你需要可靠性,请使用提供合同服务的付费服务商。
- 本地优先。 没有多租户认证。为自己运行;不要暴露到互联网上。
贡献指南
非常欢迎贡献者!适合初学者的 PR:
- 添加一个服务商 — 复制
server/src/providers/openai-compat.ts作为模板,将其接入server/src/providers/index.ts,在server/src/db/index.ts中播种模型,在server/src/__tests__/providers/中添加测试。 - 添加一个端点 — embeddings、图片生成、内容审核。基类
Provider可以增加新方法;适配器声明各自支持哪些方法。 - 改进路由器 — 成本感知路由(最便宜-健康-最快的权衡)、更好的延迟加权优先级、区域固定。
- 面板美化 — 分析页面的图表、密钥轮换用户体验、从
.env批量导入密钥。 - 文档 — 更多示例、Go/Rust 等语言的客户端代码片段、Docker 或 Fly 的部署方案。
开发循环:
npm install
npm run dev # 服务器在 :3001,面板在 :5173,均支持热重载
npm test # vitest —— 覆盖 providers、routes、router、ratelimit 的 75 个测试
PR 应包含测试、保持现有测试套件全部通过,并匹配仓库中已有的 .editorconfig / tsconfig 默认配置。Issues 和 Discussions 已经开启。
贡献者
感谢所有帮助改进 FreeLLMAPI 的人:
- @moaaz12-web (https://github.com/moaaz12-web) — 跨服务商工具调用支持 (#3)
- @lukasulc (https://github.com/lukasulc) — 升级 better-sqlite3 以修复 Node 24+ 上的 npm install (#12)
- @VinhPhamAI (https://github.com/VinhPhamAI) — 根目录
.env的 PORT 现在会传播到服务器 + Vite 开发代理 + UI 基础 URL (#27) - @deadc (https://github.com/deadc) — 保留 Gemini 的
thoughtSignature,使多轮函数调用不再 400 (#32);路由器的模型优先密钥耗尽测试 + 每个模型的limits提升 (#42) - @zhangyu1324 (https://github.com/zhangyu1324) — 请求集成 Ollama Cloud,现已加入 V10 目录 (#14 / #41)
- @jtbrennan-git (https://github.com/jtbrennan-git) — 安全审查 (#35) 和第一阶段加固:参数化分析查询、排序预设白名单、时序安全的 API 密钥比较、流中间错误净化
- @praveenkumarpranjal (https://github.com/praveenkumarpranjal) — 保护 Gemini SSE 的
JSON.parse,使格式错误的帧不再终止整个流,并为 Google 服务商添加了首个流式测试 (#47)
服务条款审查
针对自托管、单用户、个人使用的设置,再次对照各服务商的 ToS(2026 年 5 月版本)进行了审查。摘要:
| 服务商 | 结论 | 备注 |
|---|---|---|
| Google Gemini | ⚠️ 谨慎 | 2026 年 3 月的 ToS 将范围缩小为“专业或商业用途,而非消费者用途”——自托管的开发者代理仍然有辩护空间,但该条款是新加的。 |
| Groq | ✅ 可能没问题 | GroqCloud 服务协议允许集成到客户应用中。 |
| Cerebras | ✅ 可能没问题 | 允许;明确禁止出售/转让 API 密钥。 |
| Mistral | ✅ 可能没问题 | 允许 API 用于个人/内部业务用途。 |
| OpenRouter | ✅ 可能没问题 | 2026 年 4 月 ToS 强化了禁止转售/竞争服务的条款;私人的单用户代理仍然可以。 |
| SambaNova | ⚠️ 模糊 | EULA §1.5(c) 禁止转售和“服务局”使用;无第三方访问的单用户使用可以。 |
| Cloudflare Workers AI | ⚠️ 模糊 | 没有禁止代理的条款;受常规自助订阅协议覆盖。 |
| NVIDIA NIM | ⚠️ 谨慎 | 试用 ToS §1.2 / §1.4:“仅限评估,不得用于生产。”默认目录中已禁用。 |
| GitHub Models | ⚠️ 谨慎 | 免费额度明确限定为“实验”和“原型开发”。 |
| Cohere | ❌ 规避 | 条款 §14 仍然禁止“个人、家庭或家庭用途”。 |
| Zhipu (open.bigmodel.cn) | ✅ 可能没问题 | 平台文档中仍有个人/非商业研究豁免条款。 |
| Z.ai (api.z.ai) | ⚠️ 谨慎 | 新增行——新加坡实体(与智谱中国区分)。§III.3(l) 反流量重定向条款可能被解读为禁止代理;没有明确的个人使用豁免条款。 |
| Ollama Cloud | ✅ 可能没问题 | 新增行——免费计划允许云模型访问(1 并发,5 小时会话上限)。未发现禁止代理/禁止转售条款。(集成跟踪于 #14。) |
能让大多数服务商满意的一些经验法则:每个服务商一个账户、不转售、不与他人共享你的端点、不把免费额度当作付费生产后端来滥用。
这是信息性内容,非法律建议——请自行阅读每家的条款。
免责声明
FreeLLMAPI 是一个用于聚合个人免费 API 配额的开发工具。它不提供从免费额度中“榨取”价值或规避服务商条款的用途。
这不是“无限 Token”方案。 每个服务商的速率限制和配额是硬性的。本工具帮助你在这些硬性限制之内更高效地使用,但不会消除它们。
这不是 VPN/代理绕过工具。 使用此工具不对应地赋予你使用任何地区禁止的服务或逃避服务商地理限制的权利。你负责遵守你所在地区的法律以及相关条款。
这不会让你的请求“匿名”。 每个上游服务商仍然可以看到你的请求及其元数据。
这不是托管服务。 没有 managed cloud,没有 SaaS,没有 SLA。代码按原样提供,没有任何形式的保证。
这不是法律建议。 我没有亲自见过任何一个法务团队。你在法律上要为自己如何使用此软件负责。
使用 FreeLLMAPI 即表示你同意:
- 你了解并接受其局限性。
- 你不会将此软件用于任何侵犯服务商条款或适用法律的活动。
- 作者不对因使用本软件而导致的任何 API 封禁、账户暂停或法律后果负责。
记住:免费额度是赠品,不是权利。善待它们,否则它们会消失。
相似文章
免费 LLM API
该服务每月通过 API 提供 10 亿免费 LLM tokens。
@IndieDevHailey: 开发者必藏!这个 21.7k Star 的 GitHub 神级项目,几乎把「免费 LLM API」一网打尽了。 如果你还在为 API 成本发愁,或者想低成本测试 AI 产品,这个仓库值得直接收藏: 覆盖 20+ 免费/试用 LLM API…
推荐一个GitHub高星项目(21.7k Star),整理了20+免费/试用LLM API平台,包括OpenRouter、Gemini、Groq等,并提供免费额度、模型支持、限速规则等细节,帮助开发者低成本测试和开发AI产品。
OpenAI:只需这样做,每日获赠免费令牌
OpenAI 通过其数据共享计划提供每日免费 API 令牌(轻量模型最高 250 万令牌),只需在仪表盘中切换一个设置即可启用;代价是提示词和输出可能被用于训练。
降低LLM API成本的10种方法
一份实用指南,列出了使用LLM API时降低成本的10种策略,包括模型选择、提示缓存、批处理以及监控费用。
LLMCap – 一个代理,在你达到美元上限时强制停止LLM API调用
LLMCap 是一个代理服务,对 LLM API 调用强制执行硬性美元上限,当超出用户定义的预算时阻止请求。它与主要提供商集成,提供 VS Code 扩展、CLI 和 Windows 托盘应用,用于查看支出情况。