跳转到主要内容

供应商锁定深度分析:导致更换 LLM 供应商变成 6 个月工程项目的七个耦合点

阅读需 2 分钟Tian PanTian Pan

每一个交付 LLM 驱动功能的团队最终都会进行同样的对话:“如果我们需要更换供应商怎么办?”标准的回答——“我们只需要换一下 API 密钥”——揭示了对耦合实际存在位置的危险误解。在实践中,尝试进行供应商迁移的团队会发现,API 端点是他们最不需要担心的问题。真正的锁定隐藏在七个不同的耦合点中,每一个都能将一次“快速更换”变成一个耗时一个季度的项目。

迁移费用通常会消耗原始开发时间的 20–50%。那些将模型切换视为即插即用的企业团队,往往在面对损坏的输出、激增的 Token 成本以及需要数周才能诊断出的推理质量变化时束手无策。在需要迁移之前,了解这些耦合点在哪里,是受控过渡与紧急应对之间的本质区别。

1. 提示词语法和特殊 Token

最显而易见的耦合点也是最被低估的。每个供应商都开发了自己的提示词方言,而这些方言所编码的假设比格式偏好更为深刻。

OpenAI 模型对带有章节分隔符、强调标记和嵌套列表的 Markdown 结构提示词响应最好。Anthropic 的 Claude 系列在输入中使用 XML 标签划分不同部分时表现最佳。Google 的 Gemini 模型则在系统指令和多轮对话格式方面有自己的惯例。

这些并非表面上的差异。一个在一个供应商的评估套件中得分 92% 的提示词,在另一个供应商那里可能会降到 74%——这并不是因为第二个模型更差,而是因为提示词结构触发了不同的注意力模式。那些仅仅通过更改 API 端点来迁移提示词的团队会发现,每一个精心调整的提示词都需要系统性的重做。

真正的成本不在于重写提示词,而在于为每个重写的提示词重新运行整个评估套件,迭代新模型处理方式不同的边缘情况,并验证新提示词在每一个你关注的维度上都达到了同等水平。对于拥有数百个生产环境提示词的团队来说,单单这一项就可能耗时数周。

2. 工具调用模式(Schema)的差异

如果你的应用程序使用了函数调用(Function Calling)或工具使用,那么你就是针对特定供应商的模式进行构建的,而这些模式并不能直接转换。

OpenAI 使用带有 type: 'function' 包装器的 tools 数组。Anthropic 在顶层定义带有 input_schema 的工具。Google 的 Gemini 将所有内容包装在嵌套于 Tool 对象内的 FunctionDeclaration 对象中。当你观察每个供应商如何返回结果时,结构差异会进一步加剧:

  • OpenAI 将函数参数作为 JSON 字符串返回,需要 JSON.parse()
  • Anthropictool_use 内容块中直接返回解析后的对象
  • GooglefunctionCall 部分中返回解析后的对象

除了结构差异外,模式约束的处理方式也大不相同。当工具模式使用不支持的属性时,OpenAI 会抛出明确的错误。Gemini 会默默忽略诸如字符串长度或数组最小值之类的约束。Anthropic 则能优雅地处理大多数约束。研究表明,兼容层可以将跨供应商的工具调用错误率从 15% 降低到 3%——这意味着如果没有兼容层,你在迁移时将面临 5 倍的错误率增长。

模型上下文协议(Model Context Protocol, MCP)正作为一种标准出现,有望减少这种耦合。OpenAI 和 Google 都已跟随 Anthropic 采用了该协议,且 OpenAI 已宣布弃用其 Assistants API,转而支持 MCP,并计划于 2026 年中期停止服务。但目前采用尚处于早期阶段,大多数生产系统都已经固化了多年来特定于供应商的工具模式。

3. 依赖分词器(Tokenizer)的分块

每个 LLM 都使用不同的分词器——一套将文本拆分为数字 ID 的不同规则。将同一句话输入 GPT-4o 和 Claude,你会得到不同的 Token 数量、不同的分块边界和不同的成本。

GPT 模型使用在字节层面运行的字节对编码(BPE)。其他模型则使用具有不同合并规则的 WordPiece 或字符级分词。这些差异比看起来更重要,因为你的整个 RAG 流水线都是建立在分词器假设之上的。

你的分块策略——你选择的大小、重叠窗口、拆分启发式方法——都是针对特定分词器的行为进行优化的。更换供应商后,这些分块不再与新模型的 Token 边界对齐。原本在上下文中可以轻松容纳的文档现在会溢出。原本捕获了完整语义单元的分块现在会在概念中间断开。

修复方法不仅仅是更新 Token 计数器。它意味着重新对整个文档库进行分块,使用新的分块大小重新测试检索质量,并可能重新调整你的重叠策略。对于 RAG 流水线中拥有数百万文档的团队来说,这是一项重大的基础设施工程。

4. 嵌入空间不兼容性

这就是供应商锁定变得真正痛苦的地方。每个嵌入模型都会创建自己独特的向量空间——来自一个模型的 768 维向量与来自另一个模型的 768 维向量之间没有任何意义上的关联,即使它们代表的是同一个概念。

你的向量索引针对之前的坐标系进行了优化,现在却在错误的空间中进行搜索。像 HNSW 和 IVF 这样的近似最近邻算法构建了专门针对当前嵌入几何结构优化的数据结构。当几何结构发生变化时,这些结构就会变得错位,检索质量会无声无息地下降——你不会收到错误提示,只会得到更差的结果。

会员专享

余下内容仅对会员开放。

会员可读完整内容 —— 每一个公开发布的观点背后,那些框架、决策与推理的全貌。

  • 完整文章,包含未公开存档的部分
  • 可落地的工作框架,附带权衡与决策依据
  • 新文章抢先看,先于公开发布

随时取消 · 一次订阅,畅读全部

参考资料

保持联系,关注我获取更多内容

阅读需 9 分钟

供应商 SLA 差距:为什么你的 LLM 提供商的运行时间忽略了导致产品崩溃的故障模式

你的 LLM 供应商 99.95% 的运行时间指标并不能覆盖拒绝率飙升、静默模型更新或配额驱动的降级。以下是能够涵盖这些情况的功能可用性检测方法。

insider
llm-ops
阅读需 9 分钟

你不是选择了一个模型,而是和它结婚了:无人预估的提示词级锁定

更换你的 LLM 端点只需要一行配置;但让你的提示词在新模型上生效则需要一个你未曾预料的季度。本文探讨提示词级锁定是如何累积的,以及在被迫支付代价之前,如何衡量真实的迁移成本。

insider
llm
阅读需 11 分钟

KV 缓存预热 Cron 任务只在蓝环境运行而从未进入绿环境,原因竟是主机绑定从未迁移

一次蓝绿部署导致固定在旧环境颜色的 Cron 任务孤立,Prompt 缓存变冷,账单悄然翻了三倍 —— 本文剖析了这一静默回归的始末,并提出了四个闭合缝隙的最佳实践。

insider
prompt-caching
阅读需 10 分钟

配额窗口机制重写后,这批夜间脚本是如何拖垮你的交互流量的

一个夜间 LLM 批处理任务稳定运行了 10 个月,直到供应商重写了每日窗口的计算方式——将 00:05 UTC 的 Cron 任务变成了交互式流量的自杀式 429 异常。本文探讨为什么负载隔离、抖动和桶语义契约测试才是结构化的修复方案。

insider
rate-limits
阅读需 10 分钟

那些将模型未完成的残缺回答存入数据库的流式 UI

当流在生成中途报错时,乐观写入的内容可能会变成正式记录。本文探讨了为什么聊天 UI 会将残缺回答误认为完整答案,以及修复该问题的“定稿契约”。

insider
streaming