令牌管理

已完成

想象一下,如果你的 API 流量出现突发高峰,可能是因为销售或其他原因。 为了避免过度消耗和可能的服务中断,你需要弄清楚如何管理。

Azure OpenAI 令牌限制策略

如本单元开头提到的,你需要对突发高峰进行处理。 好消息是 Azure API Management 有一项称为令牌限制策略的功能。

此策略允许客户设置令牌消耗限制,以每分钟令牌数 (TPM) 表示,并确保公平有效地利用 OpenAI 资源。

关键功能

此策略的重要特性包括:

  • 精确控制:客户可以对各种计数器密钥(例如订阅密钥或 IP 地址)分配基于令牌的限制,根据特定用例定制实施。
  • 实时监视:该策略依赖于 OpenAI 终结点返回的令牌使用指标,可以实现实时准确监视和限制实施。
  • 令牌的预计算:它允许在 Azure API Management 端预先计算提示令牌,从而最大程度地减少对 OpenAI 后端的不必要请求(如果已超出限制)。
  • 增强自定义:客户可以在策略中应用标头和变量,例如已消耗的令牌和剩余令牌,以实现更好的控制和自定义。

如你所见,有很多功能可以帮助你管理成本,而且由于实时监视,你可以确保你没有超出限制。

如何使用

若要使用此策略,你需要将其添加到 API 操作的入站处理管道。 以下是执行该操作的步骤:

<azure-openai-token-limit counter-key="key value"
        tokens-per-minute="number"
        estimate-prompt-tokens="true | false"    
        retry-after-header-name="custom header name, replaces default 'Retry-After'" 
        retry-after-variable-name="policy expression variable name"
        remaining-tokens-header-name="header name"  
        remaining-tokens-variable-name="policy expression variable name"
        tokens-consumed-header-name="header name"
        tokens-consumed-variable-name="policy expression variable name" />

你可以设置很多属性,但最重要的属性是:

  • counter-key:用于对令牌进行计数的密钥。 此值可以是订阅密钥或 IP 地址。
  • tokens-per-minute:每分钟允许的令牌数。
  • estimate-prompt-tokens:是否要估计提示令牌。

Azure OpenAI 发出令牌指标策略

此策略解决了在使用 Azure OpenAI 的应用程序中对令牌使用情况进行详细监视和分析的需求。

通过提供全面的指标,它可帮助组织:

  • 优化资源分配:了解并有效地管理令牌消耗。
  • 改进决策:深入了解使用模式,以做出有关缩放和资源管理的明智决策。
  • 增强性能监视:跟踪和分析令牌使用情况,以主动识别和解决潜在问题

如何使用发出令牌指标策略

若要使用此策略,你需要将其添加到 API 操作的入站处理管道。 下面是使用 XML 对其进行编码的方式:

<azure-openai-emit-token-metric
        namespace="metric namespace" >      
        <dimension name="dimension name" value="dimension value" />
        ...additional dimensions...
</azure-openai-emit-token-metric>

下面是一个使用多个维度的示例:

<policies>
  <inbound>
      <azure-openai-emit-token-metric
            namespace="AzureOpenAI">   
            <dimension name="User ID" />
            <dimension name="Client IP" value="@(context.Request.IpAddress)" />
            <dimension name="API ID" />
        </azure-openai-emit-token-metric> 
  </inbound>
  <outbound>
  </outbound>
</policies>

在上面的示例中:

  • 此策略被配置为向 AzureOpenAI 命名空间发送令牌指标,其中包含有关用户 ID、客户端 IP 和 API ID 的维度。
  • 客户端 IP 维度的值被设置为发出请求的客户端的 IP 地址。

想象一下,现在你可以在仪表板中显示这些指标,并且可以实时监视 API 的使用情况。 例如,你可以看到特定用户正在使用多少个令牌,或者特定 API 正在使用多少个令牌。 这个强大的功能可以帮助你优化资源,并就缩放和资源管理做出明智的决定。

知识检查

1.

令牌限制策略如何帮助管理 API 使用情况?

2.

Azure API Management 中用于令牌指标策略的好维度有哪些?为什么?