查看我们的博客文章 Claude 2.1 的长上下文提示,了解高效预填充的示例。


为什么要预填充 Claude 的回复?

预填充 Claude 的回复有以下几个主要好处:

  1. 增强可控性:通过提供一些初始文本供 Claude 继续,您可以将 Claude 的回复引导到所需的方向。当您希望 Claude 专注于特定主题、生成特定类型的内容或以特定方式行事时,这一点尤其有用。
  2. 控制输出格式:预填充允许您指定希望 Claude 使用的确切输出格式。在处理 JSON 或 XML 等结构化数据格式时,这一点尤其方便。有关更多详细信息,请参阅我们的控制输出格式指南。
  3. 保持角色一致性:在角色扮演场景中,预填充 Claude 的回复可以帮助 Claude 在整个长对话中保持角色。通过在 Assistant 消息中持续提醒 Claude 其角色,您可以更好地确保 Claude 保持所需的角色。查看保持 Claude 的角色了解更多详情。

如何预填充 Claude 的回复

要预填充 Claude 的回复,只需在发出 API 请求时在 Assistant 消息中包含所需的初始文本即可。下面是一个示例提示:

角色好的提示
User请从此产品描述中提取名称、尺寸、价格和颜色,并将其输出到 JSON 对象中。

<description>SmartHome Mini 是一款紧凑型智能家居助手,有黑色和白色可选,售价仅为 $49.99。它宽度只有 5 英寸,可让您通过语音或应用程序控制灯光、恒温器和其他连接设备,无论您将它放在家中何处。这个价格实惠的小型集线器为您的智能设备带来方便的免提控制。</description>
Assistant (预填充){

在此示例中,通过以 { 开始 Assistant 消息,我们将 Claude 的输出限制为请求的 JSON 模式的其余部分。

角色回复
Assistant (Claude 的回复)“name”: “SmartHome Mini”,
“size”: “宽 5 英寸”,
“price”: “$49.99”,
“colors”: [
“black”,
“white”
]
}

以下是如何在 Messages API 格式的代码中编写上述提示:

Python
import anthropic

client = anthropic.Anthropic(
    # 默认为 os.environ.get("ANTHROPIC_API_KEY")
    api_key="my_api_key",
)
message = client.messages.create(
    model="claude-2.1",
    max_tokens=1000,
    temperature=0,
    messages=[
        {
            "role": "user",
            "content": "请从此产品描述中提取名称、尺寸、价格和颜色,并将其输出到 JSON 对象中。\n\n<description>SmartHome Mini 是一款紧凑型智能家居助手,有黑色和白色可选,售价仅为 $49.99。它宽度只有 5 英寸,可让您通过语音或应用程序控制灯光、恒温器和其他连接设备,无论您将它放在家中何处。这个价格实惠的小型集线器为您的智能设备带来方便的免提控制。\n</description>"
        }
        {
            "role": "assistant",
            "content": "{"
        }
    ]
)
print(message.content)

其他资源

  • 提示工程技术:探索其他优化提示和增强 Claude 性能的策略。
  • Anthropic cookbook:浏览一系列 Jupyter notebook,其中包含可复制的代码片段,展示了使用 Claude 的高效和高级技术、集成和实现。
  • 提示库:从精选的各种任务和用例提示中获得灵感。