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

缓存对大型语言模型 API 请求的响应

适用于:所有 API 管理层级

使用 llm-semantic-cache-lookup 策略根据提示与以前的请求的向量邻近度以及指定的分数阈值,对配置的外部缓存对大型语言模型 (LLM) API 请求的响应执行缓存查找。 响应缓存可以降低后端 LLM API 需要满足的带宽和处理能力要求,并可以减小 API 使用者能够察觉到的延迟。

注意

注意

按照策略声明中提供的顺序设置策略的元素和子元素。 详细了解如何设置或编辑 API 管理策略

支持的模型

将策略与添加到 Azure API 管理的 LLM API 配合使用,这些 API 可通过 Azure AI 模型推理 API 或使用通过第三方推理提供程序提供服务的 OpenAI 兼容模型。

策略语句

<llm-semantic-cache-lookup
    score-threshold="score threshold to return cached response"
    embeddings-backend-id ="backend entity ID for embeddings API"
    embeddings-backend-auth ="system-assigned"             
    ignore-system-messages="true | false"      
    max-message-count="count" >
    <vary-by>"expression to partition caching"</vary-by>
</llm-semantic-cache-lookup>

属性

属性 说明 需要 默认
score-threshold 分数阈值定义传入提示必须与缓存的提示匹配以返回其存储的响应的方式。 该值范围为 0.0 到 1.0。 较低的值要求匹配的语义相似性更高。 了解详细信息 空值
embeddings-backend-id 后端 嵌入 API 调用的 ID。 空值
embeddings-backend-auth 用于嵌入 API 后端的身份验证。 是的。 必须设置为 system-assigned 空值
ignore-system-messages 布尔值。 设置为 true (建议),在评估缓存相似性之前,从聊天完成提示中删除系统消息。
max-message-count 如果指定,则为剩余的对话消息数,在此消息数之后将跳过缓存。 空值

元素

名称 说明 需要
vary-by 在运行时确定的自定义表达式,其值用于缓存分区。 如果添加了多个 vary-by 元素,则连接值以创建唯一组合。

使用情况

  • 策略节:入站
  • 策略范围:全局、产品、API、操作
  • 网关: 经典、v2、消耗、自承载

使用注意事项

  • 此策略只能在策略部分中使用一次。
  • 微调基于应用程序的值 score-threshold ,以确保使用正确的敏感度来确定何时返回查询的缓存响应。 从低值(如 0.05)开始,调整以优化缓存命中与未命中的比率。
  • 评分阈值超过 0.2 可能会导致缓存不匹配。 考虑对敏感用例使用较低的值。
  • 通过指定 vary-by 特定用户或用户组标识符来控制对缓存条目的跨用户访问权限。
  • 嵌入模型应有足够的容量和足够的上下文大小来容纳提示量和提示。
  • 请考虑添加带有提示防护的 llm-content-safety 策略,以防止出现提示攻击。
  • 建议在任何缓存查找后立即配置 速率限制 策略(或 按键速率限制 策略)。 这有助于防止后端服务在缓存不可用时过载。

示例

相应的 llm-semantic-cache-store 策略的示例

以下示例演示如何将 llm-semantic-cache-lookup 策略与策略一起使用 llm-semantic-cache-store ,以语义方式检索具有相似性分数阈值为 0.05 的类似缓存响应。 缓存值按调用方订阅 ID 进行分区。

注意

在缓存查找后添加 速率限制 策略(或 按密钥限制速率限制 策略),以帮助限制调用次数,并防止缓存不可用时后端服务过载。

<policies>
    <inbound>
        <base />
        <llm-semantic-cache-lookup
            score-threshold="0.05"
            embeddings-backend-id ="llm-backend"
            embeddings-backend-auth ="system-assigned" >
            <vary-by>@(context.Subscription.Id)</vary-by>
        </llm-semantic-cache-lookup>
        <rate-limit calls="10" renewal-period="60" />
    </inbound>
    <outbound>
        <llm-semantic-cache-store duration="60" />
        <base />
    </outbound>
</policies>

有关使用策略的详细信息,请参阅: