你在一个长规划会话顶部选了 GPT-5.5。聊到第 20 轮,回复突然不再认真推理了 —— 浮于表面、漏掉细节、自相矛盾。你看一眼模型选择器:还显示 GPT-5.5。但如果你 hover 或者展开消息的元信息,会发现最近这几条其实是 GPT-5.4 或者 “auto” 路由兜底跑出来的。ChatGPT 现在有一个内部模型路由,可以在同一条线程里悄悄换模型,把吞吐和成本放在一致性之上。最常见的原因是消息上限压力、工具调用的路由决策,以及重新生成时不知不觉换了模型。这是设计行为,只是 UI 上很少明说。
常见原因
按出现频率粗排。
1. Plus / Team 消息上限触发了静默降级
Plus 有一个按时间窗算的消息上限(常见是每 3 小时 ~80 条)。接近上限时,路由可以选择用一个更轻的模型给你回复,而不是直接报硬错。选择器显示的还是你选的模型;真正回复的是更小的那个。
怎么判断:你短时间内发了很多消息。线程开头几条回复明显比最近几条更扎实。参考 ChatGPT 消息上限触发。
2. 工具调用强制切到工具能力的模型
网页浏览、图像生成、Code Interpreter 和部分连接器需要特定模型变体。对话一旦调用了工具,路由可能透明切到工具能力的变体,然后下一条普通回复也不切回你最初选的那个。
怎么判断:最近用过工具(搜索结果、生成的图像、执行的代码)。那次之后所有回复的风格都跟之前不一样了。
3. 当前其实选的是 “Auto” 路由
模型选择器有个 Auto 选项,每一轮都把模型选择交给路由。如果你不小心选了 Auto(或者你的套餐下新对话默认就是 Auto),就根本没有”一致的模型” —— 每轮独立选。
怎么判断:打开选择器,被高亮的是 Auto 而不是你想要的模型。展开消息元信息时 “model used” 每条都不一样。
4. Regenerate 选了不同模型
Regenerate 按钮带一个模型子菜单。重新生成时如果没明确选回原模型,可能默默换到另一个选项(有时是更便宜的那个) —— 而且那一轮之后整条线程也会沿用新模型。
怎么判断:你刚刚 regenerate 过。质量正好从那一轮开始变化。
5. 模型发布或部分故障期间的限容
OpenAI 上新旗舰或部分故障时,路由会把流量从压力大的模型上移开。你的选择器没动,但回复其实由另一个模型给的。通常持续几小时。
怎么判断:同套餐的朋友也在抱怨质量下滑。OpenAI status 页显示部分降级。
6. 自定义 GPT 强制了自己的模型
自定义 GPT 在创建时可以绑死一个模型。如果当前对话是在自定义 GPT 里,选择器可能显示一个模型而 GPT 实际强制用另一个。退出自定义 GPT,开新空白对话就能消除这层冲突。
怎么判断:你在一个自定义 GPT 的对话里(左侧栏显示 GPT 名字)。同一个提示,在普通对话里质量和这里不一样。
7. 长上下文截断让好模型显得像坏模型
这其实不是模型切换,但经常被误判成模型切换。对话变长后,旧消息被摘要或丢弃。模型其实没变,只是它的上下文残缺了,在截断后的历史上推理就变差。
怎么判断:线程超过 40 轮、整体 token 估算很高、模型”忘了”前面立过的事。参考 ChatGPT 上下文窗口超限。
开始之前
- 抓两段回复对照 —— 一段来自线程早期,一段来自最近。
- 想一想最近一小时是不是发了很多消息,或者用过工具。
- 同时看模型选择器当前显示什么 + 任何能看到的消息元数据(hover 或者展开)。
- 弄清楚当前对话是在普通聊天、自定义 GPT,还是某个 Project 里。
需要收集的信息
- 当前选择器里的模型。
- 最近 3 条回复的 model 字段(展开消息找 “Model: …”)。
- 线程的大致回合数。
- 最近几轮是否调用过工具(浏览、图像、代码)。
- 你的套餐层级以及这个时间窗内大致发了多少条消息。
- 对话是否在自定义 GPT 或 Project 里。
一步一步修
先从最便宜的查起。
第 1 步:确认实际回复的模型
网页端 hover 回复(手机端长按),找 Model 字段。某些入口下,点回复的三点菜单 → “Show model”。如果实在看不到实际用的模型,切到网页 —— 网页上每条消息的元数据更可靠。
如果实际模型和选择器不一致,说明路由把你降级了。继续第 2 步。
第 2 步:在下一轮显式重新选一次模型
点模型选择器,把你想要的模型(比如 GPT-5.5)再点一下,哪怕看起来已经选着 —— 重新点一下会强制下一轮回复落到那个模型上。然后发个短测试:
确认这一轮是哪个模型回复的。一句话即可。
现代 ChatGPT 客户端通常会在回复里点出模型名。如果你选了 GPT-5.5 而它说是 GPT-5.4,说明上限或容量门在覆盖 —— 跳到第 4 步。
第 3 步:如果你 regenerate 过,用正确模型再 regenerate 一次
点 regenerate 的下拉,明确选你要的模型。线程从这一轮开始就会留在那个模型上。之前那条用错模型的回复可以在网页端从消息菜单里删掉。
第 4 步:等过上限窗口
如果是上限触发的,客户端怎么调都没用。上限是 3 小时滚动窗口,等一小时通常就会回来。判断当下还在不在限流:
- 发一个极短的回复(“好的”)。即使短回复也写得很弱,说明还在被限。
- 在一个全新对话里发同样的提示 —— 如果突然清晰起来,就是你那条老线程被去优先级了(长上下文)。
第 5 步:重要推理任务开新线程
长线程在上限压力下最容易被降级。要做关键推理任务时:
开一个新对话。把老线程里相关的上下文压缩成 3 个要点,
作为新对话的第一条用户消息粘进去。
带摘要上下文的短新线程,被路由到完整模型的成功率远高于 60 轮的老线程。
第 6 步:确认关掉 Auto 路由
Settings → Personalization(或者线程内选择器)→ 把 Auto 关掉。明确选一个模型。Plus 上这通常是手动选的;部分 Team / Enterprise 下管理员可能默认开了 Auto。
第 7 步:重要回合先跳出自定义 GPT
如果你在自定义 GPT 里且模型被强制,点 “New chat”(不带 GPT),粘提示进去,在你想要的模型上跑。结果再手动带回自定义 GPT 的上下文里。
第 8 步:如果 status 页变黄 / 红,承认正在故障
打开 status.openai.com。如果有部分故障或容量事件,只能等。这段时间内不要反复重跑关键提示 —— 重跑既花上限,又很少能在降级期间真的拿到更好结果。
验证
- 回复的元信息显示的模型就是你实际选的那个。
- “你是哪个模型”这种测试提示返回正确答案。
- 把一道已知难度的推理题问一遍,新回复的推理深度和线程开头时持平。
- 在新线程里复跑同一个提示,质量相当(排除是上下文截断问题)。
长期预防
- 重要的推理会话开新线程,尽量避免把工具调用和推理回合混在一起。
- 关注消息上限剩余量;把最重要的几轮放在还有充足额度时跑。
- 除非你明确想用成本换一致性,否则不要用 Auto 路由。
- 任何一次 regenerate 或工具调用之后,显式重新选一次模型。
- 自定义 GPT 想保留品牌但要旗舰质量,就把 GPT 绑定的模型直接改到当前旗舰。
- 长规划会话养成习惯,时不时扫一眼每条回复的 model 字段;路由的切换是无声的。
常见坑
- 把选择器 UI 当成真相。选择器是”请求”,元数据才是”实际”。
- 一条 50 轮的线程突然变蠢就怪”模型变笨了”,实际上是上下文被截断了。
- 反复 regenerate 五次想拿到更好答案 —— 每次都可能换模型,而且烧上限。
- 会话开头为了”省上限”切到小模型,到难点的时候忘了切回去。
- 把 Auto 路由和明确选了 GPT-5.5 当成一回事 —— 同样提示它们给的答案经常不一样。
- 在自定义 GPT 里以为全局选择器能覆盖 GPT 绑定的模型,通常并不会。
FAQ
Q: 自动切换是 bug 还是设计?
设计。路由的优先级是无论如何也要把请求服务好,容量紧张时降级到较小模型回复你,而不是直接报错。代价就是质量在用户看不到的地方波动。
Q: API 也是这种行为吗?
不是。API 严格按你请求的模型跑 —— 如果 gpt-5.5 压力大,你会拿到 429 / 503,而不是被静默降级。路由是 ChatGPT 产品端的功能,API 没有。
Q: 能看一条线程的”用量 / 模型日志”吗?
Settings → Data Controls → Export。导出文件里包含每条消息的模型元数据(已结束的线程)。实时的查看,网页端的 hover 大多数情况都能用。
Q: 同一个提示在不同日子质量不一样,为什么?
容量、路由规则、模型下线节奏、你自己的上限剩余度都在变。明确选模型、开新线程能把波动压到最低,但消除不了。
Q: 如果我看到的是 GPT-5.4 而不是 GPT-5.5,会一直这样吗?
不会。路由是按回合决策的。下一轮 —— 尤其是空闲几分钟、新开线程或者手动重新选过 —— 经常就回到你选的模型。容量驱动的降级一般是几分钟级别,不是整段会话。