- 太长不看版
- 什么是 :floor 成本快捷方式?
- OpenRouter 如何默认选择廉价提供商
- 如何使用 max_price 设置硬性价格上限?
- 哪种模型既足够好又最便宜?
- BYOK 如何降低成本?
- 业余项目有免费的 LLM 模型吗?
- 值得注意的成本陷阱
- 综合运用:成本决策规则
- 常见问题解答
既然你来到这里,你已经知道模型并非唯一的成本变量。同一个模型在不同提供商上的价格可能相差数倍,而这种差异在规模化时会迅速累积。
本指南将向你展示自动获取最低价格的确切配置,以及如果忽略它们会导致账单增加的陷阱。
如果你已经遇到了账单异常,请从陷阱部分开始。如果你想知道 5.5% 的平台费是否值得,成本计算在底部的决策表中。如果你只想为你已选定的模型寻找最便宜的提供商,请在模型 slug 后追加 :floor 并跳转到该部分。
太长不看版
- 从免费模型开始。OpenRouter 有 20 多个 token 成本为 $0 的模型。免费账户每天可获得 50 次请求。一次性充值 $10 积分,这个数字就会跃升至每天 1,000 次。
- 默认路由器已经倾向于选择更便宜的提供商。你无需进行任何配置即可受益。
- 在任何模型 slug 后追加 :floor,即可始终路由到该模型的最便宜提供商。
- 当你需要硬性预算上限时,使用 max_price。如果没有提供商符合条件,请求将失败,而不是超出你的计划支出。
- 列出的最低价格有时是量化后的端点。如果你的工作负载对精度有要求,请使用量化过滤器或 provider.ignore。
不确定哪种方案适用于你的情况?这张图展示了你应该从哪里开始:
什么是 :floor 成本快捷方式?
OpenRouter 上的每个模型都可通过多个提供商获取,而它们的定价并不相同。仅以 Llama 3.3 70B 为例,根据服务提供商的不同,输入定价从每百万 token $0.10 到超过 $1.00 不等。
在模型 slug 后追加 :floor 会指示路由器始终选择最便宜的那个。这与在请求体中设置 provider.sort: "price" 完全相同。只需更改一个字符串:
from openai import OpenAI
client = OpenAI(
base_url="https://openrouter.ai/api/v1",
api_key="$OPENROUTER_API_KEY",
)
resp = client.chat.completions.create(
model="meta-llama/llama-3.3-70b-instruct:floor", # routes to the cheapest provider
messages=[{"role": "user", "content": "Classify this ticket."}],
) 在 TypeScript 中同样如此:
import { OpenRouter } from '@openrouter/sdk';
const openRouter = new OpenRouter({ apiKey: process.env.OPENROUTER_API_KEY });
const completion = await openRouter.chat.send({
model: 'meta-llama/llama-3.3-70b-instruct:floor',
messages: [{ role: 'user', content: 'Classify this ticket.' }],
stream: false,
}); 与之对应的是 `:nitro`,它按吞吐量而非价格排序。这两个参数值得一起了解:
| 后缀 | 等价于 | 优化目标 |
|---|---|---|
| `:floor` | provider.sort: "price" | 最低价格 |
| `:nitro` | provider.sort: "throughput" | 最高吞吐量 |
使用 `:floor` 的代价是它会禁用负载均衡,并锁定到最便宜的端点,而该端点在某一天可能并非最可靠。
对于批处理任务、文档处理以及离线工作负载——多花几秒无关紧要——这种取舍是可以接受的。但对于面向用户的实时调用,请三思。如果最便宜的端点恰好是性能降级的端点,下面的“注意事项”部分会告诉你如何将其排除。
OpenRouter 默认如何选择廉价提供商
在接触任何路由配置之前,先了解系统已经为你做了什么会很有帮助。即使没有显式设置,OpenRouter 的默认策略也已经倾向于更便宜的提供商。
具体策略如下:
- 跳过在过去 30 秒内发生过重大故障的提供商。
- 在稳定的提供商中,从成本最低的候选者里选择,并按价格的平方倒数进行加权。
- 其余提供商作为备用。
平方倒数加权正是此策略的妙处所在。假设提供商 A 的价格为 1 美元/百万 token,提供商 B 为 2 美元/百万 token,提供商 C 为 3 美元/百万 token,而提供商 B 近期发生过几次故障。你的请求会优先发给提供商 A,其概率大约是提供商 C 的 9 倍,因为 1 除以 3 的平方等于 1/9。如果 A 失败,接下来是 C。B 由于故障记录排在最后。低成本与稳定性就这样自动得到了平衡。
我们构建这种加权机制,是因为从惨痛教训中认识到单纯的固定价格路由会产生什么问题。把所有流量都发给最便宜的提供商,听起来很合理,直到该提供商成为第一个在负载下饱和、第一个性能降级、并且恢复最慢的那个。我们在 80 多个提供商之间运行这套机制,每月处理约 100 万亿 token,而平方倒数方法正是确保成本节约不以牺牲可靠性为代价的关键。
需要记住一点:在提供商偏好中设置 sort 或 order 会完全关闭此负载均衡功能。下一节将说明何时需要覆盖默认设置。
如何通过 max_price 设置硬性价格上限?
`:floor` 路由到最便宜的供应商。`max_price` 则起到相反的作用:它会阻止请求发送到任何价格高于你设定值的供应商。如果说 `:floor` 是寻找价格底线,那么 `max_price` 就是强制执行价格上限。
为了实现预算保障,provider 字段中的 `max_price` 对象可以限制你为每百万 token 支付的费用:
resp = client.chat.completions.create(
model="meta-llama/llama-3.3-70b-instruct",
messages=[{"role": "user", "content": "Draft a release note."}],
extra_body={
"provider": {
"max_price": {"prompt": 1, "completion": 2}
}
},
) 这会将请求仅路由到输入 token 价格不高于 $1/M、输出 token 价格不高于 $2/M 的供应商。如果所有可用的供应商都更贵,请求就会失败。这是有意为之。你宁愿看到一个错误,也不愿看到一笔计划外的费用。
通常最有用的组合是将 `max_price` 与 `sort: "throughput"` 搭配使用:
"provider": {
"sort": "throughput",
"max_price": {"prompt": 1, "completion": 2}
} 这能为你提供速度最快的可用供应商,前提是其输入 token 价格不超过 $1/M,输出 token 价格不超过 $2/M。这是一种在单一配置中同时实现速度优化路由和硬性预算保障的方案。
哪款模型最便宜,同时又足够好用?
供应商路由可以降低你已选定模型的成本。而选择更便宜的模型则是更大的杠杆。前沿模型与能力强大的开源权重模型之间的成本差异,通常每 token 相差 10 倍到 50 倍。
像 DeepSeek V4、Llama 3.3 70B、Qwen 和 Mistral 这样的开源权重模型,能够很好地处理大多数生产任务:文档处理、分类、摘要、代码生成、结构化输出提取。对于绝大多数工作负载来说,它们都是正确的选择。
同一模型在不同供应商之间的价格差异,使得路由的论点变得具体。以下是 Llama 3.3 70B 在四个供应商处的价格:
| 供应商(Llama 3.3 70B) | 输入 $/M | 输出 $/M |
|---|---|---|
| DeepInfra | $0.10 | $0.32 |
| Novita | $0.135 | $0.40 |
| Groq | $0.59 | $0.79 |
| Together | $1.04 | $1.04 |
仅输出定价一项,同一模型就从 $0.32 波动到每百万 token 超过 $1,有些端点甚至超过 $2。这正是让路由器选择最便宜的合格供应商,而不是硬编码一个供应商的全部理由。
进阶操作:选择能通过性能底线的最便宜模型
如果你对处理请求的具体模型没有硬性要求,可以给 OpenRouter 提供一组可接受的模型,让它在这组模型中找出最便宜的、同时仍能满足吞吐量阈值的端点。设置 `partition: "none"` 会告诉路由器按价格在所有模型中全局排序,而不是始终优先尝试第一个模型:
const completion = await openRouter.chat.send({
models: [
'anthropic/claude-sonnet-4.5',
'openai/gpt-5-mini',
'google/gemini-3-flash-preview',
],
messages: [{ role: 'user', content: 'Summarize this PR.' }],
provider: {
sort: { by: 'price', partition: 'none' },
preferredMinThroughput: { p90: 50 },
},
stream: false,
}); 这样就会路由到三者中价格最低的模型与提供商组合,且该组合在 p90 水平下每秒至少能输出 50 个 token。对于编码类任务,像 DeepSeek V4 和 Qwen3 Coder 这样的开源权重模型,性价比尤为突出。
BYOK 如何降低成本?
如果你已经拥有某个提供商的 API 密钥——无论是通过直接合同、协商费率还是现有额度——BYOK(自带密钥)功能可以让你通过 OpenRouter 使用这些密钥进行路由。你保留与提供商的关系和定价。OpenRouter 在此基础上增加了路由、故障转移和可观测性功能。
费用为同一模型和提供商在 OpenRouter 上正常价格的 5%,且按量付费模式下每月前 100 万次请求免收此费用,企业版每月前 500 万次请求免收。对大多数团队而言,这意味着 BYOK 路由是免费的。
我们发现有些团队想当然地认为 BYOK 总是更便宜,因为他们用的是自己的密钥。只有当你的直接提供商费率(减去免收额度之上的 5% 费用后)低于 OpenRouter 的无加价目录价格时,BYOK 才会比标准的按量付费模式更划算。在每月 100 万次请求以下,费用是免收的,因此如果你已有提供商的额度,几乎总是值得使用 BYOK。超过这个阈值后,在假设它能省钱之前,请先算清楚账。
对于在故障转移集合中使用 BYOK 的情况,`partition: "none"` 同样有帮助。如果你的主模型没有配置 BYOK 提供商,但某个故障转移模型配置了,这就能让 OpenRouter 路由到使用你密钥的故障转移模型,从而让更多流量走你自己的定价:
const completion = await openRouter.chat.send({
models: ['anthropic/claude-sonnet-4.5', 'openai/gpt-5-mini'],
messages: [{ role: 'user', content: 'Hello' }],
provider: { sort: { by: 'price', partition: 'none' } },
stream: false,
}); 业余项目有免费的 LLM 模型可用吗?
有的。OpenRouter 提供 20 多个免费模型,可通过与你其他所有用途相同的端点和 API 密钥调用,token 成本为零。对于副业项目或周末原型开发,你无需任何花费就能上手。
该阵容包括 Llama 3.3 70B、Qwen3 Coder、GPT-OSS 120B 和 NVIDIA Nemotron 3 Super 等模型。这些都是扎实的模型,足以用于原型开发和早期验证。
免费模型与付费模型采用相同的请求格式。你只需将模型字符串改为免费模型的标识符即可:
curl https://openrouter.ai/api/v1/chat/completions \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "meta-llama/llama-3.3-70b-instruct:free",
"messages": [{"role": "user", "content": "Summarize this changelog in two lines."}]
}' 你可以在 openrouter.ai/models?max_price=0 浏览完整列表,或者让免费模型路由器自动为你选择一个。
限制条件:免费层的速率限制
免费账户每天可发起 50 次请求,每分钟 20 次。当你充值 10 美元或更多积分后,免费模型的使用上限将提升至每天 1,000 次请求,每分钟仍为 20 次。该笔充值永不过期。
| 账户状态 | 请求数/天(免费模型) | 请求数/分钟 |
|---|---|---|
| 免费账户 | 50 | 20 |
| 充值 10 美元以上 | 1,000 | 20 |
在基于免费模型进行开发之前,你还应该了解:免费端点的上下文窗口有时比付费端点小,因此付费端点上能处理的长上下文任务,在免费端点上可能会被截断。此外,失败的请求仍会计入每日配额,因此配置错误的重试循环可能会在产生任何有用结果之前就耗尽你的配额。
值得了解的成本陷阱
最便宜的标价并不总是最低的实际成本。如果不提前规划,有几件事会增加你的账单。
最便宜的端点可能是量化后的端点
当输出质量意外下降时,大多数开发者会认为是模型变了或提供商更新了某些内容。一个可能的原因是量化。一些提供商以更低的价格提供量化后的模型权重:FP8、FP4、INT8。你的应用程序仍然会返回响应。只是结果与全精度权重产生的不同,而且你的日志中没有任何信息能告诉你原因。
公平地说,量化并不一定更差。我们自己的基准分析发现,一些激进量化的端点能与全精度竞品相媲美。但如果你的工作负载对精度敏感,你有两个控制手段。
排除特定提供商:
"provider": {
"sort": "price",
"ignore": ["provider-slug"]
} 或者通过量化过滤器要求更高精度的服务:
"provider": {
"sort": "price",
"quantizations": ["fp16", "bf16"]
} 5.5% 的平台费用应计入所有成本计算中
我们不会对提供商的 token 定价加价,但按量付费的信用额度购买会收取 5.5% 的平台费用。充值 100 美元,就有 5.50 美元从你的推理预算中扣除。这在定价页面上有说明,并非隐藏费用,但正是这个数字让某些对比产生了误导。
任何将 OpenRouter 的 token 费率与直接提供商费率进行比较的成本计算,如果不包含这笔费用,都是不完整的。
取消流式请求并不总能停止计费
如果你在响应中途中止一个流式请求,OpenRouter 会在支持流式取消的提供商处停止计费。Bedrock、Groq、Google、Mistral 以及其他几家提供商不支持此功能。
如果你的应用程序频繁取消流式请求——无论是由于用户取消按钮、超时,还是提前短路退出的智能体循环——在依赖此功能作为成本控制手段之前,请先检查哪些提供商支持取消。
失败的免费层级请求仍会计入你的配额
如果免费模型请求因速率限制、提供商故障或超时而失败,它仍然会消耗你每日 50 次或 1000 次请求中的一次。一个误触发的重试循环可能会在产生任何有用结果之前耗尽你的配额。如果你在免费端点上构建应用,请添加带有退避机制的重试逻辑。
综合总结:成本决策规则
以下是一个“何时使用此方案”的对照表:
| 你的情况 | 应对措施 | 配置 |
|---|---|---|
| 仅用于测试或业余项目 | 免费模型,0 美元 | model: "...:free" |
| 需要特定模型且价格最低 | 添加 :floor | model: "...:floor" |
| 任何可用的模型都行 | 回退集合,按价格排序并设有吞吐量下限 | sort: { by: "price", partition: "none" } + preferredMinThroughput |
| 严格的预算上限 | 添加价格上限 | provider: { max_price: { prompt: 1, completion: 2 } } |
| 已直接向某提供商付费 | BYOK | 配置你的密钥,每月 100 万次请求内免费 |
| 想要最便宜但担心质量 | 排除某些提供商或按精度过滤 | ignore: ["provider"] 或 quantizations: ["fp16", "bf16"] |
| 最便宜且可靠 | 保持默认设置不变 | 无需配置 |
核心思路:在 OpenRouter 上实现低成本,是一次性完成的配置决策。
有关这些控制杠杆背后完整的路由机制,请参阅提供商路由参考和模型回退文档。
常见问题解答
OpenRouter 比直接使用提供商更便宜吗?
在模型 token 定价上,不会。我们按提供商费率原价传递,不加价。真正的省钱之处在于路由:可以接入你可能没有账户的更便宜提供商;自动故障转移,避免失败请求浪费算力;以及将批量任务路由到最便宜的可用端点,而你无需维护这套逻辑。实际需要考虑的成本是购买积分时 5.5% 的平台费。如果每月推理花费 500 美元,这笔费用就是 27.50 美元。是否值得,取决于你原本要花多少工程时间来管理提供商。
OpenRouter 上最便宜的模型是什么?
免费模型的 token 费用为零。可用模型包括 Llama 3.3 70B、Qwen3 Coder、GPT-OSS 120B 和 NVIDIA Nemotron 3 Super,未充值积分时每天限制 50 次请求,充值 10 美元或以上后每天限制 1000 次。对于付费推理,使用带有 `:floor` 路由的开放权重模型,会自动为你选择该模型最便宜的提供商。
OpenRouter 的免费模型真的免费吗?
是的,每个 token 费用为零。免费账户每天限制 50 次请求,充值 10 美元积分后每天限制 1000 次,两者均限制为每分钟 20 次请求(20 RPM)。免费端点的上下文窗口有时比付费版本小。
如何始终使用最便宜的提供商?
在模型标识符后追加 `:floor`,或在请求体中设置 `provider.sort: "price"`。两者效果相同。
最便宜的大语言模型 API 是否足够用于编程?
对于常规编程任务,是的。像 Qwen3 Coder 和 DeepSeek V4 这样的开放权重模型,能够以前沿模型价格的一小部分,处理样板代码、重构、代码审查和文档编写。前沿模型在复杂架构和困难调试方面仍具有明显优势,因此将昂贵的调用留给需要它们的工作。
OpenRouter 会对失败请求收费吗?
不会。你只需为成功完成的请求付费。失败和回退请求不计费。