你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure API 管理中为 Azure OpenAI API 启用语义缓存

启用对 Azure OpenAI API 请求的响应的语义缓存,以减少对后端 API 的带宽和处理要求,并降低 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"}]}

当请求成功时,响应包括聊天消息的完成。

为 Embeddings API 创建后端

使用以下设置为 Embeddings API 部署配置后端资源:

  • 名称 - 选择的名称,例如 embeddings-backend。 使用此名称引用策略中的后端。
  • 输入 - 选择“自定义 URL”
  • 运行时 URL - Azure OpenAI 服务中 Embeddings API 部署的 URL,类似于:https://my-aoai.openai.azure.com/openai/deployments/embeddings-deployment/embeddings

测试后端

若要测试后端,请为 Azure OpenAI 服务 API 创建 API 操作:

  1. 在 API 的“设计”选项卡上,选择“+ 添加操作”
  2. 输入操作的“显示名称”和“名称”(可选)。
  3. 前端部分的 URL 中,选择 “POST” 并输入路径 /
  4. 在“标头”选项卡上,添加具有 Content-Type 名称和 application/json 值的必需标头。
  5. 选择保存

在 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 后端。

    示例:

    <azure-openai-semantic-cache-lookup
        score-threshold="0.8"
        embeddings-backend-id="embeddings-deployment"
        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>
    
    
  • 在 API 的出站处理部分中,添加 azure-openai-semantic-cache-store 策略。

    示例:

    <azure-openai-semantic-cache-store duration="60" />
    

确认缓存

要确认语义缓存是否按预期工作,请使用门户中的测试控制台跟踪测试完成或聊天完成操作。 通过检查跟踪,确认在随后的尝试中使用了缓存。 了解有关在 Azure API 管理中跟踪 API 调用的更多信息

例如,如果使用了缓存,则输出部分包括与以下屏幕截图中的条目类似的条目:

Azure 门户中请求跟踪的屏幕截图。