你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
适用于:所有 API 管理层级
启用对 LLM API 请求的响应的语义缓存,以减少对后端 API 施加的带宽和处理要求,并降低 API 使用者感知的延迟。 使用语义缓存,可以返回相同提示的缓存响应,也可以返回含义相似的提示,即使文本不相同。 有关背景信息,请参阅 教程:使用 Azure 托管 Redis 作为语义缓存。
注意
本文中的配置步骤演示如何在 Microsoft Foundry 模型中为从 Azure OpenAI 添加到 API 管理的 API 启用语义缓存。 可以应用类似的步骤,为通过 Azure AI 模型推理 API 或通过第三方推理提供程序提供的 OpenAI 兼容模型为相应的大型语言模型(LLM)API 启用语义缓存。
先决条件
在 Microsoft Foundry 的模型部署中,添加一个或多个 Azure OpenAI,作为 API 引入到您的 API 管理实例中。 有关详细信息,请参阅 将 Azure OpenAI API 添加到 Azure API 管理。
为以下 API 创建部署:
- 聊天完成 API - 用于 API 使用者调用的部署
- 嵌入 API - 用于语义缓存的部署
将 API 管理实例配置为使用 Azure OpenAI API 的托管标识身份验证。 有关详细信息,请参阅使用 Azure API 管理对 Azure OpenAI API 进行身份验证和授权访问。
启用了 RediSearch 模块的 Azure 托管 Redis 实例位于 Redis 缓存上。
注意
只能在创建新的 Azure 托管 Redis 缓存时启用 RediSearch 模块。 无法将模块添加到现有缓存中。 了解详细信息
将 Azure 托管 Redis 实例配置为 Azure API 管理实例中的外部缓存。 有关步骤,请参阅在 Azure API 管理中使用外部 Redis 兼容缓存。
测试聊天 API 部署
首先,测试 Azure OpenAI 部署,确保聊天完成 API 或聊天 API 按预期工作。 有关步骤,请参阅将 Azure OpenAI API 导入 Azure API 管理。
例如,通过向 API 终结点发送 POST 请求并在请求正文中提示,来测试 Azure OpenAI Chat API。 响应中应包括完成提示。 示例请求:
POST https://my-api-management.azure-api.net/my-api/openai/deployments/chat-deployment/chat/completions?api-version=2024-02-01
借助请求正文:
{"messages":[{"role":"user","content":"Hello"}]}
当请求成功时,响应包括聊天消息的完成。
创建用于嵌入 API 的后端
使用以下设置为嵌入 API 部署创建 后端 资源:
名称 - 所选的名称,例如 embeddings-backend。 使用此名称引用策略中的后端。
输入 - 选择“自定义 URL”。
运行时 URL - Azure OpenAI 中嵌入 API 部署的 URL,类似于:
https://my-aoai.openai.azure.com/openai/deployments/embeddings-deployment/embeddings(没有查询参数)。授权凭据 - 转到 托管身份选项卡。
- 客户端标识 - 选择 系统分配的标识 或输入用户分配的托管标识客户端 ID。
-
资源 ID - 输入
https://cognitiveservices.azure.com/以获取 Azure OpenAI。
测试嵌入后端
若要测试嵌入向量后端,请为 Azure OpenAI API 创建一个 API 操作:
- 在 API 的“设计”选项卡上,选择“+ 添加操作”。
- 输入一个 显示名称,例如 嵌入,并可选择为操作输入 名称。
- 在前端部分的 URL 中,选择 “POST” 并输入路径
/。 - 在“标头”选项卡上,添加具有 名称和
Content-Type值的必需标头。application/json - 选择“保存”。
在 API 操作的“入站处理”部分中配置以下策略。 在设置后端服务策略中,替换创建的后端名称。
<policies>
<inbound>
<set-backend-service backend-id="embeddings-backend" />
<authentication-managed-identity resource="https://cognitiveservices.azure.com/" />
[...]
</inbound>
[...]
</policies>
在“测试”选项卡上,通过添加值为 api-version 等的 2024-02-01 查询参数来测试操作。 提供有效的请求正文。 例如:
{"input":"Hello"}
如果请求成功,响应将包含输入文本的向量表示形式。 示例响应:
{
"object": "list",
"data": [{
"object": "embedding",
"index": 0,
"embedding": [
-0.021829502,
-0.007157768,
-0.028619017,
[...]
]
}]
}
配置语义缓存策略
若要在 Azure API 管理中为 Azure OpenAI API 启用语义缓存,请应用以下策略:一个策略用于在发送请求之前检查缓存(查找),另一个策略用于存储响应以供将来重复使用(存储):
在 API 的“入站处理”部分中,添加 azure-openai-semantic-cache-lookup 策略。 在
embeddings-backend-id属性中,指定创建的嵌入 API 后端。注意
为其他大型语言模型 API 启用语义缓存时,请改用 llm-semantic-cache-lookup 策略。
示例:
<azure-openai-semantic-cache-lookup score-threshold="0.15" embeddings-backend-id="embeddings-backend" embeddings-backend-auth="system-assigned" ignore-system-messages="true" max-message-count="10"> <vary-by>@(context.Subscription.Id)</vary-by> </azure-openai-semantic-cache-lookup> <rate-limit calls="10" renewal-period="60" />在 API 的“出站处理”部分中,添加 azure-openai-semantic-cache-store 策略。
注意
为其他大型语言模型 API 启用语义缓存时,请改用 llm-semantic-cache-store 策略。
示例:
<azure-openai-semantic-cache-store duration="60" />
确认缓存
若要确认语义缓存按预期工作,请使用门户中的测试控制台跟踪测试完成或聊天完成操作。 通过检查跟踪,确认在随后的尝试中使用了缓存。 了解有关在 Azure API 管理中跟踪 API 调用的更多信息。
调整查找策略中的score-threshold属性,以控制传入提示与缓存提示的匹配程度,从而返回其存储的响应。 较低的分数阈值意味着提示必须具有更高的语义相似性才能返回缓存的响应。 超过阈值的提示项不会使用缓存响应。
例如,如果使用缓存,“ 输出 ”部分包含类似于以下屏幕截图的条目:
相关内容
- 缓存策略
- Azure 托管 Redis
- Azure API 管理中的 AI 网关功能