跳到主要内容

LLM 供应商锁定:真正有效的可移植性模式

· 阅读需 10 分钟
Tian Pan
Software Engineer

每个人都在讨论如何避免 LLM 供应商锁定。建议通常归结为"使用抽象层"——仿佛把 openai.chat.completions.create 换成 litellm.completion 就能解决问题。但事实并非如此。API 调用是最简单的部分。真正的锁定是隐形的:它存在于你的提示词、评估数据、工具调用假设,以及你不知不觉围绕特定行为设计的系统中。

供应商可移植性不是非黑即白的。它是一个连续谱系,大多数团队比他们认为的离可移植端更远。好消息是,实现真正可移植性的模式已经很成熟——只是比引入一个封装库需要更多的纪律性。

你能看到的锁定(和你看不到的锁定)

API 层面的锁定是显而易见的那种。OpenAI 使用 function_calling,Anthropic 使用带有 input_schematool_use,Google 有自己的格式。不同的认证方式、不同的流式协议、不同的错误码。这一层确实被抽象框架很好地解决了——LiteLLM、Vercel AI SDK 和 LangChain 都能胜任地规范化这些差异。

但在 API 表面之下是行为锁定,它危险得多,因为你的监控看不到它。一个为 Claude 调优的提示词可能依赖于它忠实遵循复杂嵌套指令的倾向。同样的提示词发送给 GPT-4o 可能会产生微妙不同的工具调用决策、更短的输出,或不同的拒绝边界。你的 API 返回 200。延迟看起来正常。但在下游,输出以需要数天才能浮现的方式出错。

关于提示词敏感性的研究表明,仅格式变化就能在少样本设置中导致高达 76 个准确率点的差异。这不是笔误——相同语义的指令重新格式化后,可以让模型从接近完美摇摆到接近随机。现在想象一下换一个完全不同的模型会带来什么变化。

提示词可移植性问题

这里有一个不舒服的真相:精心设计的提示词库不是可复用的资产。它是针对特定模型行为特征校准的工具,这些特征会按照别人的发布计划而改变。

看看真实迁移中发生了什么。当 Tursio 的搜索团队在 GPT 版本之间迁移时——甚至不是切换供应商,只是在同一供应商内更新——只有 95.1% 到 97.3% 的回归测试通过了。按每天 10,000 次查询计算,这意味着每天 500 次静默失败。一家医疗供应商被迫迁移到 Gemini,花了 400 多小时重新设计提示词,并在此过程中引入了新的安全隐患。

失败模式总是一样的:绕过传统监控的语义漂移。你的系统返回有效的 JSON,在延迟预算内响应,没有记录任何错误。但模型做出了不同的判断——选择不同的工具,以不同方式格式化参数,以新的方式解释模糊的指令。

这就是为什么在 API 层面止步的"供应商无关"架构给团队带来虚假的信心。你让管道可移植了,但把智能层——真正重要的部分——焊接在了特定模型的行为上。

抽象层:必要但不充分

API 抽象仍然值得做。它消除了机械的切换成本,并支持几种真正有用的模式。

路由模式根据不同任务类型的优势将其导向不同的供应商:复杂推理交给 Claude,速度敏感的分类交给 GPT-4o-mini,长上下文综合交给 Gemini。超过 90% 的生产 AI 团队现在同时运行五个或更多 LLM,路由是他们在不被集成代码淹没的情况下管理这种复杂性的方式。

回退链给你韧性。当你的主要供应商出现故障时——它们都会——请求自动流向备份。这只有在你验证过提示词在备份模型上能产生可接受结果时才有效,而大多数团队在故障真正发生之前都会跳过这一步。

金丝雀部署将少量流量路由到新模型版本,测量语义质量而不仅仅是错误率。这是安全处理现在每六个月发生的十二个以上主要模型发布的唯一方式。

但这些模式都没有解决根本问题:当模型改变时你的提示词还能用吗?为此,你需要一个回归测试工具。

构建兼容性测试工具

成功处理供应商迁移的团队有一个共同特征:他们把提示词验证当作测试纪律,而不是手动审查过程。这个框架有三个组件。

黄金数据集包含 50 到 200 个精选的输入输出对,从生产边缘案例中采集而非凭空想象。这些应该代表你的实际流量分布,包括那些促使你六个月前在系统提示词中添加某个子句的奇怪角落案例。

评估标准从多个维度为输出打分——准确性、格式合规性、语气、安全性,以及对你的应用重要的任何领域特定标准。单一的通过/失败指标隐藏了太多信息。一个提示词可能在新模型上保持准确性,但以违反产品要求的方式改变了语气。

自动化评判一致地运行此标准。使用多个前沿模型作为评估者可以减少单一模型偏见。在宣布迁移安全之前,你需要 200 到 500 个评分响应以获得统计置信度。

有了这个工具,供应商切换变成了一个可量化的操作:交换模型配置,运行测试套件,检查分数下降的位置,为新模型的行为调优提示词,然后重新验证。投资于此框架的团队报告说,他们的第三次迁移大约只需要第一次的 25% 的时间,因为机构知识积累在了运行手册和评估数据中。

工具链教训:上下文比你想象的更能影响输出

2026 年初的一项揭示性实验展示了接口层的影响有多大。一位研究者在 180 个相同的编码任务上测试了 16 个 LLM,没有改变模型的任何东西——只改变了将它们的输出转换为文件编辑的工具链。结果非常戏剧性:一个模型从 6.7% 跳到了 68.3% 的成功率。其他模型的性能翻了一倍。输出 token 使用量在所有模型中大约下降了 20%。

这对供应商可移植性的含义是重大的。当你切换供应商时,你不只是在换模型——你在改变模型输出被解读的方式。锁定供应商的工具链针对一个模型的输出模式进行了优化。如果你的工具调用解析器期望 OpenAI 风格的函数调用而你切换到了 Anthropic,失败不在模型的推理——而在翻译层。

这就是为什么开放的、标准化的接口比任何单一模型的能力都更重要。Model Context Protocol (MCP) 自 1.1 版本发布以来已将集成时间减少了 35%,这是朝这个方向迈出的一步。但更广泛的原则是,模型和你的应用之间的每一层都是潜在的锁定点,每一层都需要自己的可移植性策略。

提示词版本管理:将提示词视为生产资产

最被低估的可移植性实践是提示词版本控制。不只是把提示词存储在 git 中——那是基本操作——而是维护一个兼容性矩阵,跟踪哪些提示词版本已在哪些模型版本上验证过。

当供应商宣布弃用时(节奏正在加快——Anthropic 大约提前两个月警告弃用了 Claude 3.5 Sonnet,OpenAI 最初在推出 GPT-5 时给出了零过渡时间),你需要立即知道哪些提示词受到影响以及是否有经过验证的替代方案。

提示词版本管理系统应该跟踪:

  • 每个提示词已测试过的模型版本
  • 这些测试的评估分数
  • 已知的失败模式和应用的解决方法
  • 敏感参数——提示词中最可能在新模型上出问题的部分

这将迁移从紧急应对转变为常规操作。不再是收到弃用通知后手忙脚乱,而是检查兼容性矩阵,运行缺失的评估,然后有信心地部署。

通向可移植性的务实之路

完美的供应商无关性既不可能也不值得追求。某些特定模型的优化值得锁定成本——当特定模型版本在核心用例上性能提升 30% 时,你不会使用通用的"在所有模型上都能用"的提示词。

务实的方法将可移植性视为风险管理:

  • 隔离供应商特定的部分。 将特定模型的提示词调优保存在配置中,而不是硬编码在应用逻辑里。当你为 Claude 的指令遵循或 GPT 的结构化输出优化提示词时,标记为特定模型并维护一个基线版本。
  • 尽早投资评估基础设施。 黄金数据集和自动化评估标准的价值随时间复合增长。你捕获的每个生产边缘案例都会让下一次迁移更便宜。
  • 定期进行演练。 每季度在预发布环境中切换主要供应商,看看什么会出问题。在计划测试中发现的故障比在紧急迁移中发现的要便宜得多。
  • 为弃用周期而设计。 每半年有十二个以上的主要模型发布和激进的弃用时间线,假设你今天依赖的任何模型在 18 个月后将不可用。围绕这个假设构建你的架构。

LLM 领域的供应商锁定是真实的,但它不在大多数人认为的地方。API 层是一个已解决的问题。未解决的问题是行为可移植性——确保你的系统无论由哪个模型驱动都能产生正确的结果。那些将此视为工程纪律的团队——拥有测试工具、版本化的提示词和定期迁移演练——才是当经济性或能力发生变化时真正能在供应商之间迁移的团队。其他人都只差一封弃用通知就会陷入手忙脚乱。

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