共用方式為


限制 Azure OpenAI API 權杖使用量

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

azure-openai-token-limit 原則可藉由將語言模型權杖的取用限制為每分鐘的指定數目,以防止每個金鑰的 Azure OpenAI 服務 API 使用量高峰。 超出權杖使用量時,呼叫端會收到 429 Too Many Requests 回應狀態碼。

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

注意

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

支援的 Azure OpenAI 服務模型

此原則會與從 Azure OpenAI 服務新增至 API 管理的 API 搭配使用,API 類型如下:

API 類型 支援的模型
聊天完成 gpt-3.5

gpt-4
Completion gpt-3.5-turbo-instruct
Embeddings text-embedding-3-large

text-embedding-3-small

text-embedding-ada-002

如需詳細資訊,請參閱 Azure OpenAI 服務模型

原則陳述式

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

使用方式

使用量注意事項

  • 每個原則定義可以使用此原則多次。
  • 使用入口網站從 Azure OpenAI 服務新增 API 時,可以選擇性地設定此原則。
  • 某些 Azure OpenAI 端點支持回應串流。 當 stream 設定 true 為 在 API 要求中啟用串流時,不論 屬性的值 estimate-prompt-tokens 為何,系統一律會估計提示令牌。
  • API 管理 會針對您在原則中指定的每個counter-key值使用單一計數器。 計數器會在原則設定為該索引鍵值的所有範圍更新。 如果您想要在不同的範圍設定不同的計數器(例如特定 API 或產品),請在不同的範圍指定不同的索引鍵值。 例如,將識別範圍的字串附加至表達式的值。

範例

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

<policies>
    <inbound>
        <base />
        <azure-openai-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>

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