上线两个月的系统,某天开始输出格式不对了。排查代码,一行没改。查依赖,库版本没动。最后发现问题在模型侧:服务商把后端模型静默升级了一个版本,输出风格变了。
这种情况比想象中常见。模型不是固件,它会更新。同一个接口名字背后,这周和上月跑的多半不是同一套权重。理解版本之间差在哪,才能知道升级时该防什么。
各家命名规则不一样,但大致对应三类变化。
第一类是参数微调型的小版本。底子没换,训练数据又补充了一些,后训练策略调了调。表现通常小幅提升,指令遵循更听话,格式更稳定。这类升级一般不会出大问题,但细节行为会漂移。
第二类是底座换代的大版本。模型架构或规模变了,属于重新训练。能力上台阶,风格会明显不同,之前调好的提示词往往不再适用。这种升级需要重新做适配测试。
第三类是日期式命名。名字里带日期,说明厂商不承诺稳定性,随时会换。这类模型适合尝鲜和评估,不适合直接放进生产环境的核心链路。

最直观的是格式稳定性。同样一句「输出 JSON」,老版本老老实实只给 JSON,新版本会加一句「好的,以下是结果」再给。对程序解析来说,多这一句就是崩。
其次是拒绝边界。安全策略每次升级都会调整,某些话题的处置方式会变。之前能答的现在不答了,或者反过来。如果你的业务涉及敏感领域(医疗、金融、法律建议),这条影响很大。
第三是表达风格。长句变短句、解释变简洁、语气变中性,这类变化不影响正确性,但影响体验一致性。做品牌调性的团队对这点最敏感。
第四是推理深度。有些版本在回答前会做更长的内部思考,答案更严谨,但延迟明显增加。同样的接口,响应时间从两秒变成八秒,用户体验是断崖式变化。
除了版本升级,还有几个因素会让同一个版本表现不稳。
负载和调度。同一个模型部署在多组机器上,不同机器的批处理策略不一样,输出会有细微差异。高峰期为了吞吐会调整参数,同一句话问两次得到不同答案,属于正常现象。
解码随机性。温度参数大于零时,每次采样结果不同。有人以为这是模型不稳定,其实是你自己开的随机。需要稳定输出的场景,把温度调到零或者很低,一致性立刻改善。
上下文污染。同一个会话里前面的内容会影响后面的回答。看起来是「这个版本不行」,实际是那轮对话里带了误导信息。新开会话再问一次,结论可能完全不同。
评估偏差也常见。人对新版本更挑剔,遇到第一个错误就归因于升级。这种感觉需要用量化对比来破除,凭印象判断很容易错。
核心动作只有一个:建一套回归用例。
不用多,二十到五十条就够。从真实业务里挑,覆盖你最在意的场景:格式是否严格、边界问题怎么处理、专业术语有没有写错、长输入会不会截断。每条用例写清输入和期望输出,最好有判定标准(完全匹配、关键字段匹配、人工评判)。
这套用例平时不跑,只在换模型、换版本、改提示词时跑一遍。跑完对比通过率,涨了还是降了,一目了然。有了它,升级从「凭感觉」变成「有数据」。
建这套东西的成本大概一天,收益是之后每次升级都不慌。没有它,每次升级都像开盲盒。
接口层面留一个切换开关,新版本先跑灰度,比如百分之十流量。观察到异常能立刻切回旧版本。很多服务商保留旧版本一段时间,具体保留多久要看文档,长的有半年,短的只有几周。
如果服务商不支持版本锁定,那就要做好心理准备:它会变,你控制不了。这种情况下更要靠回归用例及时发现问题。

有个做票据识别的团队,把 AI 的输出接到财务系统里自动入账。流程跑了大半年,稳定。某周一早上开始出现大批解析失败,财务同事手工补了一天。
查下来是这么回事:他们的解析代码依赖模型的固定输出格式,字段名、顺序、括号都对得上才往下走。服务商在某次例行更新里,把某个字段的取值从数字改成了字符串,引号一加,正则就匹配不上。
这个改动在发布说明里写了,一行小字:「优化了部分字段的类型输出」。没人看。团队也没有回归用例,因为「接口一直很稳」。
补救花了三天:先写一个兼容层把两种格式都接住,再补上回归用例,最后把解析逻辑从「完全依赖格式」改成「容错解析」。改完之后系统确实更结实了,但这三天的成本本可以省下。
这件事的教训不是「不要升级」——升级不可控,躲不开。教训是:凡是有程序依赖模型输出格式的地方,都要有容错和监控。容错是接得住变化,监控是变化发生时能立刻知道。
服务商的更新公告一般很长,满篇「性能提升」「体验优化」。真正要看的只有几行。
第一行找「输出格式变化」。凡是提到 JSON schema、字段类型、默认值、markdown 渲染的,一律当成破坏兼容来处理,跑一遍用例再上线。
第二行找「上下文长度变化」。窗口调整会改变长文档处理的表现,之前靠截断兜住的问题会冒出来,之前失败的长输入会通了。这一项对你的分段策略有直接影响。
第三行找「安全策略调整」。拒绝边界的改动会突然影响某些业务场景,尤其是涉及建议类内容的业务。这一行没写也要留意,因为策略调整经常不写在公告里。
第四行找「弃用时间表」。旧版本什么时候下线,接口什么时候废弃,这些日期决定了你的迁移窗口。提前一个月知道,和上线前一天才知道,处理方式完全不同。
不是所有升级都值得跟。三件事出现时,值得升。
一是安全修复。厂商发现提示词注入漏洞或者越权问题,旧版本会被下线。这种升级是被动的,只能跟。
二是能力缺口堵住了你的业务。新版本支持更长的输出、更准的表格解析、更强的工具调用,这些正好是你当前的瓶颈,那就升。
三是成本下降。新版本同能力下价格更低或者速度更快,业务量大的团队值得迁移。迁移成本主要在用例重跑和提示词微调,一两天能搞定。
反过来,如果当前版本稳定、业务没瓶颈,就没必要追新。生产系统追求的是可控,不是最新。新版本发布初期的稳定性通常不如成熟版本,等一两个月再跟,风险小很多。
模型版本这件事,最该建立的认知是:它不是一次采购,是一段持续的关系。你今天调好的提示词、跑通的流程,都绑在某个版本的行为上。这个行为会变。
所以工程上要做的是把变化管起来:用例在手,能测;开关在手,能退;灰度在手,能控。这三样齐了,升级就只是例行工作;缺一样,升级就是事故。
