你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure API 管理中为 Azure OpenAI API 启用语义缓存
适用于:所有 API 管理层级
启用对 Azure OpenAI API 请求的响应的语义缓存,以减少对后端 API 的带宽和处理要求,并降低 API 使用者感知的延迟。 使用语义缓存,即使文本不相同,也可以为相同的提示以及含义相似的提示返回缓存的响应。 有关背景信息,请参阅教程:将 Azure Cache for Redis 用作语义缓存。
注意
本文中的配置步骤会为 Azure OpenAI API 启用语义缓存。 可以通用化这些步骤,为通过 Azure AI 模型推理 API 提供的相应大型语言模型 (LLM) API 启用语义缓存。
先决条件
- 必须将一个或多个 Azure OpenAI 服务 API 添加到 API 管理实例。 有关详细信息,请参阅将 Azure OpenAI 服务 API 添加到 Azure API 管理。
- Azure OpenAI 服务必须具有以下方面的部署:
- 聊天完成 API(或完成 API)- 用于 API 使用者调用的部署
- Embeddings API - 用于语义缓存的部署
- API 管理实例必须配置为对 Azure OpenAI API 使用托管标识身份验证。 有关详细信息,请参阅使用 Azure API 管理对 Azure OpenAI API 进行身份验证和授权访问。
- Azure Cache for Redis Enterprise。 必须在 Redis Enterprise 缓存上启用 RediSearch 模块。
注意
只能在创建新的 Redis Enterprise 缓存时启用 RediSearch 模块。 无法将模块添加到现有缓存中。 了解详细信息
- 在 Azure API 管理实例中配置的外部缓存。 有关步骤,请参阅在 Azure API 管理中使用外部 Azure Cache for 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 - 为 Azure OpenAI 服务输入
https://cognitiveservices.azure.com/
。
测试后端
若要测试后端,请为 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>
在“测试”选项卡上,通过添加值为 2024-02-01
等的 api-version
查询参数来测试操作。 提供有效的请求正文。 例如:
{"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
属性中,指定创建的 Embeddings API 后端。注意
为其他大型语言模型 API 启用语义缓存时,请改用 llm-semantic-cache-lookup 策略。
示例:
<azure-openai-semantic-cache-lookup score-threshold="0.8" embeddings-backend-id="embeddings-deployment" ignore-system-messages="true" max-message-count="10"> <vary-by>@(context.Subscription.Id)</vary-by> </azure-openai-semantic-cache-lookup>
在 API 的出站处理部分中,添加 azure-openai-semantic-cache-store 策略。
注意
为其他大型语言模型 API 启用语义缓存时,请改用 llm-semantic-cache-store 策略。
示例:
<azure-openai-semantic-cache-store duration="60" />
确认缓存
要确认语义缓存是否按预期工作,请使用门户中的测试控制台跟踪测试完成或聊天完成操作。 通过检查跟踪,确认在随后的尝试中使用了缓存。 了解有关在 Azure API 管理中跟踪 API 调用的更多信息。
例如,如果使用了缓存,则输出部分包括与以下屏幕截图中的条目类似的条目:
相关内容
- 缓存策略
- 用于 Redis 的 Azure 缓存
- Azure API 管理中的 GenAI 网关功能