本页面适用于 Apigee,但不适用于 Apigee Hybrid。
查看 Apigee Edge 文档。
概览
Apigee 的 LLM token 政策对于控制费用、优化性能和确保平台稳定性至关重要,它们利用 LLM token 使用情况和用户提示 token 指标来强制执行限制并提供实时监控。
本文档介绍了如何开始使用以下 LLM token 政策:
- PromptTokenLimit 政策:通过根据用户提示消息限制 token 来保护目标免遭 token 滥用。PromptTokenLimit 政策就像是针对 AI 提示的峰值限制。它可以帮助您控制 用户提示的 token 使用率,以防止滥用并确保您的 后端服务不会过载。
- LLMTokenQuota 政策:控制 LLM 支出并根据 API 产品应用精细的 配额管理。借助 LLMTokenQuota 政策,您可以针对 LLM API 在特定 时间段内(例如每分钟、每小时、每天或每月)强制执行 token 消耗限制。这对于 管理费用和确保公平使用 AI 服务至关重要。
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>其中:
<Rate>:限制 token 的速率。<UserPromptSource>:指定从请求中获取用户提示的位置。
如需了解以下内容,请参阅 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>。有效值包括minute、hour、day或month。<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 路径;它无法 找到该路径。
另请参阅
- PromptTokenLimit 政策
- LLMTokenQuota 政策
- 使用 LLMTokenQuota 政策为流式传输服务器发送的事件强制执行 token 配额
- REST 资源:organizations.apiproducts