服务商侧安全漂移:当你的产品在未发布的情况下发生回退
周二还能用的提示词(prompt),到周四就返回了“我无法提供帮助”。CI 评估依然是绿色的。你配置中的模型名称没变。提示词在字节层面完全一致,在源码控制中也经过了哈希处理和固定。然而,一个围绕新出现的拒绝回答(refusal)的客户支持线程正在形成——AI 团队在两周内都不会察觉到这一点,因为它必须经过一级支持、分类,最后才落到能读取追踪信息(trace)的人手中。
这就是服务商侧的安全漂移(provider-side safety drift),它是当今生产环境 AI 中构建最不完善的监控缺口。前沿服务商会以不在你发布日程上的频率,在服务端调整安全过滤器、拒绝阈值和内容分类器。你的团队没有订阅这些变更,通常也没有发布说明。而且这种退化是具有非对称性的,以一种确实难以察觉的方式呈现:正当意图的拒绝率悄悄爬升,而你认为服务商会过滤的有害查询却开始悄悄溜过。边界在两端独立移动,且毫无预警。
你实际调用的三组件 模型
大多数团队采用的心智模型是“我们调用模型”。那个模型是错误的。你实际调用的是至少包含三个独立版本化组件的系统:
- 权重 (Weights) —— 训练好的网络。这就是模型 ID 表面上固定的内容。
- 系统工具链 (System tooling) —— 围绕权重的服务端脚手架:结构化输出强制、工具调用编排、函数调用清洗器、系统提示词前置内容、信任与安全分类器链。
- 安全策略 (Safety policy) —— 那些分类器上的阈值配置、拒绝准则、被视为禁止的类别、针对特定用例的例外处理。
Anthropic 和 OpenAI 都已转向使用不可变的、带日期的快照 ID 来表示 权重。尤其是 Anthropic 声称,固定的 Claude 快照 ID 在该 ID 的生命周期内是稳定的 —— claude-sonnet-4-5-20250929 的底层权重不会改变。这一承诺很有意义,但未被充分利用。
但该约定仅涵盖了三个组件中的一个。系统工具链和安全策略的调整频率远高于权重发布频率,而且调整时不会铸造新的模型 ID,因为权重没有改变。因此,你的代码调用的 API 端点 —— messages.create(model="claude-sonnet-4-5-20250929", …) —— 针对相同的输入和相同的模型 ID,可能会在周复一周的情况下返回实质上不同的输出,而这完全符合服务商所陈述的稳定性承诺。
那些固定了模型 ID 并假设这就意味着“行为已冻结”的团队,实际上是在产品中植入了一个服务商从未承诺过的关键假设。
