博客

OpenRouter 替代:价格透明、无额外路由费

直连式兼容 OpenAI 接口,预付费按 token 计费,页面直接标价,不叠加路由费。

目标关键词: OpenRouter alternative

GeniusRelay 和 OpenRouter 是同一个思路的两种实现:一个兼容 OpenAI 的接口后面挂很多模型。区别是每个模型页直接标价,计费是预付的按 token 扣费,不在上面再叠一层路由费。

真要迁走 OpenRouter,有用的问题只有三个:哪些模型能平移、调用点改什么、新账单长什么样。

提供什么

  • 37 家厂商的 599 个模型,含 OpenAI、Anthropic、Google、DeepSeek、智谱、Qwen、Meta、Mistral
  • 43 个无审查与消融模型
  • 支持的模型最高 2M 上下文
  • 线路间自动故障转移
  • 预付费按量计费,无订阅
  • 按 Key 设消费上限和到期日
  • 兼容 OpenAI 的 chat completions

对比

维度OpenRouterGeniusRelay
接口形态兼容 OpenAI兼容 OpenAI
价格展示按模型按模型,输入/输出/缓存分开
计费购买额度,充值有平台费预付余额,按 token 扣
无审查目录有限43 个,独立分类
按 Key 限额有有,另有到期日
对比页模型列表四模型并排

实际的差别在目录形状。OpenRouter 更宽,GeniusRelay 偏向大多数网关会埋掉的长尾和无审查模型。如果你的负载包含角色扮演、中文流量或怕拒答的变体,差别不小。

调用点迁移

格式一样,改三个值:

from openai import OpenAI

client = OpenAI(
    base_url="https://api.geniusrelaygpt.com/v1",
    api_key="YOUR_GENIUSRELAY_KEY",
)

然后映射模型 ID。OpenRouter 的 ID 带厂商前缀(deepseek/deepseek-chat),GeniusRelay 用裸 ID(deepseek-v4.1-flash)。在配置里留一张转换表:

OpenRouter 风格GeniusRelay
deepseek/deepseek-v4.1-flashdeepseek-v4.1-flash
anthropic/claude-sonnet-5.5claude-sonnet-5.5
z-ai/glm-5.3-flashglm-5.3-flash

带厂商前缀的一律去掉。启动时校验 ID,未知模型是 400,不是回退。

保留真正在用的路由能力

OpenRouter 用户常依赖供应商偏好或回退列表,换成 GeniusRelay 的说法:

  • 回退: 在 5xx/429 时重试第二个模型。回退模型选同价位、能力相近的,免得一次故障账单翻倍。
  • 供应商固定: 没有单独字段,模型 ID 就是线路。需要原厂时选原厂的模型。
  • 缓存: 稳定前缀放最前,命中支持的缓存输入价。

回退列表别照搬。三层深的贵模型链会把一次故障变成三次扣费。

成本模型

预付余额意味着每笔请求都能看到扣费。两个习惯让账可预期:

  1. 每个 Key 封顶。 一个应用或一个客户一把 Key,带消费上限和到期日,重试风暴跑不出上限。
  2. 看清输入输出。 输出是贵的那一头,max_tokens 收住。

跑量时把模型分层:分类和抽取用便宜模型,生成用中档,只有难的那一小块上前沿模型。便宜 LLM API 指南有算术,价格页有实时费率。

参考价:

切换前要核的

  • 模型是否对得上。 有些 OpenRouter 独占模型没有直接对应。列出来,决定替代品能不能过你的提示词,剩下的砍掉。
  • 上下文上限。 别假设新模型同窗口,看模型页。
  • 工具 schema。 带 tools 标签的模型才接受 OpenAI tools 块,其余可能忽略。按工具调用页筛。
  • 客户端兼容。 Cursor、Cline、SillyTavern 都走同一个端点:Cursor、Cline、SillyTavern。

常见问题

兼容 OpenAI 吗?

兼容,base URL 改成 https://api.geniusrelaygpt.com/v1,用 GeniusRelay 的 Key。

能配 Cursor 或 Cline 吗?

能,两者都支持自定义 OpenAI 兼容端点,见上面的教程。

收平台费吗?

预付按 token 计费,模型页的价就是价,没有额外订阅。

OpenRouter 的模型这里都有吗?

不是全部。主流模型重叠很多,无审查和中文长尾更强,但不是镜像。

故障转移怎么做?

5xx/429 时重试第二个模型,靠 Key 上限兜底。回退模型保持同价位。

能两家一起跑吗?

能,端点不排他。边测边分流,之后再退掉一家。

开始

打开模型列表和对比页,为你依赖的每个 OpenRouter 模型找两个替代,跑自己的提示词。然后按快速开始接入,切流量前给 Key 设上限。

迁移检查单

切流量前逐条过:

  1. 从日志导出最近 90 天真正调用过的模型 ID。
  2. 对照模型列表,标成可直接替换、需要替代或放弃。
  3. 每个替代品用你的评测集跑两遍。
  4. 改配置里的 ID 映射,未知 ID 直接失败。
  5. 每个应用一把 Key,带消费上限和到期日。
  6. 两个端点影子并行一周,比失败率和每次成功调用的成本。
  7. 按比例切流量,不要一次全切。

回退写法

回退要无聊且有边界:

def complete(model, messages):
    try:
        return client.chat.completions.create(model=model, messages=messages)
    except Exception as exc:
        if getattr(exc, "status_code", 0) in (429, 500, 502, 503, 504):
            return client.chat.completions.create(model=FALLBACK, messages=messages)
        raise

只留一跳。FALLBACK 放同价位,免得一次故障把月预算改一个数量级。记录走了哪条路,回退频繁触发就是换主模型的信号。

回滚

切完把旧 base URL 和 Key 在环境变量里留两周。回滚只改一个值,提前备好就不会被逼着在生产里调试。失败率和成本曲线平了一周,再退掉旧 Key。

看哪些数

  • 每次成功调用的成本,不是每 token 成本。
  • 按模型拆的失败率,再分 429、5xx、格式坏和拒答。
  • 主线路和回退的 P95 延迟。
  • 命中回退的流量占比。

第一个数决定迁移成没成,后三个在没成时解释原因。


相关阅读