Gemini API 模型下线后会被路由到哪

2026-11-06 16:17 更新

12 月 1 日起 gemini-2.5-pro 自动路由到 gemini-3.8-flash 并按后者计费,2.5-flash 路由到 3.5-flash-lite。(核验 2026-11-05,F29、F30)

一、Gemini API 模型下线后会被路由到哪:问题不是报错,而是悄悄换了模型还照收钱

大多数人以为模型下线是这样的:某天请求突然失败,报错写着模型不存在,你改个名字就好了。

官方现在的做法不是这样。老模型不会报错,会被自动路由到接替模型,并按新模型的费率计费。具体两条:

请求的模型 路由到 生效日 计费
gemini-2.5-pro gemini-3.8-flash 12 月 1 日 按 3.8 Flash 费率
gemini-2.5-flash gemini-3.5-flash-lite 12 月 1 日 按新费率

两条都出自官方弃用页(F29、F30)。官方在变更日志里还专门提醒:在那天之前把模型字符串改掉(F60)。

这件事的杀伤力在于它没有任何报错。你的代码还写着 gemini-2.5-pro,日志里也没有异常,只是输出的口吻变了、延迟变了、账单变了。等你发现,可能已经跑了两周。

二、Gemini API 路由检测:最小可运行示例

唯一可靠的检测点是响应里的 model 字段:你请求的名字和它返回的名字不一致,就说明被路由了。

## EXPECT: 请求 gemini-2.5-pro | 响应 gemini-3.8-flash | 已被自动路由=True | 计费按 3.8 Flash:输入 $0.75/1M,输出 $3.75/1M
REQUESTED = "gemini-2.5-pro"
RESPONSE = {"model": "gemini-3.8-flash", "output_text": "……"}
FLASH_PRICE = {"input": "0.75", "output": "3.75"}

def routed(req, resp):
    return req != resp["model"]

def billed_model(resp):
    # 路由后按被路由到的模型计费,不是按你请求里写的名字
    return resp["model"]

assert routed(REQUESTED, RESPONSE) is True
assert billed_model(RESPONSE) == "gemini-3.8-flash"
print(f"请求 {REQUESTED} | 响应 {RESPONSE['model']} | 已被自动路由={routed(REQUESTED, RESPONSE)} | "
      f"计费按 3.8 Flash:输入 ${FLASH_PRICE['input']}/1M,输出 ${FLASH_PRICE['output']}/1M")

价格写在 FLASH_PRICE 里只是示意,真实值要按价格页填,而且它有生效期——3.8 Flash 的 $0.75/$3.75 只到 December 31, 2026,之后翻倍(F34)。所以这个常量也不能真的写死。

三、解释与边界:三个信号、一条禁令

信号一:响应 model 字段与请求不一致。 这是唯一能当场发现的信号,加一行日志就能留下证据。建议把「请求模型 / 响应模型」成对打日志,而不是只打一个。

信号二:账单里单价变了。 同样的调用量,某天开始贵了一个量级,而你并没有改模型——很可能就是路由到更贵的模型了。Argon 与 Flash 的差价见 3.3。

信号三:变更日志里出现 deprecation 条目。 路由不是突发的,官方会先在变更日志公布,再在弃用页登记关停日(F71)。订阅这两个页面比出事再查快得多。

一条禁令:不要用「请求成功」判断模型还在。 自动路由的设计目标恰恰是让你察觉不到。判断「还在不在」只有两个办法:查弃用页,或者比对响应的 model。

边界。 本教程不教怎么「锁死」某个模型不让你被路由——官方提供路径是改模型字符串或走企业版渠道,具体以官方说明为准,不在正文臆造参数。

四、预期输出与异常分支

真跑输出:

请求 gemini-2.5-pro | 响应 gemini-3.8-flash | 已被自动路由=True | 计费按 3.8 Flash:输入 $0.75/1M,输出 $3.75/1M

三种分支。响应里没有 model 字段:说明你用的 SDK 版本把响应包了一层,去原始响应里找,别直接判定「没被路由」。请求与响应名字一致但账单变了:这不是路由,是价格切换(3.8 Flash 与 Argon 都有明确的切换日,F33、F34),两种原因要分开查。名字一致、账单也没变,但输出风格变了:那是另一回事,可能是同一模型的服务端更新,去变更日志翻当天条目。

还有一种最坏的情况:你请求的是 gemini-2.5-pro,路由到 gemini-3.8-flash 之后,你以为自己还在用 Pro,于是向客户承诺了 Pro 的能力。这类问题不会在监控里出现,只会在复盘时出现。

五、判据卡:什么信号说明请求已被自动路由

该这么做 不该这么做
日志成对记录请求模型与响应模型 只记响应内容,不记模型名
路由命中时告警,而不是静默通过 认为「没报错就是没问题」
在官方给的日期前改模型字符串 等路由发生后再排查账单
价格常量带生效期,不写死 把 $0.75 当成长期单价

六、来源与核验

  • https://aistudio.google.com/docs/deprecations.md(核验 2026-11-05,F29、F30、F71)
  • https://aistudio.google.com/docs/changelog.md(核验 2026-11-05,F60)
  • https://aistudio.google.com/docs/pricing.md(核验 2026-11-05,F33、F34)

自动路由的生效日是 12 月 1 日,本节结论会随该日期变化,复核周期一个月,见 1.3。若那天之后官方调整了路由目标或费率,以弃用页与价格页原文为准。

七、动手试

  1. 把 RESPONSE["model"] 改成 "gemini-2.5-pro",重跑。预期 已被自动路由=False;验收标准是你能说清「为什么名字一致时,账单仍可能变了」。
  2. 给 routed 加一条规则:当请求与响应都含 preview 但名字不同时返回 "preview 换版"。验收标准:输出能区分「下线路由」与「preview 换版」,并说明两者处理方式为什么不同。
  3. 查你自己的项目日志,看看有没有记录模型名。验收标准:能找到一行同时含请求模型与响应模型的日志;找不到,就在下一次发布里补上,这比事后对账便宜得多。
以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号