各大 AI 厂商都有免费额度,但单独用起来总觉得不够。真要做点正经事,要么额度不够,要么被限流。更头疼的是,要把这些免费额度凑在一起用,得面对十几种不同的 SDK 和复杂的接口限制——每个平台的 API 格式不一样,限流规则也不同,光是适配就能让人掉头发。
开源项目 FreeLLMAPI 解决了这个问题。它把 11 家大模型平台的免费额度全部聚合到一个 OpenAI 兼容的接口里,每月大约有 13 亿 Token 可用。你只需要改个 base_url,剩下的路由、限流、重试都交给它处理。
核心亮点
11 家平台,聚合在一起
项目目前支持以下平台:
| 平台 | 支持模型 |
|---|---|
| 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 的免费额度。
OpenAI 兼容,零门槛切换
任何支持 OpenAI SDK 的客户端(LangChain、LlamaIndex、Continue 等),只要改一下 base_url 就能直接用,完全不需要改代码:
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:3001/v1", # 就是改这里
api_key="freellmapi-your-unified-key",
)
自动路由和故障转移
路由器会自动选择当前可用的最佳模型。如果某个平台限流了(返回 429)或者挂了(返回 5xx),它会自动把这个 Key 放到冷却期,然后尝试下一个平台,最多重试 20 次。
每个响应头里还会带上 X-Routed-Via,告诉你这个请求实际上是哪个平台处理的,还有 X-Fallback-Attempts 告诉你试了多少次。
实时追踪,不超限
它会追踪每个 Key 的调用频率和用量:RPM(每分钟请求数)、RPD(每天请求数)、TPM(每分钟 Token 数)、TPD(每天 Token 数),确保不会超出任何平台的免费上限。
会话粘性
多轮对话会保持使用同一个模型 30 分钟,避免对话中途切换模型导致幻觉。
加密存储,安全可靠
API 密钥在存储前会用 AES-256-GCM 加密,解密只在内存中进行,不会泄露上游提供商的密钥。
管理面板一应俱全
项目带了一个 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 原型开发,或者想在不花钱的情况下测试各种模型,这个项目值得一试。