我上个月交流过的一位 AI 初创公司 CTO 打开她的笔记本电脑,给我看了一个数字:47。那是目前在生产环境中运行的独立系统提示词(System Prompt)的数量,每个企业客户或每个逻辑分组各占一个。基础提示词在第四个月为一家需要更温和拒绝态度的医疗客户派生(Fork)了一次。然后为一家需要引用的法律客户又派生了一次。接着是为一家金融服务客户派生的,因为他们的合规团队有一份违禁词清单。当时,这些看起来都不是什么大事。每一个都是独立批准的小需求,让大客户经理团队能够顺利签下订单。
两年后,模型提供商宣布了她那些针对旧版本调优的提示词的切换截止日期。她的工程团队直觉反应是对新模型运行评估套件(Eval Suite)。评估套件仅针对基础提示词。基础提示词仍在为 0 号客户提供服务,该客户没有任何覆盖配置,且约占收入的 9%。
另外 91% 的收入则存在于那 47 个变体中——这些变体的评估切片(Eval Slices)从未正式化,工程端的负责人至少更迭过一轮,而且它们的具体行为是客户成功团队在续约谈判中商定的,而 AI 团队中没有一个人参加过那些会议。
这就是企业级规模下的提示词派生(Prompt-Fork)问题。这不仅是一个提示词工程问题,而是一个伪装成配置开关的“派生产品线”问题。
定制化在变成棘手的派生问题之前,看起来都不像派生
大多数团队都会以同样的顺序遇到这种模式。基础提示词发布了。客户要求进行微调。最自然的处理方式是将其放入配置字段——在请求时将客户特定的指令块追加到系统提示词中。PR 只有二十行代码,评估差异微乎其微,客户很满意,团队继续前进。
团队实际上做的是 AI 领域的“数据库派生”。客户特定的指令不是数据;它们是在模型上下文窗口中运行的代码,并以尚未完全表征的方式改变模型行为。今天运行这个变体的工程成本看起来为零,因为请求路径是一样的。但在环境发生变化之前(如模型版本更新、底层评估变动、基础提示词重构),维护成本是隐形的,直到那时变体必须被重新验证。
错误在于定性。团队将定制化理解为“又一个配置开关”。它更接近于“又一个部署目标”。每个变体都有其潜在行为、故障模式、以及与提出要求的客户之间的隐性契约,并且在基础假设发生变化时都带有重新验证的负担。这些在 API 层面都不可见,但在 18 个月后的运营账本上却清晰可见。
这种复杂性的复利效应立即开始。第二次定制化很少与第一次形式相同。一个要求改变语气,下一个要求增加拒绝项,第三个则希望在特定位置注入 few-shot 示例块。在经过十次定制后,架构已不再是一个带有追加覆盖的基础提示词——而是一个模板化的拼凑产物,其中注入片段的顺序很重要,片段之间的交互很重要,而“这个客户使用哪个变体”则变成了一个无人管理的配置表查询。
没人预先计算过的迁移成本
当模型提供商弃用某个版本时,运行单个提示词的团队只需进行一次迁移。而运行 47 个变体的团队则需要进行 47 次迁移,外加处理同时运行这些变体所产生的跨变体工作。
47 个变体的迁移在结构上不同于运行 47 次评估套件。每个变体都有其独特的行为表现,团队必须在新模型上对其进行表征。每个变体都需要自己的上线/不推(go/no-go)阈值——而且这个阈值不能借用基础提示词的,因为客户对“回归”的容忍度是由他们所购买的特定变体的具体行为决定的。每个变体都有一个客户沟通周期:必须有人告诉客户他们的 AI 行为可能会发生变化,获取他们的签字认可,安排切换时间,并在变化引发投诉时承担支持工作。
更糟糕的是,故障模式是不对称的。迁移对中位数变体是成功的;中位数评估得分提升了;团队发布了。然而,某一个变体——那个依赖于旧模型中特定拒绝模式来进行语气微调的变体——发生了无人察觉的回归。客户在一周后发现了。到那时,回滚路径要么是回滚所有 47 个变体(这对那 46 个已经提升的变体来说是不可接受的),要么是进行针对单个变体的回滚(而部署架构并不支持这一点,因为变体从未被视为独立可版本化的产物)。
反向的逻辑计算同样残酷。为了避免这些工作而决定推迟迁移的团队正在积聚风险。供应商的弃用窗口是固定的。不用于迁移的每一周都是团队在未来欠下的债,而时间表并不受控。变体不会变得更容易迁移;如果有的话,它们只会变得更难,因为每当有人对基础提示词进行“微调”并隐形地传播到所有变体时,基础评估套件与各变体行为表现之间的差距就会进一步拉大。
“基础+覆盖”架构:有意识地构建
架构层面的解决方案并非“停止让客户进行定制”。定制化往往就是功能本身,而“我们将为你的合规团队提供系统提示词微调”有时甚至是客户签署合同的全部原因。真正的解决方案是将共享核心与客户特定的增量(delta)分开,从而让评估套件能够独立地对每一部分进行推理。
一个可行的方案如下:基础提示词(base prompt)是一个由 AI 团队拥有、经过版本控制、并针对标准评估集进行评估的产物,且只能通过评审进行更改。客户覆盖层(customer overlays)是另一类产物:结构化片段(例如 tone_override、refusal_additions、domain_glossary 等命名的插槽),它们在请求时通过定义的合并协议与基础提示词组合。该合并协议是确定性且可检查的——给定一个基础版本和一个覆盖层,你可以在不运行它的情况下静态地生成最终的提示词。
这带来了两个操作特性。首先,评估套件可以在模型迁移时对基础提示词进行一次评分,然后针对每个变体的分片逐一评估增量。迁移成本的增长规模是 base_eval + sum(overlay_evals),而不是 base_eval × 47。其次,覆盖层产物现在成为了一个一级可部署实体。它可以拥有所有者、版本、变更日志、客户范围字段以及每个覆盖层的评估基准。当基础提示词更改时,系统可以标记哪些覆盖层是基于旧版本基础提示词保留的,并需要重新验证。
随架构而来的纪律则更难落地。增加一个新的覆盖层必须进行成本核算——不仅是“这对该客户是否有效”,还包括“在未来的迁移中承载此覆盖层的长期运营成本是多少”。一个每季度增加一个覆盖层而不淘汰任何覆盖层的团队,按线性进度将在 11 年内遇到 47 个变体的问题;如果销售周期加速,则只需 3 年。覆盖层审批工作流需要一个拒绝标准。如果该变体在合同期限内的预期维护成本超过了交易规模,那么答案应该是寻找另一种实现行为的方式——一个产品功能、模型端的修复或不同的客户管理姿态——而不是又一个分支。
导致债务的销售-工程脱节 更深层次的失败模式是组织层面的,而非技术层面的。每一次定制化都由客户团队孤立地批准,而他们的动力是完成眼前的特定交易。所有定制化的累积成本则落在工程团队身上,而工程团队并不参与合同谈判。客户提出要求,销售答应下来,变体在 AI 负责人还没听说之前就已经上线生产环境了。
这种模式看起来像是一个架构问题,因为产物是一个提示词。但在结构上,它与老牌企业软件公司几十年来一直亏损的本地部署(on-prem)问题完全一致。一个为单个客户进行的“小型定制开发”,在四年后,当最初编写代码的人都已经离职时,会变成支持工程师在凌晨 2 点被传唤去处理的代码库。AI 提示词的半衰期比本地部署短,这使得这种动态变得更糟而非更好——在同样的时间跨度内,底层模型可能已经更新了三次。
解决办法不是在销售瞬间由工程端进行抵制。当 AI 负责人加入对话时,客户通常已经被承诺了该功能。解决方法在更上游:在销售过程中(而非之后)由工程部签署的定制化审批协议。该协议根据已批准的覆盖层插槽公开列表对每个新变体进行评估。如果客户的要求符合现有插槽,答案很快。如果不符合,在交易达成前,对话将上升为真正的架构决策——这个插槽是否属于产品,还是这个客户的要求本质上是一个分支。产品能承载的变体数量是有限的,只有将其视为有限资源,才能防止数量意外地漂移到 47 个。
针对变体的评估分片是强制函数 最高杠杆率的操作纪律是:在每次模型迁移和预定节奏下,运行针对每个变体的评估分片(eval slice)。分片不需要太复杂。针对每个变体提供十几个代表性输入,并根据客户明确的成功标准进行评分,就足以暴露出重要的回归问题。评估分片的重点不在于对变体进行全面评估——那是另一项任务。其重点是为团队提供一个预警系统,在客户发现之前,标记出哪些变体在最新模型版本上发生了漂移。
那些能够很好处理 47 个变体迁移的团队,是在变体数量超过 5 个之前就建立了这种纪律。在客户入驻时添加评估分片的成本很低(客户成功团队可以在入驻期间引导出成功标准),事后添加则非常昂贵(没人记得承诺过哪些行为,且客户的期望已经固化)。强制函数是将针对变体的评估分片视为定制化审批工作流本身的交付物。没有评估分片,就不发布新的覆盖层;不通过分片测试,覆盖层就无法在迁移中存活;变体不正式废弃,评估分片就不会停用。
客户沟通手册是另一部分。当迁移提升了中位数表现但导致某个变体退化时,团队需要一个默认的响应方式,而不是“恐慌”。手册应该是:暂停受影响变体的切换,向客户传达具体的行为变化,提供修复计划(针对新模型修复覆盖层、在供应商允许的情况下暂时留在旧模型上,或一个结构化的由客户管理的过渡窗口),并将结果记录在每个变体的变更日志中,以便下次迁移时拥有上下文。这些都不神秘,但它要求将变体作为一级产物来跟踪,而不是隐含的配置差异。
战略性的认知 企业级的提示词(Prompt)定制化并非一个 AI 功能决策。它是一个产品策略决策,关乎产品愿意吸收多少差异性(variance)来换取收入。那些深思熟虑后做决策的团队——在变体(variant)数量失控前,先构建好覆盖层基础设施、审批工作流、针对每个变体的评估切片(eval slices)以及客户沟通方案——会提前支付成本,并使其呈线性增长。而那些随性决策的团队——将变体积累视为单个销售谈判的副产品——其成本会呈阶梯函数式增长。这笔账会被推迟到下一次强制迁移时,届时账单会一次性结清,而处理这些问题所需的工程能力往往并未列入预算。
这种“随性”的版本总是比“深思熟虑”的版本更昂贵。而且这种做法更难回头,因为那些维护成本过高、无利可图的客户,已经根深蒂固地认为那个变体就是属于他们的。告诉客户“我们要弃用你的定制行为,因为它的运营开销过大”,这是一场关乎续约风险的对话,团队迟早得面对;但被迫在模型停用的截止日期压力下进行这种对话,远比在季度产品策略审查中进行要糟糕得多。
那些能够正确处理这一点的领导者,会将变体数量视为一项核心运营指标,就像基础设施团队追踪运行中的 EC2 实例一样。每一个变体都是团队至少需要迁移一次的对象。在这个框架下,任何团队无法合理解释其存在必要性的变体,都不应该存在。第 47 个变体不是一个配置项;它是一个规模虽小、文档简陋、仅供单一客户使用的产品。尽早看清这一点,才能防止公司在不知不觉中同时运营着 47 个这样的产品。
会员专享
余下内容仅对会员开放。 会员可读完整内容 —— 每一个公开发布的观点背后,那些框架、决策与推理的全貌。
— 完整文章,包含未公开存档的部分 — 可落地的工作框架,附带权衡与决策依据 — 新文章抢先看,先于公开发布 登录以继续阅读→ 随时取消 · 一次订阅,畅读全部