Claude API 预填充(prefill)不能用了怎么办:替代写法改造提示词(结构化输出、直接指令、XML 标签、续写)

老代码里用「预填充 assistant 消息」来强制 JSON 开头、跳过开场白或续写被截断的回答,升级到 Claude 4.6 及之后的模型后请求报 400 时用:把调用代码贴给 Claude,让它判断每处预填充属于哪种用途,并按官方给的替代方案逐处改写。

NNathaniel bigo··原创首发·AI 辅助撰写
Claude 对话模型通用
我的代码在调用 Claude API 时使用了预填充(在 messages 最后放一条 assistant 消息,让模型接着写)。升级模型后需要去掉这种用法。请帮我逐处改造。

<code>
[粘贴调用代码]
</code>

目标模型:[目标模型]
使用的 SDK 与语言:[SDK 与语言]
下游怎么用返回结果:[下游如何使用结果]

请按下面的对照关系处理每一处预填充:

<migration_map>
A. 用来强制输出格式(如以左花括号开头逼出 JSON、限定分类标签)
   → 优先改用结构化输出(给定 schema);分类任务可改用带枚举字段的工具或结构化输出;也可以先直接要求按指定结构输出,并在代码里加校验和重试。
B. 用来去掉开场白(如预填「以下是摘要:」)
   → 在 system 提示词里直接说明:直接给出结果,不要以「以下是」「根据」之类的话开头;或要求把结果放进指定的 XML 标签,由代码截取;偶尔漏网的开场白在后处理里去掉。
C. 用来接着写被截断的内容或续写
   → 把续写要求放进 user 消息,并附上被截断回答的结尾原文,说明「上一次回答在这里中断,请从这里继续」;如果只是错误重试、对体验无影响,直接重新请求。
D. 用来在长对话里反复提醒角色或注入上下文
   → 把提醒内容放进 user 消息,或通过工具、上下文整理机制提供。
E. 用来规避不必要的拒答
   → 去掉预填充,在 user 消息里把任务背景和合理用途写清楚即可。
</migration_map>

输出:
一、清单:代码位置 | 原预填充内容 | 属于 A–E 哪一类 | 采用的替代方案 | 改动风险。
二、改造后的完整代码(保持原有业务逻辑,只改与预填充相关的部分),以及需要同步修改的 system 提示词。
三、下游解析代码需要相应调整的地方(例如原来靠拼接预填充的左花括号才能解析)。
四、建议的回归测试:用哪些输入验证改造前后输出一致。
不确定某处预填充的意图时,先问我,不要猜。

高亮处换成你自己的内容:[粘贴调用代码]、[目标模型]、[SDK 与语言]、[下游如何使用结果]

Claude Pro 充值

已被复制 0 次

使用说明

背景事实(据 Anthropic 官方提示词最佳实践页面,资料核对于 2026-10-10):从 Claude 4.6 系列模型开始,不再支持在最后一条 assistant 消息上做预填充,带这种预填充的请求会返回 400 错误;更早的模型仍然支持,对话中间位置的 assistant 消息不受影响。官方的解释是模型的指令遵循能力已经提高,多数预填充场景不再需要它,并给出了按用途分类的替代办法——提示词里 <migration_map> 的五类就是据此整理的。

怎么填变量:[下游如何使用结果] 很关键。很多老代码会把预填充的 { 和模型输出拼起来再解析,去掉预填充后这段拼接也得删,否则会多出一个括号。[目标模型] 写你要升级到的型号名,结构化输出等功能的可用范围以官方文档对该型号的说明为准。

常见问题与调整:

  • 改成直接指令后偶尔还有一句开场白 → 这是官方也提到的情况,稳妥的做法是让结果进 XML 标签或用结构化输出,再加一层后处理。
  • 分类任务输出了标签以外的词 → 改用带枚举的工具定义或结构化输出,比提示词约束可靠。
  • 只是想快速确认问题 → 先搜索代码里 messages 数组末尾 role 为 assistant 的地方,这些就是需要改的位置。

示例输出

示例,仅供参考(Python,原代码用预填充左花括号强制 JSON)
代码位置原预填充类别替代方案风险
extract.py 第 41 行{"role": "assistant", "content": "{"}A改用结构化输出并提供 schema;删除末尾 assistant 消息低;需同步改解析

下游调整:第 47 行 json.loads("{" + resp_text) 改为直接解析返回内容,不再手动补左花括号。

回归测试:取 30 条历史输入,比较改造前后各字段的取值是否一致,重点看缺失字段的表示方式有没有变化。

同款作品

用这条提示词做出来的作品;原作者会因此获得积分

做同款

还没有同款,来做第一个。

Nathaniel 的更多内容

同主题

同模型

0 条评论

登录 后参与评论

还没有评论,来抢沙发~