本页目录8
- 如需保证输出严格符合 JSON Schema,应优先使用 Structured Outputs,而非本文的提示工程技巧
- Prefilling(预填 Assistant 回复)在 Claude 4.6 及更新模型、以及 Claude Mythos Preview 上不再支持,应改用 structured outputs 或 system prompt 指令
- 用具体示例(few-shot)比抽象指令更能稳定约束输出格式
- 对需要一致上下文的任务(如客服机器人、知识库问答),应使用检索(retrieval)将回答固定在特定信息集合上
- 复杂任务可拆分为多个子任务分别提示(prompt chaining),降低跨步骤的不一致风险
- 角色扮演类应用应通过 system prompt 设定角色,并预先给出常见场景的应对方式,以维持角色一致性
本文是对 Claude 官方参考页的中文整理,完整与最新内容以原文为准:Increase output consistency
提示:优先考虑 Structured Outputs
若需要 Claude 始终输出符合特定 schema 的合法 JSON,官方建议使用 Structured Outputs,而不是本文介绍的提示工程技巧。Structured Outputs 能保证 schema 合规性,专为此场景设计。本文技巧适用于更宽泛的输出一致性需求,或需要超出严格 JSON schema 的灵活性场景。
技巧总览
| 技巧 | 适用场景 | 要点 |
|---|---|---|
| 指定输出格式 | 需要结构化数据(JSON/XML/自定义模板) | 精确定义所需的每一个格式元素 |
| 预填 Assistant 回复(Prefill) | 需要跳过开场白、强制固定结构 | 在 Assistant 轮次预先写入格式开头 |
| 用示例约束 | 需要稳定的复杂输出结构 | 提供期望输出的完整示例,优于抽象说明 |
| 检索接地(Retrieval) | 需要基于固定知识集合作答(客服、知识库) | 将回答限定在检索到的信息范围内 |
| 提示链(Prompt Chaining) | 复杂多步骤任务 | 拆分为多个子任务分别提示 |
| 角色保持(Keep in character) | 角色扮演 / 品牌化助手 | system prompt 设定角色 + 预设常见场景应对话术 |
指定所需的输出格式
使用 JSON、XML 或自定义模板精确定义所需的输出格式,让 Claude 遵循你要求的每一个格式元素。
示例(客户反馈分析,User 消息要求输出 JSON,字段包括 sentiment「positive/negative/neutral」、key_issues「列表」、action_items「包含 team 和 task 的字典列表」):
你是 Customer Insights AI。分析以下反馈,并以 JSON 格式输出,字段包括:"sentiment"(positive/negative/neutral)、"key_issues"(列表)、"action_items"(包含 "team" 和 "task" 的字典列表)。
Claude 会据此返回严格符合该字段结构的 JSON 对象。
预填 Claude 的回复(Prefill)
注意:Prefilling 在 Claude 4.6 及更新版本以及 Claude Mythos Preview 上不受支持。在支持的模型上可继续使用 prefill,不支持的模型应改用 structured outputs 或 system prompt 指令。
在支持的模型上,可以预先在 Assistant 轮次中填入期望格式的开头部分(例如 XML 标签的起始片段),从而绕过 Claude 的礼貌性开场白,强制其直接按指定结构续写。
示例(日销售报告):User 消息中给出完整的 <report> XML 模板,Assistant 轮次预填 <report>\n <summary>\n <metric name=,Claude 会从该断点处继续补全余下的 XML 内容。
用示例进行约束(Constrain with examples)
提供期望输出的具体示例,比抽象的文字说明更有效。
示例(市场情报分析):在 prompt 中给出一份 <competitor> XML 结构的完整示例(含 name、overview、swot「strengths/weaknesses/opportunities/threats」、strategy 字段),再要求 Claude 按同一格式分析新的竞争对手数据,输出会严格复用该结构。
使用检索保证上下文一致性(Use retrieval for contextual consistency)
对于需要一致上下文的任务(如聊天机器人、知识库问答),使用检索将 Claude 的回答固定在一份确定的信息集合上。
示例(IT 支持一致性增强):在 prompt 中提供 <kb> 知识库条目(每条含 id、title、content),并要求 Claude 始终先查阅知识库,再按如下格式回复:
<response>
<kb_entry>使用到的知识库条目</kb_entry>
<answer>回复内容</answer>
</response>
这样可确保不同用户提出相似问题时,Claude 引用的答案来源与内容保持一致。
用提示链处理复杂任务(Chain prompts for complex tasks)
将复杂任务拆解为若干更小、更一致的子任务。每个子任务都能获得 Claude 的完整注意力,从而降低大规模工作流中的不一致性错误。(原文未展开具体拆分方法,可参考官方 prompt engineering 相关文档。)
保持角色一致(Keep Claude in character)
对于基于角色的应用,维持角色一致性需要有意识地设计提示:
| 做法 | 说明 |
|---|---|
| 用 system prompt 设定角色 | 使用 system prompts 定义 Claude 的角色与个性,为一致性回复打下基础 |
| 提供角色细节 | 设定角色时提供详细的个性、背景及具体特征/怪癖信息,有助于模型更好地模拟并泛化角色特征 |
| 预备常见场景 | 在 prompt 中提供常见场景清单及对应的期望回复,"训练" Claude 在不跳出角色的前提下应对多样情况 |
示例(企业聊天机器人角色提示):system prompt 中定义 AcmeBot 的角色(分析技术文档、为工程/产品/运营团队提供可执行洞见、保持专业简洁语气);User 消息中给出交互规则(始终引用 AcmeTechCo 标准或行业最佳实践、不确定时先澄清、绝不泄露机密信息),并附带若干场景的标准应对话术示例,例如被问及知识产权时回复"I cannot disclose TechCo's proprietary information."。