System prompts
什么是系统提示?
系统提示是一种在向 Claude 提出问题或任务之前,为其提供上下文、指令和指南的方式。通过使用系统提示,您可以为对话设置舞台,指定 Claude 的角色、个性、语气或任何其他相关信息,这将有助于它更好地理解和响应用户的输入。
系统提示可以包括:
- 任务说明和目标
- 个性特征、角色和语气指南
- 用户输入的上下文信息
- 创意约束和风格指导
- 外部知识、数据或参考资料
- 规则、指南和护栏
- 输出验证标准和要求
使用系统提示的好处
合理设计的系统提示可以显著提高 Claude 的性能和输出质量。一些主要好处包括:
- 改进角色扮演和角色一致性:当通过系统提示为 Claude 分配特定角色或个性时,它可以在整个对话中更有效地保持该角色,表现出更自然、更有创意的响应,同时保持角色一致。
- 增强对规则和指令的遵守:系统提示可以帮助 Claude 更好地理解和遵循指南,减少执行禁止任务、输出受限内容或偏离给定指令的可能性。
- 增强上下文理解:通过在系统提示中提供相关的背景信息或参考资料,您可以提高 Claude 对用户输入的理解,并使其能够生成更准确、更符合上下文的响应。
- 自定义输出格式:系统提示可用于指定所需的输出格式,如标题、列表、表格或代码块,确保 Claude 的响应以最适合您需求的方式进行结构化和呈现。
需要注意的是,虽然系统提示可以增强 Claude 对不良行为的稳健性和弹性,但它们并不能保证完全防止 jailbreaks 或 leaks。然而,它们确实为 Claude 的输出提供了额外的指导和控制层。
如何使用系统提示
要在 Messages API 中使用系统提示,请将 system
参数设置为您所需的系统提示文本。以下是一个 API 调用示例:
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 文档。
提示技巧
您可以将用于用户提示的相同提示技巧应用于系统提示。例如,您可以:
- 指定输出格式:在系统提示中提供示例响应或所需输出模式的指令,以指导 Claude 的行为。
- 提供文档、指南和参考资料:在系统提示中包含相关信息或 RAG 内容,以帮助 Claude 生成更明智、更准确的响应。
- 使用 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 遵守指令和指南的能力。然而,它们并不能保证完全防止 jailbreaks 或 leaks。