跳至主要内容

换模型时,Prompt 只重写三类段落

上周把一条工单摘要的 prompt 从旧模型搬到新模型,我第一版是整段复制。结果摘要更长了,字段倒没漏,但“紧急度”开始飘:同一张工单,旧模型给 high,新模型给 medium,理由还写得很像回事。我先怀疑模型能力,后来发现是我在 prompt 末尾那句“请务必谨慎判断,不要过度升级”在旧模型上是个小补丁,在新模型上变成了强约束。删掉这句,再补一条明确的判定规则,输出就稳了。

这件事之后,我迁移 prompt 不再问“要不要重写”,而是先问“这段文字在承担什么”。

先分清契约、示例和补丁

我通常把一份 prompt 拆成四块,但迁移时只看三类:

  • 契约:任务定义、输入输出、字段枚举、单位、空值语义、拒答边界。这类是业务语义,换模型不应该变,原样搬。
  • 示例:few-shot、参考输出、反例。示例的内容可以保留,但数量、顺序、格式要重新验,不能盲抄。
  • 风格与补丁:角色设定、语气、格式催促、思维链诱导、为旧模型某个毛病加的禁令。这类最不该原样搬。
  • 运行时参数:temperature、max tokens、stop、JSON mode、tool schema。它们不是 prompt,但经常被误当成 prompt 一起改。

一个简单的切块大概是这样:

PLAINTEXT5 行
1
2
3
4
5
[任务] 从工单中抽取分类和紧急度
[输出] category / urgency / reason
[边界] 不确定时填 unknown,不要猜
[示例] 三条历史工单及标注
[风格] 你是资深客服质检员,请谨慎判断

迁移时,前三块是契约,示例要重跑,最后一块先删掉再测。

先跑一遍不改字的版本

我见过两种相反的错法。一种是换模型当天就把 prompt 重写一遍,结果旧问题回来了,因为被删掉的是契约不是补丁。另一种是原样复制,连旧模型的补丁一起带过去,新模型被过度约束,输出变得又长又保守。

我的顺序是:先只换模型,prompt 一个字不改,跑一组硬样本。样本不用多,十几到几十条,覆盖正常输入、边界输入、该拒答的输入、格式容易坏的输入。每条写清楚验收规则,比如“字段齐全”“枚举值合法”“不确定时输出 unknown”,而不是拿旧模型的输出当唯一标准答案。旧输出只是基线,不是真理。

跑完按失败类型归类:格式失败、事实错误、遗漏、啰嗦、工具调用失败。格式失败先看运行时,JSON mode 开没开、stop 序列对不对、max tokens 够不够,别急着改 prompt。事实和遗漏再看契约段落。啰嗦和语气问题,通常落在风格与补丁那一层。一次只改一类,不然最后不知道是哪句起了作用。

我会原样搬的,和当场重写的

原样搬的部分:字段名、枚举值、单位、时区、空值语义、业务规则、拒答边界。这些是契约,换模型不该变。真实输入样例和验收标准也保留,但预期输出要重新看。安全红线保留规则,措辞可以按新模型调整。工具名和参数 schema 不动,工具描述重写。

当场重写的部分:

  • 角色设定和人格化语气。“你是资深……”旧模型可能需要,新模型可能过度扮演,反而影响格式。
  • “一步步思考”“先列提纲再回答”这类诱导。新模型如果有 reasoning 能力,重复提示可能让输出更长,甚至把中间过程带出来。
  • 为旧模型 bug 加的补丁句。比如“不要重复”“不要输出代码块”“务必只输出 JSON”。先删再测,很多补丁对新模型是噪声。
  • 强调词和分隔符。IMPORTANT、必须、再三强调,新模型可能过度反应。
  • few-shot 的数量和顺序。示例是最像模型风格的部分,内容可以留,样本要重选。
  • 工具描述。函数名和参数 schema 不变,描述按新模型重写。
  • 长度约束。旧模型啰嗦就加“不超过三句”,新模型可能更啰嗦,也可能过度压缩,需要重新校准。

还有一点:如果新模型支持 system prompt,不要把旧 prompt 整段塞进 user。先按 API 的角色归位,再谈内容。上下文窗口变大也不等于该多塞示例,示例多了可能把模型带偏。

迁移清单与回滚

我现在按这个顺序做:

  1. 旧 prompt 存成 v1,换模型时一字不改跑一遍。
  2. 建一组硬样本,每条写人能判的验收规则,不拿旧输出当唯一答案。
  3. 失败按类型归类,先修运行时,再修 prompt。
  4. 补丁句逐条删,一次一条,删完跑样本。不要整段重写后说“感觉好多了”。
  5. 示例从失败样本里挑最接近的替换,不盲目加数量。
  6. 保留 diff、通过率和回滚开关。上线后看真实流量里的格式失败率和人工改写率。

换模型当天我只做一件事:把旧 prompt 原样跑一遍,标出失败样本。第二天再决定哪一段该重写。如果你手里正有一份要迁移的 prompt,先别改字,先给它标三种颜色:契约、示例、补丁。通常标完就会发现,真正需要重写的没有想象中多。

关于本文

由 Lu's Blog 撰写,采用 CC BY-NC 4.0 许可协议。

#LLM #Prompt #模型迁移

评论