次の方法で共有


Azure OpenAI API トークンの使用を制限する

適用対象: Developer | Basic | Basic v2 | Standard | Standard v2 | Premium | Premium v2

azure-openai-token-limit ポリシーは、言語モデル トークンの使用量を 1 分あたりの指定された数に制限することで、キーあたりの Azure OpenAI Service API 使用量の急増を防ぎます。 このトークン使用量を超えると、呼び出し元は 429 Too Many Requests 応答状態コードを受信します。

OpenAI エンドポイントから返されるトークン使用状況メトリックを使用することで、ポリシーはリアルタイムで制限を正確に監視して適用できます。 このポリシーにより、API Management によるプロンプト トークンの事前計算も可能になり、制限を既に超えている場合に OpenAI バックエンドへの不要な要求が最小限に抑えられます。

Note

ポリシーの要素と子要素を、ポリシー ステートメントで指定された順序で設定します。 API Management ポリシーを設定または編集する方法について説明します。

サポートされている Azure OpenAI Service モデル

このポリシーは、次の種類の Azure OpenAI Service から API Management に追加された API で使用されます。

[API の種類] サポートされているモデル
チャット入力候補 gpt-3.5

gpt-4
完了 gpt-3.5-turbo-instruct
埋め込み text-embedding-3-large

text-embedding-3-small

text-embedding-ada-002

詳細については、「Azure OpenAI Service モデル」を参照してください。

ポリシー ステートメント

<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" />

属性

属性 説明 必要 Default
counter-key トークン制限ポリシーに使用するキー。 キー値ごとに、ポリシーが構成されているすべてのスコープに対して 1 つのカウンターが使用されます。 ポリシー式を使用できます。 はい 該当なし
tokens-per-minute 1 分あたりのプロンプトと入力候補によって消費されるトークンの最大数。 はい 該当なし
estimate-prompt-tokens プロンプトに必要なトークンの数を見積もるかどうかを決定するブール値。
- true: API のプロンプト スキーマに基づいてトークンの数を見積もります。パフォーマンスが低下する可能性があります。
- false: プロンプト トークンを見積もりません。

false に設定すると、モデルの応答からの実際のトークン使用量を使って、counter-key ごとの残りのトークンが計算されます。 これにより、トークンの制限を超えるプロンプトがモデルに送信される可能性があります。 そのような場合、これは応答で検出され、トークンの制限が再び解放されるまで、すべての後続の要求はポリシーによってブロックされます。
はい 該当なし
retry-after-header-name 値が指定された tokens-per-minute を超えた後の推奨される再試行間隔 (秒単位) であるカスタム応答ヘッダーの名前。 ポリシー式は使用できません。 いいえ Retry-After
retry-after-variable-name 指定された tokens-per-minute を超えた後の推奨される再試行間隔 (秒単位) を保存する変数の名前。 ポリシー式は使用できません。 いいえ N/A
remaining-tokens-header-name 各ポリシーの実行後の値が、期間に対して許可されている残りのトークンの数である応答ヘッダーの名前。 ポリシー式は使用できません。 いいえ N/A
remaining-tokens-variable-name 各ポリシーの実行後に期間に対して許可されている残りのトークンの数を保存する変数の名前。 ポリシー式は使用できません。 いいえ N/A
tokens-consumed-header-name 値がプロンプトと入力候補の両方で使用されるトークンの数である応答ヘッダーの名前。 ヘッダーは、バックエンドから応答を受信した後にのみ応答に追加されます。 ポリシー式は使用できません。 いいえ N/A
tokens-consumed-variable-name estimate-prompt-tokenstrue の場合はパイプラインの backend セクションにおけるプロンプトのトークンの見積もり数 (それ以外の場合は 0) に初期化された変数の名前。 この変数は、outbound セクションで応答を受信すると、報告されたカウントで更新されます。 いいえ 該当なし

使用法

使用上の注意

  • このポリシーは、ポリシー定義ごとに複数回使用できます。
  • このポリシーは、ポータルを使用して Azure OpenAI Service から API を追加するときに、必要に応じて構成できます。
  • estimate-prompt-tokensfalse に設定されているときに使用可能な場合、Azure OpenAI Service API からの応答の使用状況セクションの値を使用してトークンの使用状況を判別します。
  • 特定の Azure OpenAI エンドポイントでは、応答のストリーミングがサポートされています。 API 要求で streamtrue に設定されてストリーミングを有効になっている場合は、estimate-prompt-tokens 属性の値に関係なく、プロンプト トークンが常に推定されます。 応答がストリーミングされる場合、完了トークンも推定されます。
  • API Management では、ポリシーで指定した counter-key 値ごとに 1 つのカウンターが使用されます。 このカウンターは、ポリシーがそのキー値で構成されているすべてのスコープで更新されます。 異なるスコープ (特定の API や製品など) で個別のカウンターを構成する場合は、異なるスコープで異なるキー値を指定します。 たとえば、式の値にスコープを識別する文字列を追加します。

次の例では、1 分あたり 5,000 のトークン制限のキーに呼び出し元 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>

ポリシーに対する処理の詳細については、次のトピックを参照してください。