本頁內容適用於 Apigee,但不適用於 Apigee Hybrid。
查看
Apigee Edge 說明文件。
總覽
Apigee 的 LLM 權杖政策對於控管成本、提升效能及確保平台穩定性至關重要,可運用 LLM 權杖用量和使用者提示權杖指標強制執行限制,並提供即時監控功能。
本文說明如何開始使用下列 LLM 權杖政策:
- PromptTokenLimit 政策:根據使用者提示詞訊息的詞元數量限制詞元,防止目標遭到詞元濫用。PromptTokenLimit 政策就像是 AI 提示的尖峰抑制器,這有助於控管使用者提示的權杖用量,避免濫用行為,並確保後端服務不會過載。
- LLMTokenQuota 政策:控管 LLM 支出,並根據 API 產品套用精細的配額管理機制。LLMTokenQuota 政策可讓您在特定時間範圍內 (例如每分鐘、每小時、每天或每月),強制執行 LLM API 的權杖用量限制。這對於管理費用和確保 AI 服務的公平使用至關重要。
PromptTokenLimit 政策
如要避免使用者提示詞導致後端服務的權杖用量突然暴增,請使用 PromptTokenLimit 政策。舉例來說,您可以將每分鐘的權杖數量限制在合理範圍內,避免單一使用者耗用過多服務資源。
將這項政策新增至 API Proxy 的要求流程。
下列 PromptTokenLimit 政策範例將權杖率限制為每分鐘 1,000 個權杖:
<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>:限制權杖的速率。<UserPromptSource>:指定從要求中取得使用者提示的位置。
請參閱 PromptTokenLimit 政策參考資料頁面,瞭解:
執行下列工作時,請在 Apigee 使用者介面中設定 PromptTokenLimit 政策:
LLMTokenQuota 政策
如要為不同的 API 產品、開發人員或應用程式設定及強制執行權杖用量配額,請使用 LLMTokenQuota 政策。舉例來說,您可以為不同訂閱層級提供不同的權杖配額。
這項政策主要有兩種用途:
-
計算權杖:使用
CountOnly設定追蹤權杖用量,但不強制執行嚴格限制。這項功能有助於監控及製作報表。 -
強制執行配額:使用
EnforceOnly設定,在超過權杖配額後拒絕 API 呼叫。
在要求流程中新增 EnforceOnly 政策,檢查是否超出配額。在回應流程中新增 CountOnly 政策,計算 LLM 回覆中使用的權杖。
以下 LLMTokenQuota 政策範例會強制執行每小時 10,000 個權杖的配額,並從 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時,這個元素會用於在超過權杖配額後拒絕 API 呼叫。這項功能可讓 API 提供者嚴格限制應用程式在特定時間間隔內使用的權杖數量。<Interval>:這個元素指定計算 LLM 回覆詞元數量的時間間隔。與<TimeUnit>和<Allow>搭配使用,可定義權杖配額。<TimeUnit>:這個元素會定義<Interval>的時間單位。有效值包括minute、hour、day或month。<Allow>:這個元素定義<Interval>中允許的權杖數量。<LLMTokenUsageSource>:這個元素提供 LLM 回覆的權杖用量來源。這應該是訊息範本,提供權杖用量的單一值。<LLMModelSource>:這個元素提供 LLM 回覆或要求的模型來源。這應該是訊息範本,提供單一值做為模型名稱。
如要瞭解下列事項,請參閱 LLMTokenQuota 政策參考資料頁面:
在 Apigee UI 中設定 LLMTokenQuota 政策,方法如下列各節所述:
限制
LLM 權杖政策有下列限制:
- LLMTokenQuota 政策限制
- 這項政策目前僅支援以文字為基礎的權杖。
- 最後一次允許的要求可能消耗的權杖數量會超過剩餘配額。
- 這項政策要求提供回應酬載中消耗的 LLM 權杖確切 JSON 路徑,且無法自動偵測。
- 目前每個 SSE 事件都需要中繼資料。
- PromptTokenLimit 政策限制
- 這項政策目前僅支援以文字為基礎的權杖。
- 這項政策會使用標準程式庫計算權杖,這可能與部分 LLM 供應商的權杖計算方式不同。
- 這項政策需要提示文字的確切 JSON 路徑,無法動態尋找。