令牌管理
想象一下,如果你的 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 正在使用多少个令牌。 这个强大的功能可以帮助你优化资源,并就缩放和资源管理做出明智的决定。