模型还没署名就先能用:匿名预览版接入前要设的四道闸

一、预览版与正式版之间差的不是质量,是四项承诺
有厂商上线了一个带预览后缀的文本模型并开启公测,据公开报道,其介绍里同时写了原生多模态与很大的上下文窗口。这些都属于能力声明,不是我们能拿去当依据的东西。企业侧要问的是另一组问题:这个接口有没有可用性目标,字段会不会改,跑出来的结果能不能追回某一个固定版本,出了事有没有一条正式渠道会知会我们。把这四项摊开,预览版和正式版的区别就不靠感觉来判断了。
| 承诺项 | 正式版通常具备 | 预览版与匿名标识的实际状态 | 接入侧要补的动作 |
|---|---|---|---|
| 服务等级 | 有可用性与延迟目标,未达有约定处理 | 无,或只写在公测条款的一段话里 | 自建延迟与错误率监控,自己定告警阈值 |
| 接口稳定 | 破坏性变更走版本号和通知期 | 字段可随时增删改,返回结构不稳 | 网关适配层兜住,缺字段有默认值 |
| 版本可取回 | 有版本快照或明确的迁移窗口 | 无,同一标识下的行为可以整体换掉 | 固定输入集长期留档,周期性比对行为 |
| 变更通知 | 有控制台公告或订阅渠道 | 靠社区消息与推测 | 排周期巡检任务,不依赖某个人盯新闻 |
这四行里最要命的是第三行。质量差是能被测出来的,测出来就可以不用;行为不可锁定是我这个月测出的结论,下个月可能不成立,而我不会收到任何提示。所以在我们的判断里,接入决策的门槛不是“这个模型够不够好”,而是“它变坏了、变贵了、消失了,我多久知道,多久切走”。
二、第一道闸是隔离:它不在主链路上跑
未署名或预览版的模型,第一个原则是没有业务流量直接穿过它。具体做法是影子路由:把主链路的输入复制一份发给候选模型,结果只落库不参与决策,同一批输入同时打给已经签了合同的正式版本,两边逐条对比。这样做有两个好处,一是评测集是真实业务分布而不是自己造的题,二是零风险成本。
隔离还要加一条硬约束:候选模型不允许触发任何有副作用的动作。它可以生成文本建议,但不能直接写数据库、发通知、下发设备指令或调用对外接口。理由很直白——一旦它做了一个不可逆动作,我就没有“撤回来重新判定”这条退路了,四道闸里最后一道会当场失效。
晋级条件要提前写死,不要跑到一半再商量。我们内部常用的三条是:固定输入集上的判定不劣于当前版本;连续一个观察周期内的错误率、格式合规率与延迟分位数在可接受带内;成本口径按真实流量折算后不超过预算。任一条不满足就停在影子位,影子位可以长期停,这不是失败。
三、第二道闸是可换:模型标识不出现在代码里
这一条听起来像架构洁癖,实际是退出能力的前提。要求是:所有调用经过统一网关,业务侧只提任务类型和参数意图,模型标识、供应商端点、鉴权凭证全部在配置里,换一个模型是改一次配置发一次部署,不改一行业务代码。
网关还要处理三件麻烦事。第一是参数语义映射,同一个温度参数在不同家的实现里行为并不一样,需要在映射表里显式写清每个参数的取值范围与默认值,不允许把上游参数原样透传出去。第二是返回结构容错,字段缺失、多义、类型漂移都要在网关层吃掉并记一条异常,而不是让业务代码去判空。第三是输出解析的约束,把结构化输出对格式的要求写成校验规则而不是提示词里的祈使句,校验不通过当次就判定失败,不要拿半截结果继续跑。
另外要提前处理一个隐性绑定:提示词模板。为某个模型反复调出来的措辞、示例和停止符,对另一个模型可能就是干扰。所以模板要按模型族分版本存,换模型时同时切换模板版本,不能假设一份模板通吃。
四、第三道闸是留证:每一次调用都能重建
追责和复现都建立在这条上。我们要求每次调用至少落下面这些字段:请求唯一标识、业务场景标识、输入内容的哈希与截断摘要、完整参数集快照、实际请求到的模型标识以及响应头里回传的版本信息、返回码与错误文本、首字节延迟与总耗时、输入与输出 token 数、结果是否被采用、时间戳及其来源。缺任何一项,事后就没法重建。
留证有两个常被忽略的细节。一是模型标识要记“响应侧返回的”,不是“我请求的”——网关重试、负载均衡和静默回退都可能让两者不一致。二是输入摘要不能只记哈希,哈希对不上时我无法知道差在哪;记一段截断的明文摘要加上一个内部可取的存储位置,才具备定位能力。保留期按场景风险分档,涉及客户数据的按合规要求定,纯内部辅助场景可以短一些,但“永久丢弃”和“永久保留”都是不合适的选项。
五、第四道闸是退出:切回条件、连带物和演练
退出不是“把配置改回去”这么简单,因为有三样东西会随模型一起变。缓存键里含模型标识,切走之后命中率直接归零,延迟和成本会在切换当天出现一个台阶,这个台阶要提前算进切换方案而不是事后解释。向量库更硬:不同模型族产出的嵌入不在同一空间里,旧向量对新模型没有意义,换嵌入模型等于全量重建,重建期要能双写和灰度校验。提示词模板的影响前面说过,切回时要连同模板版本一起回退。
所以退出闸的交付物是一份写下来的切回条件和一次演练。条件按失效模式给:限流额度骤降时看额度消耗速率与拒绝比例;接口字段变更时看网关校验失败率突刺;模型行为漂移时看固定输入集的周期回归结果。演练要量出真实耗时——从决定切到全部流量回到可信版本用了多久,缓存冷启动多久恢复,向量库重建要多久能追平。没有演练过的回退时间是估计数,不是能力。
六、能力声明自己验,失效信号提前定
据公开报道,这类预览模型会强调超长上下文与原生多模态。要用的话就得把它们当成待验证声明。长上下文的能力验收不能只看“塞得进去”,我们按输入长度分档出题,同一条关键信息分别埋在开头、中段、靠尾三处,量各档长度下的召回正确率、首字节延迟和单位成本,画出来的是一条随长度恶化的曲线和一条价格曲线,这两张图比一句参数说明有用得多。多模态的验收按任务类型拆:图上文字提取、图表读数、多图对比、视频抽帧问答是四类不同的能力,一款模型可以在前两类过关而在后两类完全不可用。
漂移的发现靠固定输入集加周期性回归。除了正确率,还要盯三个不那么显眼的信号:输出格式的合规率、拒答与推诿的比例、成本与延迟的分位数分布。行为漂移往往先在这三处露头,正确率要过一阵才掉下来。
采购面最低的三项书面要求:变更与下线的通知期、数据留存与用途说明、公测条款的终止条件。口头承诺不计入。使用政策面则要说清哪些场景可以拿未署名模型试、哪些场景禁止用它处理客户数据——在洹拓内部的口径里,涉及客户业务数据、对外发布内容和任何带副作用的动作,一律只允许走已签合同的正式版本,未署名模型的可试范围限定在内部草稿、离线评测和已脱敏的历史样本。这套政策写下来并且能在网关上强制执行,才算真的存在。