OpenRouter 是一层中转:你只在它那里充值、只拿一个密钥, 就能调用背后很多家的模型。适合还没想好用谁、想挨个试的人。 需要准备的东西只有一样:一个 OpenRouter 密钥。
它的配置是所有云端来源里最省事的,因为端点写死在服务端,你只需要填密钥, 模型列表会在连接成功后自动拉下来。
怎么配
- 顶部 API 下拉选「聊天补全」。
- 「聊天补全来源」选 OpenRouter。
- 把密钥粘进「OpenRouter API 密钥」。粘之前确认没带上首尾空格。
- 点「连接」。服务端这时会向 OpenRouter 的
/models发一次 GET。 - 连接成功后,模型下拉里就有东西可选了,挑一个。
端点、密钥、模型名分别从哪来
端点你不用填,写死是 https://openrouter.ai/api/v1;密钥在 OpenRouter
后台自己生成;模型名不要手打,点完连接从下拉里选。
| 要填什么 | 来源 | 说明 |
|---|---|---|
| 端点 | 代码常量,不用填 | 生成请求发到 /chat/completions,模型列表走 /models |
| 密钥 | OpenRouter 后台 | 服务端存为 api_key_openrouter |
| 模型名 | 连接后的下拉列表 | 列表内容由 OpenRouter 返回,我们不缓存也不改写 |
基础地址这个常量在 SillyTavern 里是
API_OPENROUTER,
PokiTavern 服务端照抄了同一个值。
请求里为什么会带 Referer 和 X-Title
发给 OpenRouter 的每个请求都会多带两个固定请求头:
HTTP-Referer: https://sillytavern.app 和 X-Title: SillyTavern。
这是照抄 SillyTavern 的常量,不是我们加的。
两个头都写在
OPENROUTER_HEADERS
里,取模型列表和发生成请求时都会带上。兼容优先,所以即使它们指向的是 SillyTavern 官方站点,
我们也原样保留。
填了「反向代理」为什么没生效
因为 OpenRouter 这条路根本不读那一栏。它的基础地址是常量,反向代理只对 OpenAI、 Claude、DeepSeek、Google 这几条路生效。
想走别人的中转,正确做法是改用「自定义(兼容 OpenAI)」来源,把中转地址填进 「自定义端点(基础 URL)」。填法见 OpenAI 与兼容端点那一页。
连不上时先查什么
| 现象 | 多半是 |
|---|---|
| 点连接毫无反应,模型列表空 | 密钥那一栏是空的。密钥为空时服务端直接回 400,根本不去请求上游 |
| 提示 400,但你确信密钥填了 | 上游返回的 401 会被改写成 400 再回给前端,所以这个 400 其实是「密钥被对方拒绝」 |
| 502 | 连不上上游。断网、DNS 解析失败、代理不通都归到这一类 |
| 能连上,一发消息就报错 | 展开错误正文看原话。上游的错误体是原样透传的,余额、限流、模型下线都在里面写着 |
常见问题
需要代理才能连上吗
取决于你的网络能不能直连 openrouter.ai。服务端支持代理,按
ALL_PROXY、HTTPS_PROXY、HTTP_PROXY 这几个环境变量解析,
NO_PROXY 里列出的域名走直连。手机上更常见的做法是系统层面的全局代理。
和直连各家官方 API 比,差别在哪
少注册几个账号,多一层中转。要压延迟,或者要用某一家的独有参数,直连更稳。 DeepSeek、Claude、Gemini、OpenAI 都有各自的专用来源,配置见 接入枢纽页。
「文本补全」里也有 OpenRouter,那个是什么
是另一条通道。文本补全下的 OpenRouter 会把请求发到
{你填的服务器地址}/v1/chat/completions,也就是需要你自己填地址。
一般没有理由用它,聊天补全那条更省事。
模型列表拉下来了,但发消息说模型不存在
模型名是原样透传的。如果你手动改过模型那一栏,改回从下拉里选。 OpenRouter 的可用模型会变动,我们不在本页列具体型号,那种清单过期得很快。
换成别的接入方式
不想付费的话,另外两条路完全不产生按量费用: 手机端侧模型把模型下到本机跑,断网可用; Ollama 让模型跑在你自己的电脑上,手机走局域网连过去。 七条路的横向对照在枢纽页。