如何优雅地薅 OpenRouter 免费模型羊毛

数字折腾

OpenRouter 是一个模型聚合入口。你只记一个地址、一把 Key,就能调很多家模型。它上面还有一批价格为 0 的模型,ID 末尾带 :free。

我用它时最常踩的坑,不是「不会发请求」,而是把某一个免费模型 ID 写死。列表会变,下架后请求直接落空。今天这篇只讲 OpenRouter 免费模型怎么用。

封面:OpenRouter 免费模型入口与关键动作

封面:OpenRouter 免费模型入口与关键动作

第一步,注册并拿到 API Key

打开 https://openrouter.ai,注册登录后,到 Keys 页新建一把 Key。

调用时按 OpenAI 兼容格式来:

  • 地址:https://openrouter.ai/api/v1

  • Header:Authorization: Bearer <你的Key>

  • 聊天接口:/chat/completions

新账号通常会有一点试用额度。免费模型本身不按 token 扣费,但账号状态仍会影响限流和可用性。OpenRouter 文档也写了:账户余额成负时,免费模型也可能报错;把余额补回正数后才能继续用。

第二步,先找到今天还能用的免费模型

别凭记忆抄模型名。先查列表。

网页入口:

https://openrouter.ai/models?max_price=0

接口入口:

https://openrouter.ai/api/v1/models

图 1:OpenRouter 免费模型列表页(按价格=0 筛选)

图 1:OpenRouter 免费模型列表页(按价格=0 筛选)

我今天拉取了一次接口,全部模型大约 463 个,其中以 :free 结尾的有 14 个。当天能看到的例子包括:

  • nvidia/nemotron-3-super-120b-a12b:free

  • google/gemma-4-31b-it:free

  • google/gemma-4-26b-a4b-it:free

  • nvidia/nemotron-3.5-lightning:free

这个数字和名单都会变。以前我用智能体挂过 glm-4.5-air:free,模型从免费列表消失后,请求直接失败。所以配置里不要假设「今天还能用」。

如果你懒得挑具体模型,也可以用官方免费路由:

openrouter/free

它会自动挑一个当前可用的免费模型。适合先跑通,不适合要求固定模型能力的场景。

第三步,发一条最小请求

用 curl 先验证 Key 和模型都能通:

1
2
3
4
5
6
7
curl https://openrouter.ai/api/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-d '{
"model": "nvidia/nemotron-3-super-120b-a12b:free",
"messages": [{"role":"user","content":"用一句话介绍你自己"}]
}'

想省事,把 model 换成 openrouter/free:

1
2
3
4
5
6
7
curl https://openrouter.ai/api/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-d '{
"model": "openrouter/free",
"messages": [{"role":"user","content":"用一句话介绍你自己"}]
}'

如果你本来就在用 OpenAI SDK,把 base_url 指到 OpenRouter 即可:

1
2
3
4
5
6
7
8
9
10
11
12
from openai import OpenAI

client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key="你的OpenRouter密钥",
)

r = client.chat.completions.create(
model="openrouter/free",
messages=[{"role": "user", "content": "ping"}],
)
print(r.choices[0].message.content)

验证标准很简单:HTTP 200,并且返回里有 choices。若是 401,先查 Key;若是 404 或模型不可用,先换一个今天列表里还在的 :free 模型,或改用 openrouter/free。

实测:openrouter/free 真的是「盲盒」

图 2:openrouter/free 三次调用返回的模型对比

图 2:openrouter/free 三次调用返回的模型对比

我连发 3 次 openrouter/free,每次返回的模型都不一样:

调用 实际模型 参数量级
第 1 次 liquid/lfm-2.5-2.6b:free 2.6B
第 2 次 nvidia/nemotron-3-super-120b-a12b:free 120B
第 3 次 nvidia/nemotron-3-ultra-550b-a55b:free 550B

同一会话里,能力跨度从 2.6B 到 550B。上下文长度、推理风格全随模型变。

对比下,指定单个模型 nvidia/nemotron-3-super-120b-a12b:free,三次调用全是它,能力固定。

当前免费池共 14 个模型(总模型 462 个),从 2.6B 到 550B 全覆盖。openrouter/free 就是在这 14 个里按策略轮换。

怎么选:别纠结,看需求

图 3:按需求选模型的决策表

图 3:按需求选模型的决策表

你的需求 推荐写法
只要能回包、不在乎能力、先跑通链路 openrouter/free
要免费但想自己控制大致能力档次 手动从 /api/v1/models 拉当天 :free 列表,挑 1-2 个强的写死,加 fallback
要固定能力、稳定上下文、可复现 写死具体模型 ID,并自己留备用模型(或在网关层做 fallback)
本地已有 magpie/OmniRoute 等网关 在网关层配 openrouter/*:free 组 + routing=order,网关替你做自动切换;请求里只写组名

一句口诀

auto 省心但不省事(要守着账单);写死省事但不省心(要守着模型列表);免费路由最省心,但能力像盲盒。

第四步,看清免费边界,别当生产配额

OpenRouter FAQ 里明确说:免费模型限流偏低,通常不适合生产环境。限流档位跟你累计购买过的 credits 有关——买过一定额度后,每日免费请求上限会抬高;没买过时,上限更低。具体数字以 FAQ 和 Limits 页为准,页面上是动态值。

我这边实际体感还有两条:

01账户快没钱时,免费通道限流会明显变严。

02单个免费模型会下架。写死一个 ID,后面很容易突然断。

所以更稳的用法是:

  • 日常试水、轻任务走 :free 或 openrouter/free

  • 需要稳定能力时,准备付费模型做备用

  • 定期重新拉 /api/v1/models,别信任旧名单

查自己 Key 剩余额度,可以请求:

GET https://openrouter.ai/api/v1/key

返回里会有 credits 与免费模型日请求相关字段。

顺带一句:接到本地路由时怎么写

如果你本机已经在用 magpie 这类本地模型网关,把 OpenRouter 加进去时,模型名写成 openrouter/<模型ID>。免费模型就是 openrouter/xxx:free,免费路由则是 openrouter/free。

我自己会把一批 openrouter/*:free 放进一个组,前面挂掉再换后面。这是附加用法,不是上手必做。

短结论

OpenRouter 免费模型的用法就四件事:拿 Key、查今天的 :free 列表、用 OpenAI 兼容接口发请求、接受限流和下架是常态。想少操心,先用 openrouter/free;想固定能力,再挑具体模型,并自己留备用。

今天就能试:打开 https://openrouter.ai/models?max_price=0,抄一个还在的模型 ID,把上面那条 curl 跑通。