LLM token 政策使用入门

本页面适用于 Apigee,但不适用于 Apigee Hybrid

查看 Apigee Edge 文档。

概览

Apigee 的 LLM token 政策对于控制费用、优化性能和确保平台稳定性至关重要,它们利用 LLM token 使用情况和用户提示 token 指标来强制执行限制并提供实时监控。

本文档介绍了如何开始使用以下 LLM token 政策:

PromptTokenLimit 政策

当您想要保护后端 服务免受用户提示的 token 使用量突然飙升的影响时,请使用 PromptTokenLimit 政策。例如,您可以将每分钟的 token 数量限制为合理的数量,以防止单个用户使您的服务过载。

将此政策添加到 API 代理的请求流。

以下 PromptTokenLimit 政策示例将 token 速率限制为每分钟 1,000 个 token:

<PromptTokenLimit continueOnError="false" enabled="true" name="PTL-limitTokens-1">
  <DisplayName>Limit Prompt Tokens</DisplayName>
  <!-- The rate at which to limit tokens. Here, 1,000 per minute -->
  <Rate>1000pm</Rate>
  <!-- Specifies where to get the user's prompt from the request -->
  <UserPromptSource>{jsonPath('$.contents[-1].parts[-1].text',request.content,true)}</UserPromptSource>
</PromptTokenLimit>

其中:

如需了解以下内容,请参阅 PromptTokenLimit 政策 参考页面:

在执行以下任务时,在 Apigee 界面中配置 PromptTokenLimit 政策:

LLMTokenQuota 政策

当您想要为不同的 API 产品、开发者或应用设置和强制执行 token 消耗配额时,请使用 LLMTokenQuota 政策。例如,您可以为不同的订阅层级提供不同的 token 配额。

该政策主要有两种使用方式:

  • 计算 token:使用 CountOnly 设置跟踪 token 使用情况,而不强制执行硬性限制。这对于监控 和报告非常有用。
  • 强制执行配额:使用 EnforceOnly 设置在超出 token 配额后拒绝 API 调用。

EnforceOnly 政策添加到请求流,以检查是否 超出配额。将 CountOnly 政策添加到 响应流,以计算 LLM 回答中使用的 token。

以下 LLMTokenQuota 政策示例强制执行每小时 10,000 个 token 的 配额,设置动态来源于 API 产品:

<LLMTokenQuota name="Quota-Enforce-Only" type="rollingwindow">
  <EnforceOnly>true</EnforceOnly>
  <!-- The interval and time unit for the quota -->
  <Interval ref="verifyapikey.verify-api-key.apiproduct.developer.llmQuota.interval">1</Interval>
  <TimeUnit ref="verifyapikey.verify-api-key.apiproduct.developer.llmQuota.timeunit">hour</TimeUnit>
  <!-- The number of tokens allowed in the interval -->
  <Allow count="10000" countRef="verifyapikey.verify-api-key.apiproduct.developer.llmQuota.limit"/>
  <!-- Specifies where to get the token usage from the LLM's response -->
  <LLMTokenUsageSource>{jsonPath('$.usageMetadata.candidatesTokenCount',response.content,true)}</LLMTokenUsageSource>
  <!-- Specifies where to get the model name from the LLM's response -->
  <LLMModelSource>{jsonPath('$.model',response.content,true)}</LLMModelSource>
</LLMTokenQuota>

其中:

  • <EnforceOnly>:设置为 true 时,此 元素用于在超出 token 配额后拒绝 API 调用。这使 API 提供商能够对应用在指定时间间隔内消耗的 token 数量设置严格限制 。
  • <Interval>:此元素指定计算 LLM 回答中的 token 数量的时间间隔 。它与 <TimeUnit><Allow> 结合使用,用于定义 token 配额。
  • <TimeUnit>:此元素定义 的时间单位 <Interval>。有效值包括 minutehourdaymonth
  • <Allow>:此元素定义 <Interval> 中允许的 token 数量。
  • <LLMTokenUsageSource>:此元素提供 LLM 回答中 token 使用情况数据的来源 。它应是一个消息模板 ,提供 token 使用情况的单个值。
  • <LLMModelSource>:此元素提供 LLM 回答或请求中模型的来源。它应是一个消息模板 ,提供模型名称的单个值。

如需了解以下内容,请参阅 LLMTokenQuota 政策参考页面:

按照以下部分中的说明,在 Apigee 界面中配置 LLMTokenQuota 政策:

限制

LLM token 政策具有以下限制:

  • LLMTokenQuota 政策限制
    • 该政策目前仅支持基于文本的 token。
    • 最后一个允许的请求可能会消耗比剩余配额更多的 token。
    • 该政策需要响应载荷中消耗的 LLM token 的确切 JSON 路径,并且无法自动检测到该路径。
  • PromptTokenLimit 政策限制
    • 该政策目前仅支持基于文本的 token。
    • 该政策使用标准库来计算 token,这可能 与某些 LLM 提供商计算 token 的方式不同。
    • 该政策需要提示文本的确切 JSON 路径;它无法 找到该路径。

另请参阅