你在做接入,看中 OpenRouter 一家能调很多家的模型,甚至有一部分不花钱的位。但真动手时会卡在几个地方:请求该发到哪、模型名怎么写、免费位为什么一会儿能用一会儿报错。这篇只讲调用方式本身,给你一套能照着发的请求格式、挑免费模型的判断标准,以及出错时先查哪一步。具体价格、免费额度和可用模型清单都在变,正文里不写死,指到站内对应页面去核。
你在做接入,看中 OpenRouter 一家能调很多家的模型,甚至有一部分不花钱的位。真动手时容易卡在三件事:请求该发到哪、模型名怎么写、免费位为什么一会儿能用一会儿报错。这篇只讲调用方式本身,不铺概念,给你一套照着发的请求格式、挑免费位的判断标准,以及出错时的排查顺序。
先说清楚一点:具体价格、免费额度、可用模型清单都在变,正文里不写死任何数字,需要核对时到站内对应页面看当天状态。你要拿走的是方法,不是某一刻的数值。
一次请求长什么样:入口、鉴权与两套协议
统一入口加一个标准 Bearer 鉴权头,key 从账号后台拿。请求体结构和 OpenAI 那套兼容,所以现成的 SDK 大多改 base 地址就能用。模型名统一写成「厂商/模型」的两段式,不带斜杠的名字不用。有些名字后面会带日期或变体后缀,含义到站内 /models 与 /ai-dict 对照,别凭记忆拼。
curl https://openrouter.ai/api/v1/chat/completions \
-H "Authorization: Bearer $OPENROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"厂商/模型","messages":[{"role":"user","content":"你好"}]}'| 你要做的事 | 判断标准 | 去哪核对 |
|---|---|---|
| key 放哪 | 环境变量,不进前端、不进仓库 | 账号后台的 key 管理页 |
| base 地址写啥 | OpenAI 风格 SDK 改 base 即可 | 站内 /base-url |
| 模型名怎么定 | 两段式,带斜杠 | 站内 /models 与 /ai-dict |
| 协议选哪套 | 老代码用 Anthropic 协议就别硬改 | 站内 /base-url 的兼容层说明 |
免费模型怎么挑、怎么用才不折腾
免费位的判断标准不是看名字里带没带 free,而是看当前页面标的计价方式和限流口径。免费位通常有两类限制叠加:每分钟请求数和每天额度上限,两类都要看,只盯一个很容易误判。当天的状态到站内 /openrouter 榜单与 /models 核对。
- 先定任务类型:摘要、分类、简单对话这类容错高的,才适合先压免费位
- 再在同一档免费位里挑上下文够用的,不要一上来看名字长就选
- 把每分钟请求数和每天额度上限都记下来,换算成你自己的调用节奏
- 提前准备一个付费位的兜底模型名,免费位限流时能立刻切
- 别把免费位当唯一通道,生产任务从一开始就想好切换路径
什么情况下不适用:长期跑的生产任务、要求稳定首字延迟的场景、需要特定上下文长度的任务,都不建议压在免费位上。免费位的抖动是常态,把它当调试和验证通道更合适。
第一次调通的最小步骤清单
- 备齐三样东西key、一个合法模型名、一个能打印完整响应的小脚本。先确认这三样都在,再谈接项目。
- 发最短请求只发一条 user 消息,不加 system、不加额外参数,看能不能拿到正常返回。
- 逐个加变量返回正常后,依次加 system 提示、加参数、加流式,每加一项都重跑一次。
- 流式单独调先关流式确认通,再开流式看首字。出问题时能立刻判断是流式这一段还是前面的问题。
- 留档把完整请求体、响应状态、模型名记下来。后面排查全靠这份记录。
报错先查哪一步:一个排查顺序
| 顺序 | 查什么 | 看到什么就往下走 |
|---|---|---|
| 第一步 | 状态码 | 先分清鉴权类、额度类、限流类、上游故障类,含义完全不同 |
| 第二步 | 模型名 | 斜杠写错、后缀过期、当前不可用,都会返回看起来像「找不到」的错误 |
| 第三步 | 限流 | 免费位最易撞并发或频率上限,先降并发再加退避 |
| 第四步 | 上游 | 同模型换个时间点重试,或换个模型验证是不是只有它不通 |
这套顺序的价值在于省时间:大部分报错在前两步就能定位,不用一上来就怀疑网络。错误码含义和退避写法,站内 /api-errors 与 /429-concurrency-backoff 已经讲透,这里只给顺序索引。
补一句适用边界:如果你接的是多模型路由做负载均衡,前两步的结论要放到整个路由池里看,单看某一次请求容易误判成上游全局问题。
下一步把模型名、免费位状态和限流口径的当天数字对一遍,再决定你的调用策略。→常见问题
OpenRouter 需要单独装 SDK 吗?
基本不用。它的请求结构和 OpenAI 那套兼容,多数语言现成的客户端改一下 base 地址和 key 就能发。如果你现有代码是 Anthropic 协议写的,先确认兼容层怎么配,别自己手搓两套。
免费模型能直接用在我的产品里吗?
技术上能跑通,但不建议当生产主力。免费位一般有频率和每日额度限制,还可能随时调整或下线,用户量一上来就会大面积报错。适合做原型验证、内部小工具,或者当付费模型不可用时的临时兜底。
为什么同一个模型昨天能调,今天报错了?
三种常见原因:模型名或后缀变了、免费位被撤掉或限流收紧、上游短时故障。按「状态码 → 模型名 → 限流 → 上游」的顺序查一遍,先确认是哪一类,再决定是改名、换模型还是重试。当天的可用状态去站内页面核,不要凭印象。