模型指南

Claude 提示词:实用指南

如何为 Claude 编写提示词:XML 标签、长文档的放置位置、示例、扩展思考、明确的指令,以及 Claude 特有的常见错误。

译自英文原文。代码、提示词和模型输出保留英文。

Claude 是 Anthropic 的模型家族,它与任何模型一样,对相同的基本要素有反应:清晰的任务、相关的上下文,以及说明了的格式。本指南依据 Anthropic 发布的提示词指南,介绍对 Claude 而言尤其重要的习惯。

模型名称和限制会变化,因此这里的建议针对的是稳定的行为。当前的模型请查看 Anthropic 的文档。

清晰、直接、具体

Anthropic 的第一条建议,是把 Claude 当作一位能干、但对你的项目一无所知的新同事。说明输出的用途、谁会阅读,以及好的结果是什么样子。

近期的 Claude 模型会精确地遵循指令。这有两点影响,值得提前考虑:

  • 要求你想要的。 如果你希望 Claude 超出字面请求,例如去实现一项修改而不只是提出建议,就明确说出来。
  • 去掉强调。 大写和“CRITICAL”是不必要的,还可能导致某条规则被过度宽泛地应用。一句平实的话就够了。

解释原因

Claude 能很好地从原因中举一反三。比较:

  • Never use ellipses.
  • Your response will be read aloud by a text-to-speech engine, so never use ellipses, because the engine cannot pronounce them.

第二种写法让 Claude 能处理你没有列出的相关情形。

用 XML 标签组织提示词

Claude 与用来区分提示词各部分的 XML 风格标签配合得尤其好。没有特殊的标签名;选择能描述内容的名字并保持一致即可。

Review the contract in <contract> tags against the checklist in
<checklist> tags. Put your findings in <findings> tags.

<contract>
{{contract_text}}
</contract>

<checklist>
{{checklist}}
</checklist>

标签有三方面的帮助:Claude 不会把指令与数据混淆,你可以按名称引用某个部分,还可以要求把输出放在你的代码容易提取的标签中。

把长文档放在最前面

对于较长的输入,把文档放在提示词开头附近,把问题或指令放在末尾。Anthropic 指出,把查询放在长文档之后,能明显提升回答质量。

对于多份文档,用各自带来源元数据的标签包裹每一份:

<documents>
  <document index="1">
    <source>q3-report.pdf</source>
    <document_content>{{report}}</document_content>
  </document>
</documents>

Using the documents above, list the three largest risks.

对于针对长材料的任务,让 Claude 先引用相关段落,再根据这些引用作答。参阅 RAG 提示词。

使用示例

示例是引导格式、语气和结构最可靠的方法之一。用 <example> 标签包裹它们,让 Claude 把它们当作说明性的例子,并让示例多样化:Claude 会密切关注示例,并复现它们共有的模式,包括你并不想要的模式。

在系统提示词中给 Claude 一个角色

在系统提示词中设定角色和常驻规则,把任务放在用户回合里。哪怕只有一句角色描述,也能让语气和深度更聚焦。参阅系统提示词与角色提示词。

扩展思考

Claude 模型可以在回答前推理,这个功能叫扩展思考(extended thinking)。开启时:

  • 给出高层次的指导(“仔细考虑边界情况”),而不是规定每一步。Claude 自己的方法通常比预设脚本更好。
  • 除非你需要看到,否则不要再要求在回答中逐步推理。
  • 在出错代价高昂的任务中,让 Claude 在结束前验证自己的工作。

关闭思考时,让 Claude 先在 <thinking> 标签中推理,再在 <answer> 标签中作答,也能带来类似的好处。参阅思维链提示词。

控制格式

  • 说明要做什么,而不是要避免什么。 “用流畅的段落书写”比“不要使用 markdown”更有效。
  • 匹配风格。 提示词的格式会影响回答的格式。用平实文字写的提示词,往往得到文字回答。
  • 为你要解析的部分要求使用标签。
  • 对于严格的 JSON, 使用带输入 schema 的工具调用或结构化输出功能,并验证结果。参阅结构化输出提示词。

工具与智能体

Claude 广泛用于智能体场景,包括通过 Anthropic 推出的 Model Context Protocol。

  • 详尽描述每个工具:它做什么、何时使用、返回什么。
  • 说明 Claude 应当行动还是只提出建议。它会紧密遵循这一指令。
  • 对于长任务,让 Claude 把笔记记在文件里,这样进度能在上下文重置后保留下来。
  • 彼此独立的工具调用可以并行运行;如果想要速度,就说明这一点。

参阅面向 AI 智能体的提示词。PromptFlowEngine MCP 服务器可以添加到 Claude Desktop 或 Claude Code,让 Claude 把提示词的分析、重构和清理作为工具来使用。

token 计数与缓存

Anthropic 没有为当前模型发布离线分词器,所以离线计数只是近似值。PromptFlowEngine 因此把它对 Claude 的计数标注为近似。如需精确数字,请使用 Anthropic 的 token 计数端点。

提示词缓存需要主动启用:你标出提示词稳定部分的结尾,重复的请求就会以折扣价读取它。把稳定内容放在前面。参阅 token 优化。

使用 Claude 的常见错误

错误 后果 修正
用大写“喊”出规则 被过度应用 平实的陈述并附上原因
把问题放在长文档之前 对文档的利用较弱 文档在前,问题在后
粘贴的内容没有标记 指令与数据混淆 用 XML 标签包裹
只用千篇一律的示例 复制了非预期的模式 让示例多样化
请求含糊却期待主动性 字面而最小化的回答 明确要求额外的工作
用否定句描述格式规则 格式不一致 说明你想要的格式

优化 Claude 提示词

  1. 说明任务及其目的。
  2. 用描述性的标签包裹每个输入。
  3. 把长文档移到最前,把问题移到末尾。
  4. 如果格式或语气重要,添加两三个多样化的示例。
  5. 删除重复和强调。

PromptFlowEngine 提示词优化器在结构化模式下会用标签包裹模板变量并删除重复的指令,然后验证没有丢失任何内容。Chrome 扩展在 claude.ai 内做同样的事。

可以与 ChatGPT 与 OpenAI 提示词指南和 Gemini 提示词指南对照阅读。