编程 FreeLLMAPI 开源:聚合 11 家大厂免费额度,每月约 13 亿 Token 一个接口通吃

2026-09-12 09:52:26

FreeLLMAPI 开源:聚合 11 家大厂免费额度,每月约 13 亿 Token 一个接口通吃

做 AI 开发的朋友都知道,现在各大 AI 厂商都有免费额度,但单独用起来总觉得不够塞牙缝的。
单独看都还行,但真要做点正经事儿,要么额度不够,要么被限流。
更头疼的是,要把这些免费额度凑在一起用,得面对十几种不同的 SDK 和复杂的接口限制。每个平台的 API 格式不一样,限流规则也不同,光是适配就能让人掉头发。
最近有个开发者解决了这个问题,开源了FreeLLMAPI这个项目。它把 11 家大模型平台的免费额度全部聚合到一个 OpenAI 兼容的接口里,算下来每月大约有13亿Token可用!

你只需要改个base_url就能用,剩下的路由、限流、重试都交给它处理。

核心亮点

1、11家平台,聚合在一起
项目目前支持:
Google:Gemini 2.5 Flash、3.x预览版
Groq:Llama 3.3、Llama 4、GPT-OSS、Qwen3
Cerebras:Qwen3 235B
SambaNova:DeepSeek V3.x、Llama 4、Gemma 3
Mistral:Large 3、Medium 3.5、Codestral、Devstral
OpenRouter:19个免费模型
GitHub Models:GPT-4.1、GPT-4o
Cloudflare:Kimi K2、GLM-4.7、GPT-OSS、Granite 4
Cohere:Command R+、Command-A(试用版)
Z.ai(智谱):GLM-4.5、GLM-4.7 Flash
NVIDIA:NIM(默认禁用)
这些平台加起来,每月大约有13亿Token的免费额度!
2、OpenAI兼容,零门槛切换
任何支持OpenAI SDK的客户端(LangChain、LlamaIndex、Continue、Hermes等等),只要改一下base_url就能直接用,完全不需要改代码。

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:3001/v1",  # 就是改这里
    api_key="freellmapi-your-unified-key",
)

3、自动路由和故障转移
路由器会自动选择当前可用的最佳模型,如果某个平台限流了(返回429)或者挂了(返回5xx),它会自动把这个Key放到冷却期,然后尝试下一个平台,最多重试20次。
每个响应头里还会带上X-Routed-Via,告诉你这个请求实际上是哪个平台处理的,还有X-Fallback-Attempts告诉你试了多少次。
4、实时追踪,不超限
它会追踪每个Key的调用频率和用量:RPM(每分钟请求数)、RPD(每天请求数)、TPM(每分钟Token数)、TPD(每天Token数),确保不会超出任何平台的免费上限。
5、会话粘性
多轮对话会保持使用同一个模型30分钟,避免对话中途切换模型导致幻觉。
6、加密存储,安全可靠
API密钥在存储前会用AES-256-GCM加密,解密只在内存中进行,不会泄露上游提供商的密钥。
7、管理面板一应俱全
项目带了一个React+Vite的管理面板,你可以:
• 管理各个平台的密钥
• 调整优先级顺序
• 查看分析数据
• 直接在Playground里测试对话
• 支持深色模式

快速上手

安装:

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,在Keys页面添加你各个平台的API密钥,调整一下Fallback Chain的顺序,再从页面头部拿到统一的API密钥,就可以开始用了!
Python调用

from openai import OpenAI

client = OpenAI(
    base_url="http://localhost:3001/v1",
    api_key="freellmapi-your-unified-key",
)

# 让路由器自动选模型,或者指定比如"gemini-2.5-flash"
resp = client.chat.completions.create(
    model="auto",
    messages=[{"role": "user", "content": "用一句话总结罗马帝国的衰落。"}],
)

print(resp.choices[0].message.content)
print("通过哪个平台处理的:", resp.headers.get("x-routed-via"))

流式输出

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 = [{
    "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)

写在最后

FreeLLMAPI 非常适合喜欢折腾 AI 应用,又不想在前期测试阶段花冤枉钱的朋友。
它把一堆零零散散的免费API聚合起来,提供一个统一的接口,自动处理路由、限流、重试,还带了一个漂亮的管理面板。
如果你正在做AI原型开发,或者想在不花钱的情况下测试各种模型,这个项目值得一试!
GitHub:https://github.com/tashfeenahmed/freellmapi

推荐文章

程序员茄子在线接单