本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
注意
Amazon Bedrock 提示缓存目前仅适用于特定数量的客户。要了解有关参与预览版的更多信息,请参阅 Amazon Bedrock 提示缓存
提示缓存是一项可选功能,您可以在 Amazon Bedrock 中获取模型推理时使用该功能来缩短响应延迟。您可以将部分对话添加到缓存中,这样模型就可以重复使用缓存中的上下文,而不必每次都完全处理输入和计算响应。
当您的工作负载具有长而重复的上下文且经常重复用于多个查询时,提示缓存会有所帮助。例如,如果你有一个聊天机器人,用户可以在其中上传文档并询问有关文档的问题,那么每次用户提供输入时,模型处理文档可能会很耗时。通过提示缓存,您可以在对话的上下文中缓存文档,以便更快地做出响应。
使用提示缓存时,您需要按较低的推理费率收费,而从缓存中读取和写入多少令牌的费率则按不同的费率收费。有关更多信息,请参阅 Amazon Bedrock 定价
工作方式
如果您选择使用提示缓存,Amazon Bedrock 会创建一个由缓存检查点组成的缓存。这些检查点会缓存指向该点的提示符的整个前缀。在随后的请求中,模型可以检索这些缓存的信息,而不必再次处理这些信息,从而缩短了响应时间并降低了成本。
缓存检查点具有最小和最大令牌数量,具体取决于您使用的特定模型。只有当你的总提示前缀满足最小令牌数量时,你才能创建缓存检查点。例如,Anthropic Claude 3.5 Sonnet v2 模型需要 1,024 个令牌作为缓存检查点。你可以在提示后创建第一个检查点,模型的响应达到 1,024 个标记。在总数达到 2,048 个代币后,您可以创建第二个检查点。如果您尝试在不满足最小令牌数量的情况下添加缓存检查点,则您的推理请求仍会成功,但该检查点未添加到缓存中。
缓存有五分钟的生存时间 (TTL),每次成功命中缓存都会重置。在此期间,缓存中的上下文会被保留。如果 TTL 窗口内没有出现缓存命中,则您的缓存将过期。
如果您的缓存过期,则可以将之前缓存的上下文重新用作新缓存的第一个缓存检查点。
每当你在 Amazon Bedrock 中获得支持的模型的模型推断时,你都可以使用提示缓存。以下 Amazon Bedrock 功能支持提示缓存:
- Converse 和 ConverseStream APIs
-
您可以与模型进行对话,在提示中指定缓存检查点。
- InvokeModel 和 InvokeModelWithResponseStream APIs
-
您可以提交单一提示请求,在这些请求中启用提示缓存并指定缓存检查点。
- Amazon Bedrock 代理
-
创建或更新代理时,可以选择启用或禁用提示缓存。Amazon Bedrock 会自动为您处理提示缓存和检查点行为。
它们为您 APIs 提供了对提示缓存的最大灵活性和精细控制。你可以在提示中设置每个缓存检查点。您可以通过创建更多缓存检查点来添加到缓存中,最多不超过特定模型允许的最大缓存检查点数。有关更多信息,请参阅 支持的型号、区域和限制。
要将提示缓存与 Amazon Bedrock Agents 等其他功能一起使用,您只需在创建或更新代理时启用提示缓存字段即可。启用提示缓存后,Amazon Bedrock 会自动为您处理缓存行为和缓存检查点。
支持的型号、区域和限制
下表列出了每个支持的 AWS 区域模型支持的令牌最小值、最大缓存检查点数以及允许缓存检查点的字段。
模型名称 | 模型 ID | 支持提示缓存的区域 | 每个缓存检查点的最小令牌数 | 缓存检查点的最大数量 | 可以在其中添加缓存检查点的字段 |
---|---|---|---|---|---|
亚马逊 Nova Micro v1 |
亚马逊。 nova-micro-v1:0 |
美国东部(弗吉尼亚州北部) 美国西部(俄勒冈州) |
1 |
1 |
|
亚马逊 Nova Lite v1 |
亚马逊。 nova-lite-v1:0 |
美国东部(弗吉尼亚州北部) 美国西部(俄勒冈州) |
1 |
1 |
|
亚马逊 Nova Pro v1 |
亚马逊。 nova-pro-v1:0 |
美国东部(弗吉尼亚州北部) 美国西部(俄勒冈州) |
1 |
1 |
|
Claude 3.5 俳句 |
anthropic.claude-3-5-haiku-20241022-v1:0 |
常规推断:美国西部(俄勒冈州)
|
2,048 |
4 |
|
Claude 3.5 Sonnet v2 |
anthropic.claude-3-5-sonnet-20241022-v2:0 |
常规推断:美国西部(俄勒冈州)
|
1024 |
4 |
|
入门
以下各节简要概述了如何使用提示缓存功能来处理通过 Amazon Bedrock 与模型进行交互的每种方法。
Converse API 提供了高级而灵活的选项,用于在多回合对话中实现提示缓存。有关每种型号的提示要求的更多信息,请参阅上一节支持的型号、区域和限制。
示例请求
以下示例显示了在请求的messages
system
、或tools
字段中设置的缓存检查点 Converse API。对于给定的请求,您可以将检查点放置在这些位置中的任何一个。例如,如果向 Claude 3.5 Sonnet v2 模型发送请求,则可以在其中放置两个缓存检查点,在中放置一个缓存检查点messages
,一个放入system
缓存检查点。tools
有关结构化和发送的更多详细信息以及示例 Converse API 请求,请参阅与... 进行对话 Converse API 操作。
来自的模型响应 Converse API 包括两个专门用于提示缓存的新字段。CacheReadInputTokens
和CacheWriteInputTokens
值告诉您由于您之前的请求而从缓存中读取了多少令牌,以及有多少令牌被写入缓存。Amazon Bedrock 会向你收取这些费用,其费率低于完整模型推断的成本。
默认情况下,当您调用 InvokeModelAPI 时,提示缓存处于启用状态。你可以在请求正文中的任何位置设置缓存检查点,类似于前面的示例 Converse API。
以下示例说明如何构造 InvokeModel请求的正文 Anthropic Claude 3.5 Sonnet v2 模型。请注意, InvokeModel 请求正文的确切格式和字段可能会因您选择的模型而异。要查看不同模型的请求和响应正文的格式和内容,请参阅基础模型的推理请求参数和响应字段。
body={
"anthropic_version": "bedrock-2023-05-31",
"system":"Reply concisely",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Describe the best way to learn programming."
},
{
"type": "text",
"text": "Add additional context here for the prompt that meets the minimum token requirement for your chosen model.",
"cache_control": {
"type": "ephemeral"
}
}
]
}
],
"max_tokens": 2048,
"temperature": 0.5,
"top_p": 0.8,
"stop_sequences": [
"stop"
],
"top_k": 250
}
有关发送 InvokeModel 请求的更多信息,请参阅使用以下命令提交单个提示 InvokeModel。
在 Amazon Bedrock 控制台的聊天平台中,你可以打开提示缓存选项,Amazon Bedrock 会自动为你创建缓存检查点。
按照中的说明开始在 使用操场在控制台中生成响应 Amazon Bedrock 游乐场中进行提示。对于支持的机型,Playground 中的提示缓存会自动开启。但是,如果不是,请执行以下操作以打开提示缓存:
-
在左侧面板中,打开 “配置” 菜单。
-
打开提示缓存开关。
-
运行你的提示。
在您的输入和模型响应组合达到检查点所需的最低令牌数量(因型号而异)后,Amazon Bedrock 会自动为您创建第一个缓存检查点。当你继续聊天时,每次达到最小数量的代币都会创建一个新的检查点,最多不超过模型允许的最大检查点数量。您可以随时通过选择提示缓存开关旁边的查看缓存检查点来查看缓存检查点,如以下屏幕截图所示。

通过查看 Playground 响应中的 “缓存指标” 弹出窗口 (
),您可以查看由于每次与模型交互而从缓存中读取和写入缓存的令牌数量。

如果您在对话中关闭提示缓存开关,则可以继续与模特聊天。