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

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

1、11家平台,聚合在一起
项目目前支持:
这些平台加起来,每月大约有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的管理面板,你可以:
安装:
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
如果本文对您有帮助,也请帮忙点个 赞👍 哈!❤️
在看你就赞赞我!