折扣要求绑定一家产品:切换只花几小时,说明抽象层早建好了

一、折扣与绑定是一笔交换,交换的是可替换性
据公开报道,有厂商向部分客户提出模型价格的大幅折扣,条件是同意使用它的编程智能体产品而不是其他竞品;也有一家开发工具平台把大部分模型支出转向新的厂商,所需的代码修改只用了数小时完成,整个技术切换过程比此前谈判合同的时间还短。这些说法属于报道本身,不是本篇的论据。本篇关心的是把它们放在一起看时的结构:单价的让步,通常换来的是你替换能力的收窄。
排他条款在工程侧的真实约束有四类,它们的伤害方式各不相同。
| 条款类型 | 对工程侧的含义 | 签约前必须确认的动作 |
|---|---|---|
| 必须使用指定产品 | 技术栈被锁定,工具链选型从工程判断变成合同义务 | 确认约束覆盖到哪些入口:内部研发、生产调用、还是客户交付 |
| 必须承诺支出下限 | 议价空间被提前吃掉,用量下降时单价反而更差 | 把承诺量画进用量预测,看最低点是否仍跑得够 |
| 必须优先接入新功能 | 接口与数据格式被动跟随对方节奏,回归窗口被压缩 | 明确接入是否可延后、由谁决定、延后是否影响折扣 |
| 不得对外披露单价 | 无法横向比价,也无法向客户解释成本构成 | 确认可披露的范围,特别是交付报价与审计场景 |
四类里最容易被低估的是第三类。优先接入新功能听起来是好事,实际效果是对方产品节奏变成你的发布节奏:新接口还没稳定就得接,接了就要重跑评测,评测一重跑,本来排好的迭代计划整个后移。技术栈被锁定的感觉往往不是签约那天出现的,而是第三次被迫提前接入时出现的。
二、签之前问清三件事,尤其是自用与交付能不能分开算
第一件,条款是否覆盖对外销售的应用。内部开发工具与交付给客户的产品,在合同里常常被写成同一个使用范围,而它们的约束后果完全不同:自用范围被锁,影响的是研发效率;交付范围被锁,影响的是你能不能把这套东西卖给下一个客户——如果客户自有指定的模型来源,交付物就跑不起来。这一条要在文本里分清,不能靠口头解释。
第二件,折扣期限与到期后的价格。有折扣的窗口期与无折扣的常态期是两个成本模型,报价、毛利预测、容量规划都基于后者。要问清期限多长、到期是按原价回落还是重新议价、通知提前多久给。
第三件,终止条件与提前退出的代价。退出代价通常不在终止条款里,而藏在三个地方:承诺量未跑满时的补差、已发放额度的作废、以及数据与日志的留存与导出限制。谈判时把这三项写清楚,比争论折扣率高低更有实际意义。
三、切换耗时取决于抽象层,不取决于运气
几小时能切完,不是因为改动小,而是因为这家公司平时就把模型调用收在一层里。抽象层的具体形状有三层,缺任何一层,切换都会从改代码变成改架构。
第一层是网关。所有模型调用收敛到一个入口,统一请求与响应结构,路由、重试、限流、配额、计费归因都在这层实现。业务代码里不出现厂商 SDK,也不出现厂商私有参数——私有参数如果必须用,就放在网关侧的映射表里,而不是散落在各业务模块。这一层的收益是:切换时改的是配置与映射,不是几十处调用点。
第二层是提示与工具定义的分层。通用意图(任务描述、输出要求、约束条件)与厂商特定写法(分隔符约定、系统消息位置、工具调用的声明格式)要分开存放,中间有一层映射。混在一起写的提示,切换时表现为整批改写,而且改完无法判断是意图变了还是格式变了。
第三层是输出解析的容错。不同厂商在结构化输出的严格程度、思考链长度、错误码语义上都有差异:同一段要求,一家返回可直接解析的对象,另一家把对象包在解释性文字里;同一个限流,一家的错误码可重试,另一家的语义是拒绝。解析层要按能容纳差异的方式写,而不是按当前那家的返回格式写。
按这三层写出切换清单,而不是等真要切的时候现列:
- 要改的文件面:网关的路由与映射表、厂商特定提示片段、配额与限流配置、计费归因标签。
- 要重跑的评测:私有对照集全量跑一遍,公共任务子集做快速回归,两者目的不同不能互相替代。
- 要调的额度与阈值:配额池、超时、重试次数、告警阈值、成本预算线,这些数值是按当前供应商行为调出来的,换一家不会自动合适。
- 要通知的下游:依赖输出稳定格式的下游消费者,以及合同中约定的客户侧条款。
这份清单本身是可以核对的资产:能列出多少项,就说明抽象层做到了什么程度——这个判断在签约前就能给出,不需要等到真切换。
四、私有评测集是切换的前提资产
没有一份私有、常备、跑得动的对照集,任何换一家更便宜的结论都只是报价单结论。评测集不是拿来证明现用模型好的,它是拿来让比较成立的。
对照集最少要有三个要素。任务类型分布要贴近真实负载,按代码补全、长上下文检索、结构化输出、工具调用这几类分别配比,而不是全用一类容易出题型。成本与延迟两栏必须和质量同表呈现,同一批任务在新旧两家上分别记录单位成本与端到端延迟,只看质量得出不了可选结论。判定规则要同时看质量与成本:多数切换争议不是新的一家更差,而是它略差但便宜很多,此时要有一条明确的接受线,否则讨论每次都从零开始。
防污染这件事同样具体。私有集的价值来自它不出现在公开榜单与训练语料里,因此要保留时间上较新的真实任务样本,按季度换题,换下来的旧题封存不再使用。一个常见错误是评测集长期不换,几年后它在行业里传开,分数变得好看但不再代表真实能力。
五、成本归因纪律与双供应商的常态结构
先说口径。同一模型在不同折扣下、不同上下文长度下,单位成本不是同一个数:输入与输出词元价格不同,长上下文的边际成本更高,缓存命中与否又是另一套。归因要按请求实际词元计,而不是按席位或按合同金额平均分摊——后者会让一次长对话与一次短提问看起来成本相同,成本优化的方向因此完全错掉。承诺量也要画进曲线:如果折扣绑定支出下限,那么用量没跑够的那段时间,实际单价比合同数字更差,这件事要在报表里显式呈现,而不是等年底才发现。
双供应商不是备胎结构,而是常态运行方式,它需要三件事支撑。主用与备用的分工要按任务类别定,而不是按比例分流;路由规则与降级条件写进网关层,降级后的质量差异要在评测集里有对应记录,否则降级发生时没人知道自己拿到的是什么。一致性测试要定期跑:同一组提示在两家的输出差异,含格式差异与拒绝行为差异,并给出验收方式。最容易被忽略的一点是,随时能切本身就是议价能力——它不体现在合同里,但决定了第二轮谈判时谁需要让步。
六、席位合同的陷阱、台账,以及我们的交付立场
低价扩席位是另一类结构问题。有报道称,供应商同意不提高合同金额而把账户数明显增加,折合单账户价远低于常规席位价,用途集中在营销素材与岗位说明这类轻任务。这类安排的风险不在价格而在归因:席位多了,谁在用、用在哪、传了什么出去,全部失去可见性,而数据出境与合规面恰恰是随使用点扩散的,不是随合同金额扩散的。要点因此很明确:席位价与用量价两套口径必须能同时出报表,缺后者,采购看到便宜,安全侧看到失控。
治理动作落在一张台账上。供应商条款(折扣期限、绑定条件、终止代价、通知时限)与切换预案放进同一份记录,每行有负责人、复核周期、上一次演练的时间点。台账里最能说明问题的是演练时间——纸面预案不算准备,真正换过一次才算验证过预案,这与第一节那家几小时完成切换的公司是同一件事的两面。
洹拓做大模型应用交付时,在这张表上只坚持两条自己的合同与技术选择。第一,不交付只有单一厂商能跑起来的东西:交付物的运行说明里,模型来源是配置项而不是假设。第二,交付时附一份切换成本评估,写清要改哪几处、要重跑哪些评测、哪些输出格式是下游依赖的,让接手的人知道切换需要多少工时,而不是靠猜。至于各家厂商怎么定价、为什么这样定价,那不是我们能替别人判断的事;我们能负责的是,让客户在拿到低价承诺时,仍然保有把它换掉的能力。