# 从 OpenRouter 迁移到 KeepRouter：核对 URL、模型 ID 与路由字段

> 先迁移一个兼容文本功能，明确把 OpenRouter 配置映射到当前 KeepRouter 模型与端点。供应商策略、回退设置和有状态对象需要单独审查，更换主机不会自动翻译这些内容。

_发布 2026-09-23 · 更新 2026-09-29 · [KeepRouter Editorial](https://keeprouter.com/editorial-policy#editorial-team) · 6 分钟阅读_

![按托管访问、供应商控制、可观测与自托管整理的 OpenRouter 替代图](https://keeprouter.com/editorial/blog/openrouter-alternatives-for-developers.png)

_逐项映射请求依赖，并保留完整回滚配置。_

从 OpenRouter 迁移到 KeepRouter，应该交付一份其他开发者能复现新旧请求、解释每个字段变化、并能切回原路径的记录。先选择一个已有验收条件的无状态文本功能。平台层面的选择见 [OpenRouter 对比页](/zh/compare/openrouter)，本文专注请求级操作手册。

候选线路必须出现在[当前模型目录](/models)中，并支持功能实际使用的操作。例如 [Claude Sonnet 4.6](/models/claude-sonnet-4-6)条目提供 KeepRouter 公开 ID 与端点信息。不要简单删掉 OpenRouter slug 前的厂商名来猜目标 ID；应建立明确映射，并逐项核查。

## 在本地检查配置

使用 [API 迁移检查器](/tools/api-migration-checker)，输入不含凭证的 JSON 并明确选择目标模型。下载 [Python 与 Node 示例包](/downloads/keeprouter-migration-starter.zip)，获得 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 放在环境变量中，而不是依赖字符串转换；凭证则保存在运行环境的密钥机制里。

```python
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 契约](/api/docs)及[模型路由说明](/zh/features/model-routing)比较。

不要为了让请求成功，就静默删掉承载真实要求的字段；也不要把没有文档支持的参数继续带到新线路，然后因为服务端接受 JSON 就认为参数生效。迁移记录应该说明，哪些行为保留、哪些被替换、哪些功能仍留在原路径。

如果使用 OpenRouter 原生 SDK，也要与 OpenAI SDK 用法分开检查。原生 SDK 可能暴露账户、路由和发现等专属操作，另一服务并没有对应方法。先缩小到普通 Chat Completions 路径，会让首轮迁移更容易检查。

## 验收完整请求生命周期

先运行非流式请求，并按功能条件检查内容。随后用同一份模型映射与客户端版本验证以下案例。

| 案例 | 必须证明的行为 |
|---|---|
| 流式 | 正确处理文字、终止状态和用量 |
| 工具调用 | 参数通过校验，工具结果返回后能完成回答 |
| 错误模型 | 应用提供可操作的错误信息 |
| 有范围的 Key | 只能调用已经评估的模型集合 |
| 超时或取消 | 调用方停止等待，请求仍可核对 |
| 对话第二轮 | 必要历史以正确结构保留 |

本文列出测试方法，并不声称案例已经运行。实际执行时，记录日期、SDK 版本、准确载荷、状态与请求标识。如果应用依赖 Responses 状态或其他供应商保存的资源，应检查目标端如何重新建立；已有 response ID 不是跨服务的对话导出文件。

## 按被接受的任务比较账单

两条路径的输出长度、缓存行为和尝试次数可能不同。应按每个被接受的任务比较费用，并保存每次尝试的原始 usage。可先在 [API 费用计算器](/tools/api-cost-calculator)选择目标 KeepRouter 模型估算，再按 OpenRouter 自己的客户费率另算原路径，再核对实际扣款；充值或其他单独收费项目应保留在业务比较中。

例如选择二十个固定工单案例，采用同一套通过条件，统计完成且合格的摘要数量，而不仅是 HTTP 成功数。如果某条路径需要额外修复请求，也要计入费用。不能只凭标价声称节省，也不能因为公开模型名接近就认定其上游服务相同。

## 回滚应恢复整个客户端配置

把旧地址、凭据引用、型号 ID 与产品专用选项放在同一份配置中。只恢复 URL，可能把 KeepRouter 型号或 Key 发往 OpenRouter。切流前，用无敏感信息的固定提示测试配置切换。[OpenRouter 快速开始](https://openrouter.ai/docs/quickstart)记录其客户端设置，上文 KeepRouter 配置应独立保存。排查时不要打印任何一边的密钥。

## 将上线和回滚作为完整配置操作

把主机、凭证引用、模型映射、请求字段规则和解析器版本放在一起。先移动一个范围有限的功能或受控流量，再观察请求记录；验收条件持续成立后才逐步扩大。旧配置应保留到现有对话和后台任务都有明确的完成路径。

回滚时恢复整个配置。仅恢复主机，可能遗留错误模型 ID、专用字段或流式解析方式。[通用 API 迁移清单](/zh/blog/openai-compatible-api-migration-checklist)覆盖更广的上线过程，[SDK 指南](/use-cases/openai-sdk)提供可以复制的客户端配置。

## 常见问题

### 删除 OpenRouter 厂商前缀就能得到目标 ID 吗？

不能依赖这种转换；应明确映射到当前 KeepRouter 目录中的准确 ID。

### OpenRouter provider.order 能原样使用吗？

它是 OpenRouter 的专用控制；应检查目标路由契约，KeepRouter 上游映射由运营方管理。

### HTTP 200 就通过迁移测试了吗？

没有。还需按功能验证内容、流式结束、工具接续、状态和计费。

### 回滚需要恢复什么？

应一起恢复主机、凭证引用、模型映射、请求字段规则与响应解析器。

## 参考的一手资料

_本文最近复核 2026-09-29_

1. [OpenRouter quickstart](https://openrouter.ai/docs/quickstart)
2. [OpenRouter provider routing](https://openrouter.ai/docs/guides/routing/provider-selection)
3. [KeepRouter routing contract](https://keeprouter.com/features/model-routing)
4. [KeepRouter OpenAPI](https://keeprouter.com/api/openapi.json)

## 继续阅读

- [KeepRouter 对比 OpenRouter](https://keeprouter.com/zh/compare/openrouter.md)
- [claude sonnet 4 6](https://keeprouter.com/models/claude-sonnet-4-6.md)
- [openai sdk](https://keeprouter.com/use-cases/openai-sdk.md)
- [api cost calculator](https://keeprouter.com/tools/api-cost-calculator)
- [OpenRouter 与 LiteLLM：按实际工作负载比较总运行成本](https://keeprouter.com/zh/blog/openrouter-vs-litellm-operating-cost.md)
- [KeepRouter API Key 配置：从免费模型走到一次受控付费请求](https://keeprouter.com/zh/blog/keeprouter-api-key-free-to-paid.md)

## 迁移前，先检查你的请求

在浏览器中检查型号 ID 与请求字段，无需 API Key，也不发送推理请求。

[检查示例配置](https://keeprouter.com/tools/api-migration-checker)

[创建 Key，测试免费模型](https://keeprouter.com/login?returnTo=%2Fconsole%2Fkeys%3Fmodel%3Dfree)

免费测试使用 free 模型；其他付费型号需要足够预付额度。

[全部文章](https://keeprouter.com/zh/blog.md) · [模型与价格](https://keeprouter.com/models.md)
