从 OpenRouter 迁移到 KeepRouter:核对 URL、模型 ID 与路由字段
先迁移一个兼容文本功能,明确把 OpenRouter 配置映射到当前 KeepRouter 模型与端点。供应商策略、回退设置和有状态对象需要单独审查,更换主机不会自动翻译这些内容。
发布 2026-09-23 · 更新 2026-09-29 · KeepRouter Editorial · 6 分钟阅读

从 OpenRouter 迁移到 KeepRouter,应该交付一份其他开发者能复现新旧请求、解释每个字段变化、并能切回原路径的记录。先选择一个已有验收条件的无状态文本功能。平台层面的选择见 OpenRouter 对比页,本文专注请求级操作手册。
候选线路必须出现在当前模型目录中,并支持功能实际使用的操作。例如 Claude Sonnet 4.6条目提供 KeepRouter 公开 ID 与端点信息。不要简单删掉 OpenRouter slug 前的厂商名来猜目标 ID;应建立明确映射,并逐项核查。
在本地检查配置
使用 API 迁移检查器,输入不含凭证的 JSON 并明确选择目标模型。下载 Python 与 Node 示例包,获得 dry-run、流式与工具续轮示例。静态及合成测试不代表已验证上游实际兼容性。
修改代码前,先写配置映射
| 配置 | 现有 OpenRouter 路径 | 需要核实的 KeepRouter 路径 |
|---|---|---|
| OpenAI SDK Base URL | https://openrouter.ai/api/v1 | https://keeprouter.com/v1 |
| 凭证 | OpenRouter API Key | 有模型范围的 KeepRouter API Key |
| 模型 | 准确的 OpenRouter slug | 当前 KeepRouter 目录 ID |
| 供应商策略 | order、only、ignore 等 | 目标服务有文档的线路控制 |
| 回退 | 模型或供应商回退配置 | 只重建目标明确支持的策略 |
| 计费证据 | OpenRouter 用量及账户记录 | KeepRouter 用量与余额记录 |
OpenRouter 在自己的契约中定义供应商排序及回退。KeepRouter 上游映射由运营方管理,OpenRouter provider 设置不能直接用来选择这些映射。如果指定供应商或地域是必要条件,而目标没有相应公开控制,这个工作流就没有通过迁移清单。
明确保留两份客户端配置
下面的 Python 代码只构造客户端,不发起 API 调用。将已验证的准确模型 ID 放在环境变量中,而不是依赖字符串转换;凭证则保存在运行环境的密钥机制里。
import os
from openai import OpenAI
profiles = {
"old": {
"base_url": "https://openrouter.ai/api/v1",
"api_key": os.environ["OPENROUTER_API_KEY"],
"model": os.environ["OPENROUTER_MODEL"],
},
"candidate": {
"base_url": "https://keeprouter.com/v1",
"api_key": os.environ["KEEPROUTER_KEY"],
"model": os.environ["KEEPROUTER_MODEL"],
},
}
def client_for(name):
profile = profiles[name]
return OpenAI(
base_url=profile["base_url"],
api_key=profile["api_key"],
timeout=30.0,
max_retries=0,
), profile["model"]应用在灰度验证时应选择其中一份配置,不要默认把每笔生产请求都复制到两家服务。影子评估涉及额外的数据处理和费用安排。首次比较可使用合成或经过选择的测试案例,并限制请求数量;诊断日志不需要记录提示词正文或密钥。
盘点 OpenRouter 专用行为
搜索请求构造器里的供应商偏好、回退模型数组、transforms、plugins、路由别名和归属 Header。将每项分为必要行为、可选行为或历史遗留配置,再把必要项与 KeepRouter API 契约及模型路由说明比较。
不要为了让请求成功,就静默删掉承载真实要求的字段;也不要把没有文档支持的参数继续带到新线路,然后因为服务端接受 JSON 就认为参数生效。迁移记录应该说明,哪些行为保留、哪些被替换、哪些功能仍留在原路径。
如果使用 OpenRouter 原生 SDK,也要与 OpenAI SDK 用法分开检查。原生 SDK 可能暴露账户、路由和发现等专属操作,另一服务并没有对应方法。先缩小到普通 Chat Completions 路径,会让首轮迁移更容易检查。
验收完整请求生命周期
先运行非流式请求,并按功能条件检查内容。随后用同一份模型映射与客户端版本验证以下案例。
| 案例 | 必须证明的行为 |
|---|---|
| 流式 | 正确处理文字、终止状态和用量 |
| 工具调用 | 参数通过校验,工具结果返回后能完成回答 |
| 错误模型 | 应用提供可操作的错误信息 |
| 有范围的 Key | 只能调用已经评估的模型集合 |
| 超时或取消 | 调用方停止等待,请求仍可核对 |
| 对话第二轮 | 必要历史以正确结构保留 |
本文列出测试方法,并不声称案例已经运行。实际执行时,记录日期、SDK 版本、准确载荷、状态与请求标识。如果应用依赖 Responses 状态或其他供应商保存的资源,应检查目标端如何重新建立;已有 response ID 不是跨服务的对话导出文件。
按被接受的任务比较账单
两条路径的输出长度、缓存行为和尝试次数可能不同。应按每个被接受的任务比较费用,并保存每次尝试的原始 usage。可先在 API 费用计算器选择目标 KeepRouter 模型估算,再按 OpenRouter 自己的客户费率另算原路径,再核对实际扣款;充值或其他单独收费项目应保留在业务比较中。
例如选择二十个固定工单案例,采用同一套通过条件,统计完成且合格的摘要数量,而不仅是 HTTP 成功数。如果某条路径需要额外修复请求,也要计入费用。不能只凭标价声称节省,也不能因为公开模型名接近就认定其上游服务相同。
回滚应恢复整个客户端配置
把旧地址、凭据引用、型号 ID 与产品专用选项放在同一份配置中。只恢复 URL,可能把 KeepRouter 型号或 Key 发往 OpenRouter。切流前,用无敏感信息的固定提示测试配置切换。OpenRouter 快速开始记录其客户端设置,上文 KeepRouter 配置应独立保存。排查时不要打印任何一边的密钥。
将上线和回滚作为完整配置操作
把主机、凭证引用、模型映射、请求字段规则和解析器版本放在一起。先移动一个范围有限的功能或受控流量,再观察请求记录;验收条件持续成立后才逐步扩大。旧配置应保留到现有对话和后台任务都有明确的完成路径。
回滚时恢复整个配置。仅恢复主机,可能遗留错误模型 ID、专用字段或流式解析方式。通用 API 迁移清单覆盖更广的上线过程,SDK 指南提供可以复制的客户端配置。
常见问题
删除 OpenRouter 厂商前缀就能得到目标 ID 吗?
不能依赖这种转换;应明确映射到当前 KeepRouter 目录中的准确 ID。
OpenRouter provider.order 能原样使用吗?
它是 OpenRouter 的专用控制;应检查目标路由契约,KeepRouter 上游映射由运营方管理。
HTTP 200 就通过迁移测试了吗?
没有。还需按功能验证内容、流式结束、工具接续、状态和计费。
回滚需要恢复什么?
应一起恢复主机、凭证引用、模型映射、请求字段规则与响应解析器。
参考的一手资料
本文最近复核 2026-09-29
- [1] OpenRouter quickstart
- [2] OpenRouter provider routing
- [3] KeepRouter routing contract
- [4] KeepRouter OpenAPI