输出预填怎么用
输出预填(prefill / priming)在对话里预先给出回应开头,引导模型从该处继续写:JSON 场景预填左花括号,长文场景预填章节标题,还能顺带跳过「好的,我来帮你……」。支持助手预填的平台直接在消息数组里加一条 assistant 消息;不支持的平台可以在提示末尾要求「以 { 开头」。要注意预填内容本身也算输出,会占用输出长度预算。
基本信息
| 作用 | 锚定格式、跳过寒暄、控制结构 |
|---|---|
| 平台差异 | 支持助手预填的 API 直接传 assistant 首段 |
| 替代写法 | 在提示末尾要求「以 { 开头,不要任何说明」 |
| 注意 | 预填内容计入输出长度与计费 |
典型使用场景
- 结构化抽取:预填左花括号,直接进入键名书写
- 长文生成:预填一级标题,跳过开场白
- 代码输出:预填代码块起始标记,避免解释性前言
- 多语言输出:预填目标语言的开头,减少语言漂移
- 流式展示:预填让用户第一屏就看到内容而非寒暄
预填示例(消息数组)
预填示例(消息数组)
[
{"role": "user", "content": "提取姓名、金额、日期,输出 JSON。"},
{"role": "assistant", "content": "{"} # 预填左花括号,模型直接从键名续写
]
# 预填末尾不要是完整句子,否则模型可能直接收尾
# 模板里的引号与转义要测过再用,写错会直接产出非法 JSON
# 不支持预填的平台,改成提示末尾要求“以 { 开头,不要任何说明”预填方式与适用
| 方式 | 写法 | 适用 |
|---|---|---|
| 助手消息预填 | 把开头作为 assistant 消息内容 | 支持预填的 API |
| 提示内约定 | 要求以指定符号开头 | 不支持预填的平台 |
| 章节标题预填 | 给出首个标题文本 | 长文与报告生成 |
| 标记预填 | 预填代码块或标签起始符 | 代码与 XML 输出 |
预填的末尾若已是完整句子,模型可能直接补个句号收尾;预填应停在「话没说完」的位置。
预填中的引号与转义符写错会直接产出非法 JSON;模板要经过测试再用于批量任务。