site logo

Marico's space

换模型不怕提示词失效:一个跨 Claude/GPT/Gemini 通用的系统提示模板

AI技术与应用 2026-04-28 17:06:32 6

译者按:本文介绍一个「提示词骨架」,让你的系统提示在不同模型之间切换时不需要重写。这套方法来自实际生产经验,实测有效。

背景

在 Claude 4.6 上跑得好好的提示词,换到 GPT-5.5 第二天就出问题了。同样的任务,同样的 JSON schema,第一次调用返回了一堆「为什么拒绝」的元信息,第二次调用返回的 JSON 虽然有效但忽略了升级规则。

解决办法:不要每次换模型都重写提示词,而是给提示词一个「骨架」,让它在底层模型变化时保持稳定。

骨架优于模板

模板锁定措辞,骨架锁定槽位。槽位是每个模型都需要的部分:角色、拒绝规则、工具指导、输出格式、示例、退出策略。

三个主流模型的系统提示位置:

  • Claude:Messages API 的 system 字段
  • GPT:Responses API 的 developer 消息
  • Gemini:generateContentsystemInstruction

六个组成部分

[ROLE + SCOPE]
你是一个邮件分类器。
你只处理支持请求,不起草回复、不总结线程、不猜测情感。

[REFUSAL + ESCALATION]
如果请求超出范围,返回:
{ "status": "out_of_scope", "reason": "<一行说明>" }
如果不理解,返回:
{ "status": "needs_human", "reason": "<一行说明>" }

[TOOL GUIDANCE]
本任务无工具可用,不要发明工具调用。

[OUTPUT CONTRACT]
返回单个 JSON 对象,包含 status、data、reason 字段。
不要散文,不要 markdown 代码块。

[FEW-SHOT ANCHORS]
示例1:输入 -> 输出(成功)
示例2:输入 -> 输出(拒绝)

[FALLBACK]
如果无法满足契约,返回:
{ "status": "fallback", "reason": "<一行说明>" }

各模型注意事项

Claude:用 XML 标签包裹各部分效果更好,如 <role_and_scope>...</role_and_scope>

GPT:使用 developer 角色而非 system。在输出契约部分重申「无 markdown 代码块」,因为 GPT 默认倾向用代码块包裹 JSON。

GeminisystemInstruction 是结构化 Content 对象,不是纯字符串。如果提示词看起来被忽略,很可能是 SDK 传参格式有问题。

什么时候骨架会失效

对于需要大量示例才能明确的隐含规则(比如创意写作、语气匹配的回复起草),骨架不够用。结构化拒绝契约也会妨碍开放式输出。

另一个常见错误:把每次调用的数据(比如邮件正文)塞进系统提示词。这会降低缓存命中率——因为每个模型的缓存都是基于系统前缀的。

总结

当你为 Claude 4.6 写的提示词在下一代模型上失效时,槽位还是那些槽位,重写只需要 15 分钟而不是 2 天。这就是把「句子」换成「形状」的价值:下一次换模型,在采购告诉你之前就已经完成了一半。

原文链接