限制大型語言模型 API 令牌使用方式

適用於:開發人員 | 基本 | 基本 v2 | 標準 | 標準 v2 | 進階

llm-token-limit 原則會藉由將 LLM 令牌的耗用量限制為每分鐘指定數目,以防止每個索引鍵的 API 使用量尖峰。 超出權杖使用量時,呼叫端會收到 429 Too Many Requests 回應狀態碼。

藉由依賴從 LLM 端點傳回的令牌使用計量,原則可以即時準確地監視並強制執行限制。 此原則也會藉由 API 管理 預先計算提示令牌,如果已超過限制,將對 LLM 後端不必要的要求降到最低。

注意

此原則目前為預覽狀態。

注意

請依照原則陳述式中提供的順序,來設定原則的元素和子元素。 深入了解如何設定或編輯 APIM 原則

支援的模型

將原則與新增至 Azure API 管理 的 LLM API 搭配使用,這些 API 可透過 Azure AI 模型推斷 API 取得。

原則陳述式

<llm-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 用於權杖限制原則的金鑰。 針對每個索引鍵值,會針對原則設定的所有範圍使用單一計數器。 允許使用原則運算式。 Yes N/A
tokens-per-minute 提示和完成每分鐘所取用的權杖數目上限。 Yes N/A
estimate-prompt-tokens 布林值,用以判斷是否要估計提示所需權杖數目:
- true:根據 API 中的提示結構描述估計權杖數目;可能降低效能。
- false:不要估計提示權杖。

當設定為 false時,會使用模型回應中的實際令牌使用量來計算每個 counter-key 的剩餘令牌。 這可能會導致提示傳送至超過令牌限制的模型。 在這種情況下,會在響應中偵測到此情況,而且原則會封鎖所有成功的要求,直到令牌限制再次釋出為止。
Yes N/A
retry-after-header-name 自訂回應標頭的名稱,其值是超過指定 tokens-per-minute 之後,以秒為單位的建議重試間隔。 不允許使用原則運算式。 No Retry-After
retry-after-variable-name 超過指定 tokens-per-minute 之後,以秒為單位儲存建議重試間隔的變數名稱。 不允許使用原則運算式。 No N/A
remaining-tokens-header-name 回應標頭的名稱,每個原則執行之後的值都是針對時間間隔允許的剩餘權杖數目。 不允許使用原則運算式。 No N/A
remaining-tokens-variable-name 變數的名稱,每個原則執行之後的變數都是針對時間間隔允許的剩餘權杖數目。 不允許使用原則運算式。 No N/A
tokens-consumed-header-name 回應標頭的名稱,其值為提示和完成所取用的權杖數目。 只有在從後端收到回應之後,才會將標頭新增至回應。 不允許使用原則運算式。 No N/A
tokens-consumed-variable-name 變數的名稱,如果 estimate-prompt-tokenstrue,該變數會在管線的 backend 區段中初始化為提示中的預估權杖數目,否則為零。 變數會在收到 outbound 區段中的回應時,以回報的計數進行更新。 No N/A

使用方式

使用注意事項

  • 每個原則定義可以使用此原則多次。
  • 當 設定為 falseestimate-prompt-tokens,會使用 LLM API 回應使用量區段中的值來判斷令牌使用方式。
  • 某些 LLM 端點支援回應串流。 當 API 要求中 stream 設定為 true 以啟用串流時,不論 estimate-prompt-tokens 屬性的值為何,系統一律會估計提示權杖。
  • APIM 會針對您在原則中指定的每個 counter-key 值使用單一計數器。 計數器會在使用該索引鍵值設定原則的所有範圍內更新。。 如果您想要在不同的範圍設定不同的計數器 (例如特定 API 或產品),請在不同的範圍指定不同的索引鍵值。 例如,將識別範圍的字串附加至運算式的值。

範例

在下列範例中,權杖限制為每分鐘 5000 個,並由呼叫端 IP 位址當作索引鍵。 此原則不會估計提示所需的權杖數目。 在每個原則執行之後,時間週期內該呼叫者 IP 位址允許的其餘權杖會儲存在變數 remainingTokens 中。

<policies>
    <inbound>
        <base />
        <llm-token-limit
            counter-key="@(context.Request.IpAddress)"
            tokens-per-minute="5000" estimate-prompt-tokens="false" remaining-tokens-variable-name="remainingTokens" />
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>

如需使用原則的詳細資訊,請參閱: