跳到主要内容

供应商可迁移性税:为什么“我们可以更换模型”是每季度的成本项,而非一个勾选项

· 阅读需 12 分钟
Tian Pan
Software Engineer

在过去六个月中,我审计过的每一个团队都声称自己是供应商无关的。但实际上没有一个团队能做到。在评估套件中得分最高的系统提示词之所以表现出色,是因为它倾向于单一供应商的分词器行为、JSON 模式协议、拒绝节奏以及停止序列处理 —— 而编写该提示词的团队甚至无法说出其中哪些偏差在起作用。当 CFO 询问为什么采购清单上更便宜的模型不能直接替换时,诚实的回答是:这需要两个工程师季度的提示词重新调优以及对每个评估进行完全的基准重设。这不仅仅是一个勾选项。它是一个季度的成本项。

一直困扰团队的心智模型是将供应商可移植性视为一次性的架构决策。你添加了一个抽象层,在配置中写了一个 model: 字段,以此自我庆贺,然后继续前进。一年后,当供应商提价、发布弃用通知,或者在你关注的某个类别上出现了一周糟糕的拒绝服务时,你发现那个抽象层只是一个围绕特定模型提示词的薄包装。你买到的可移植性是语法上的。而你真正需要的是行为上的可移植性,且行为上的可移植性在你停止支付的那一刻就会衰减。

这篇文章讨论的是“我们可以切换”背后的真实代价。不是那些假装它是免费的架构图,而是你每个季度必须投入资金以维持这一声明真实性的具体规程:一份分词器无关的提示词风格指南、一套支持跨供应商运行并带有差值追踪的评估套件、一个提示词作为目标模型函数的路由层,以及一个将对等性视为持续维护属性而非一次性迁移的回归预算。

“可移植”提示词中隐藏的单一供应商调优

在你仓库的前十大提示词中,针对另外三家供应商进行审计,你会发现一些看似通用实则专有的细节。XML 标签脚手架 (<format>, <context>),一个模型能精确遵循,而另一个模型则会围着它过度解释。Markdown 标题和编号分隔符,另一个模型依赖它们来进行指令遵循。针对单一供应商政策面调优的隐式拒绝措辞,使提示词避开了特定的拒绝类别而无需指名道姓。符合特定分词器空格处理逻辑的停止序列假设。通过在单一模型注意力模式下反复试验得出的少样本示例 (few-shot examples) 排序。

在代码评审中,这些都不会被读作特定于供应商。它们被读作“在评估中得分最高的版本”。这正是问题所在。评估套件会根据你调优的模型对提示词进行排名,因此,一个利用了单一供应商偏差的提示词在同一评估中总会胜过可移植的提示词 —— 即使可移植的提示词在跨供应商平均水平上表现更好。选择过程本身就是锁定过程。你的可移植性问题不是因为有人做出了糟糕的架构决策,而是因为你的评估循环一直在默默地选择这种锁定。

解决方法不是禁止特定于供应商的提示词。而是要命名它。维护一份分词器无关的提示词风格指南,列出已知的特定模型癖好 —— XML 标签、Markdown 结构偏好、避免拒绝的措辞、停止序列模式 —— 并将任何使用它们的提示词标记为“调优型”变体。当存在调优型变体时,必须同时存在可移植变体,并与其一起进行评估。两者之间的成本差值就是你真实的锁定代价,这应该是平台团队每季度报告的一项指标。

跨供应商评估是一项订阅,而非一个项目

大多数团队只针对一种模型运行评估套件。少数成熟的团队会针对两种。几乎没有人会针对备选清单上的供应商、按持续的时间表运行评估,并追踪随时间变化的得分差值。最后这句话才是跨供应商对等性真正的要求,它需要真金白银的投入 —— 包括推理支出和保持测试框架准确性的工程师工时。

这种规程的形式很直接。挑选出你考虑在 12 个月内切换到的供应商。每周针对其中每一个运行完整的评估套件。追踪每个任务和每个指标的差值,而不只是汇总数据。当任何供应商与你主供商的差值超过设定的阈值时发出告警 —— 这是一个行为变更日志信号,通常比供应商发布公告早几周到达。评估套件变成了关于可移植性成本的持续市场信号,而不仅仅是一份一次性的迁移报告。

支出是真实存在的。如果你的主评估套件每次运行耗资 X,而你每周增加三个二级供应商,那么你每周仅在评估推理上就要支付约X,而你每周增加三个二级供应商,那么你每周仅在评估推理上就要支付约 4X,外加在每个供应商 API 发生偏移时维护特定供应商适配器的工程师时间。试图以项目形式完成这项工作的团队最终每六个月就要从头重设基准,因为评估数据已经过时,测试框架已经失效。而那些将其视为订阅的团队则会持续支付,并始终掌握当前的可移植性成本数据。

这种投入是有杠杆回报的。当你能带着针对三个竞争对手供应商的当前评估分数去参加续约谈话时,谈判姿态就改变了。供应商的销售团队知道哪些客户是真的能迁移,哪些只是在虚张声势。评估套件就是证据。如果没有它,你的折扣上限就是供应商标准的续约政策。有了它,据记录,结构化谈判能在多年期承诺中争取到 25%–42% 范围内的折扣。这不是虚无缥缈的好处。它是评估订阅成本项的直接回报。

提示词是模型的函数,而非固定常量

允许你在不重写应用代码的情况下切换模型的架构是一个路由层,在这个层中,提示词本身是目标模型的函数。大多数团队构建的是相反的东西:单一的提示词模板、一个 model: 参数,并假设无论哪个模型接收它,提示词都应该是相同的。正是这种假设导致了切换时的崩溃。

正确抽象的形式是一个提示词构建器函数,它接收任务加上目标模型标识符,并返回一个经过模型调优的提示词。同样的输入任务,对于一个模型会产生带有 XML 标签和语气支架的 Claude 风格提示词;对于另一个模型产生带有明确分隔符规则、重度使用 Markdown 的结构化提示词;对于第三个模型则产生紧密约束、模式优先的提示词。应用代码永远看不出区别,只有路由器知道。

这听起来像是在增加代码量,事实也确实如此。这种权衡的价值在于,你将供应商的特殊性限制在一个可审计、有版本控制且可测试的地方,而不是让它泄露到整个代码库的每个提示词中。当新模型发布时,你编写一个新的提示词构建器分支,针对评估套件运行它,然后部署。当供应商改变拒绝行为时,你修复一个分支,系统的其余部分不受影响。当合同谈判需要筹码时,你可以在一个下午(而不是一个季度)内生成一份可信的报告:“我们有针对三个供应商的可用提示词,这是当前的评估分数。”

同样的原则也适用于结构化输出,这是任何模型切换中最常见的隐形崩溃点。JSON 模式并非标准。OpenAI 提供的服务端模式强制执行,其解析失败率低于 0.1%,并且在内容策略触发时提供结构化的拒绝字段。Anthropic 提供的工具调用块在流结束时而非增量地返回结构化数据,且每个包含工具的请求带有 313–346 个标记(tokens)的系统提示词开销。Gemini 提供了合并的 JSON 模式加模式功能,解析失败率低于 0.3%,且标记开销较低。你的网关声称提供的“无缝替换”,在实践中其实是三个同名的不同契约。路由器必须在下游消费者看到响应之前,将它们扁平化为单一的内部契约。

季度损耗率

量化这些数据能让权衡变得具体。对于一个在生产环境中运行单一 AI 界面,并以一个主要供应商为主、两个备选方案在评估台上的团队来说,保持可移植性真实的持续工程投入按季度计算大致如下:跨供应商评估推理:根据套件大小和运行频率,需花费几百到几千美元。工程师在适配器维护、拒绝风格跟踪和分词器特性审核(tokenizer-tic auditing)上的时间:稳态下每季度半个工时周,在供应商发布重大更新的季度会更多。提示词即模型函数抽象的路由层维护:稳态下很少,在备选列表增加新模型时需数周。提示词风格指南和各供应商怪癖的文档记录:每季度几小时以反映变化。

这是稳态下的损耗。现在看看当可移植性没有得到资金支持且强制迁移到来时的成本。迁移手册中公认的经验法则是一个供应商锁定的生产提示词需要每个界面投入 1 到 2 个工程师季度来进行重新调优,再加上完整的评估基准重测,以及当行为变化泄露时起草客户沟通函的周期。一个运行五个界面的团队在每次供应商下线时都会面临五倍的压力。按每季度 80,000 到 150,000 美元的全额工程师成本计算,这种缺乏纪律的未授权版本是一个六到七位数的“惊喜”,它会降临在供应商选择的任何季度,而不是路线图有空间的季度。

这种算法并不深奥。持续的损耗是微小且可预测的。递延的损耗是巨大的,且取决于供应商的时间表。那些将可移植性视为一次性购买属性的团队,在每一段供应商关系中至少要支付一次递延损耗,而且递延版本的成本会产生复利,因为每次强制迁移都会破坏路线图并推迟其他工作。

对合同和架构的意义

将可移植性视为持续投资而非一次性迁移,会产生两个实际后果。

首先,应重写合同条款,假设持续的可移植性是运营纪律的一部分。协商明确的退出权和可移植产物交付物——你的提示词库、你的评估数据集、你的微调数据、你的检索索引、你的性能日志。Morgan Lewis 关于 AI 退出权的框架将这些视为四个不同的资产类别,需要明确的所有权条款。如果供应商控制了其中任何一个,无论你的评估套件有多好,你的可移植性投资都会被部分抵消。合同是可移植性堆栈的一部分,而不是一个独立的工作流。

其次,拥有路由层的平台团队也必须拥有可移植性指标。将模型注册表划分给平台团队,而将提示词划分给产品团队,会产生最糟糕的结果:没有人负责模型切换是否真的有效。跨供应商一致性指标的单一负责人——每季度向审计基础设施支出的同一批受众汇报——是保持该纪律获得资金支持的关键。如果没有这个负责人,该预算项是在任何有成本压力的季度中第一个被削减的,而下一次强制迁移就会变成一场救火演习。

架构上的认识是,供应商可移植性不是你技术栈的一个属性。它是一种维护能力,具有季度损耗率,通过在评估覆盖、路由抽象、提示词风格纪律和合同条款方面的持续工程投入来维持。资助它的团队支付一笔小额、可预测的费用并保留切换的选择权。不资助它的团队则按照供应商选择的时间表支付大额、不可预测的费用。选择不在于是否支付,而在于你是选择持续支付并保留筹码,还是选择一次性支付并放弃筹码。

下次在规划会议上有人说“我们可以随时切换模型”时,问问他们上份季度报告中跨供应商评估的差异(delta)。如果答案是茫然的注视,那么这个团队并不具备可移植性。他们拥有的只是希望。

References:Let's stay in touch and Follow me for more thoughts and updates