什么是系统提示?

系统提示是一种在向 Claude 提出问题或任务之前,为其提供上下文、指令和指南的方式。通过使用系统提示,您可以为对话设置舞台,指定 Claude 的角色、个性、语气或任何其他相关信息,这将有助于它更好地理解和响应用户的输入。

系统提示可以包括:

  • 任务说明和目标
  • 个性特征、角色和语气指南
  • 用户输入的上下文信息
  • 创意约束和风格指导
  • 外部知识、数据或参考资料
  • 规则、指南和护栏
  • 输出验证标准和要求

使用系统提示的好处

合理设计的系统提示可以显著提高 Claude 的性能和输出质量。一些主要好处包括:

  1. 改进角色扮演和角色一致性:当通过系统提示为 Claude 分配特定角色或个性时,它可以在整个对话中更有效地保持该角色,表现出更自然、更有创意的响应,同时保持角色一致。
  2. 增强对规则和指令的遵守:系统提示可以帮助 Claude 更好地理解和遵循指南,减少执行禁止任务、输出受限内容或偏离给定指令的可能性。
  3. 增强上下文理解:通过在系统提示中提供相关的背景信息或参考资料,您可以提高 Claude 对用户输入的理解,并使其能够生成更准确、更符合上下文的响应。
  4. 自定义输出格式:系统提示可用于指定所需的输出格式,如标题、列表、表格或代码块,确保 Claude 的响应以最适合您需求的方式进行结构化和呈现。

需要注意的是,虽然系统提示可以增强 Claude 对不良行为的稳健性和弹性,但它们并不能保证完全防止 jailbreaks 或 leaks。然而,它们确实为 Claude 的输出提供了额外的指导和控制层。


如何使用系统提示

要在 Messages API 中使用系统提示,请将 system 参数设置为您所需的系统提示文本。以下是一个 API 调用示例:

Python
import anthropic

client = anthropic.Client(api_key="YOUR_API_KEY")

response = client.messages.create(
    model="claude-2.1",
    system="Respond only in Spanish.", # <-- 系统提示
    messages=[
        {"role": "user", "content": "Hello, Claude!"} # <-- 用户提示
    ]
)

print(response.message)

有关更多信息,请参阅我们的 Messages API 文档

注意:您也可以在 Console 中使用系统提示,但不能在 claude.ai 上使用。


提示技巧

您可以将用于用户提示的相同提示技巧应用于系统提示。例如,您可以:

  1. 指定输出格式:在系统提示中提供示例响应所需输出模式的指令,以指导 Claude 的行为。
  2. 提供文档、指南和参考资料:在系统提示中包含相关信息或 RAG 内容,以帮助 Claude 生成更明智、更准确的响应。
  3. 使用 XML 标签,特别是用于构建长文档使用 XML 标签将系统提示组织成多个部分,以提高清晰度。在系统提示中包含多个或冗长的文档时,您可以使用多文档 XML 格式来帮助 Claude 更好地理解和利用所提供的信息。

常见问题

我如何知道何时使用系统提示而不是用户提示?

提示都是实验,所以我们建议您尝试两种方式!但一般来说,您可以将系统提示视为提供有关与 Claude 整体交互的指导的空间,而 user 轮次则是交互本身的一部分,或者当您只有一次性任务要完成时。

如何将现有的仅用户提示转换为使用系统提示?

要将仅 user 提示转换为系统提示,只需将不属于用户输入的任何内容移动到 Messages API 中的 system 参数即可。这可以包括任务说明、个性指南、参考资料或任何其他有助于为对话设置舞台的上下文信息。我们鼓励您进行实验,看看哪种方式在哪个字段中效果最好。

在哪里可以使用系统提示?

系统提示目前可通过我们的 API、Console、Amazon Bedrock 的 API 和 Google Cloud Vertex AI 的 API 用于 Claude 3 模型和 Claude 2.1。目前在 claude.ai 上不支持系统提示。

系统提示能使我的提示防 jailbreak 或防泄漏吗?

虽然由于其训练方法(例如 RLHF 和 Constitutional AI),Claude 已经对 jailbreaks 和不良行为具有高度弹性,但系统提示可以进一步增强 Claude 遵守指令和指南的能力。然而,它们并不能保证完全防止 jailbreaksleaks