全部教程

原创专题

OpenRouter 模型回退:写 models 列表,并检查实际用了哪个模型

用 models 数组设定优先顺序,了解哪些错误会触发回退,并在响应里核对最终使用的模型与计费口径。

AI Nav City撰写 / 更新 资料核验

主模型限流、下线或拒答时,调用方通常只想换一个模型重试,但换模型也会改变输出与计费。本文目标是写出一份带回退的请求,并给调用方一张检查表。前提是你有 OpenRouter API 密钥,并已确认每个候选模型适合你的数据与任务。这里只依据官方回退页写请求体并做离线检查,没有发送请求、登录账号或使用额度。

操作与验收顺序

  1. 定顺序

    按优先级列出候选模型,并写明每个模型可接受的输入。[1]

  2. 写请求

    在请求体里用 models 数组,Anthropic Messages 端点改用 fallbacks。[1]

  3. 核对结果

    读取响应里的实际模型,并记录是否发生回退。[1]

分步检查输入、操作和结果;执行范围见末节。

先决定哪些情况允许换模型

官方页说明,默认情况下任何错误都可能触发回退,包括上下文长度校验错误、内容审核标记、限流和服务下线。也就是说,回退不只是出故障时的备份,输入过长时也可能换到另一个模型。动手前先写一张表:每个候选模型能否接受同样的输入、输出格式是否仍满足下游、是否允许处理你的数据。任何一项答不上来,就不要放进列表(这是本文的建议,不是官方要求)。[1]

写 models 数组

官方示例向 https://openrouter.ai/api/v1/responses 发送 POST,请求体用 models 放按优先级排列的模型 ID,再配 input。原创练习的请求体只有两项:models 取页面示例的 ~anthropic/claude-sonnet-latest 与 gryphe/mythomax-l2-13b,input 是一句合成的会议备注摘要请求。这两个 ID 现在是否可用没有核实,采用时换成你已确认的模型。第一个模型出错才会尝试下一个;若回退模型也出错,返回的就是回退模型的错误。[1]

计费与 fallbacks 参数的限制

按官方页,请求按最终实际使用的模型计费,该模型名在响应体的 model 字段里。若 :free 模型后面跟着付费模型并发生回退,就按付费模型计费;要保持免费,列表里只放 :free 模型。走 Anthropic Messages 端点 /api/v1/messages 时改用 fallbacks 参数:最多 3 项,每项只能有 model 字段,且不能与 models 同时出现,违反时返回 400。本文不引用任何价格数字,具体价格请到官方页面自行查看。[1]

上线前检查与停止条件

离线脚本会标出这些情况:models 与 fallbacks 同时出现、fallbacks 超过 3 项、条目带 max_tokens 等覆盖项、models 只有一项、要求免费却混入付费模型;当列表第一项是具体模型 ID 时,响应的 model 与第一项不同,可记为发生了回退;第一项若是 ~ 开头的别名(如本文练习的 ~anthropic/claude-sonnet-latest),响应里的 model 很可能是解析后的具体 ID,这一比较会误判,对别名需先用一次真实响应确认 model 的取值,这一点本文没有验证。请求体用 jq 校验,curl 脚本只做了 bash -n 语法检查,没有执行,脚本里也不含密钥。调用方应记录每次响应的实际模型;回退比例异常升高,或最终返回的是错误,就停止放量,先查主模型的错误原因。回退速度和输出质量本文没有验证。[1]

本文来源

本站原创整理;官方说明与编辑建议分别标注。

  1. OpenRouter · 核验来源
    查看资料