適用対象: Developer | Basic | Basic v2 | Standard | Standard v2 | Premium | Premium v2
azure-openai-token-limit
ポリシーでは、言語モデル トークンの使用量を、指定したレート (1 分あたりの数)、指定した期間のクォータ、またはその両方に制限することで、キーごとに Azure OpenAI Service API の使用量が急増するのを防ぎます。 指定したトークン レート制限を超えると、呼び出し元は 429 Too Many Requests
応答状態コードを受け取ります。 指定したクォータを超えると、呼び出し元は 403 Forbidden
応答状態コードを受け取ります。
OpenAI エンドポイントから返されるトークン使用状況メトリックを使用することで、ポリシーはリアルタイムで制限を正確に監視して適用できます。 このポリシーにより、API Management によるプロンプト トークンの事前計算も可能になり、制限を既に超えている場合に OpenAI バックエンドへの不要な要求が最小限に抑えられます。
注
ポリシーの要素と子要素を、ポリシー ステートメントで指定された順序で設定します。 API Management ポリシーを設定または編集する方法について説明します。
サポートされている Azure OpenAI Service モデル
このポリシーは、次の種類の Azure OpenAI Service から API Management に追加された API で使用されます。
[API の種類] | サポートされているモデル |
---|---|
チャット入力候補 | gpt-3.5 gpt-4 gpt-4o gpt-4o-mini o1 o3 |
埋め込み | text-embedding-3-large text-embedding-3-small text-embedding-ada-002 |
応答 (プレビュー) |
gpt-4o (バージョン: 2024-11-20 、 2024-08-06 、 2024-05-13 )gpt-4o-mini (バージョン: 2024-07-18 )gpt-4.1 (バージョン: 2025-04-14 )gpt-4.1-nano (バージョン: 2025-04-14 )gpt-4.1-mini (バージョン: 2025-04-14 )gpt-image-1 (バージョン: 2025-04-15 )o3 (バージョン: 2025-04-16 )o4-mini (バージョン: '2025-04-16) |
注
従来の完了 API は、従来のモデル バージョンでのみ使用でき、サポートは制限されています。
モデルとその機能の最新の情報については、 Azure OpenAI サービス モデルに関するページを参照してください。
ポリシー ステートメント
<azure-openai-token-limit counter-key="key value"
tokens-per-minute="number"
token-quota="number"
token-quota-period="Hourly | Daily | Weekly | Monthly | Yearly"
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-quota-tokens-header-name="header name"
remaining-quota-tokens-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 | トークン制限ポリシーに使用するキー。 キー値ごとに、ポリシーが構成されているすべてのスコープに対して 1 つのカウンターが使用されます。 ポリシー式を使用できます。 | はい | 該当なし |
tokens-per-minute | 1 分あたりのプロンプトと入力候補によって消費されるトークンの最大数。 | レート制限 (tokens-per-minute )、クォータ (token-quota に対するtoken-quota-period )、またはその両方を指定する必要があります。 |
該当なし |
token-quota |
token-quota-period で指定された時間間隔中に許可されるトークンの最大数。 ポリシー式は使用できません。 |
レート制限 (tokens-per-minute )、クォータ (token-quota に対するtoken-quota-period )、またはその両方を指定する必要があります。 |
該当なし |
token-quota-period |
token-quota がリセットされた後の固定ウィンドウの長さ。 値は、 Hourly 、Daily 、 Weekly 、 Monthly 、 Yearly のいずれかである必要があります。 クォータ期間の開始時刻は、期間に使用された単位 (時間、日など) に切り捨てられた UTC タイムスタンプを使用して計算されます。 |
レート制限 (tokens-per-minute )、クォータ (token-quota に対するtoken-quota-period )、またはその両方を指定する必要があります。 |
該当なし |
estimate-prompt-tokens | プロンプトに必要なトークンの数を見積もるかどうかを決定するブール値。 - true : API のプロンプト スキーマに基づいてトークンの数を見積もります。パフォーマンスが低下する可能性があります。 - false : プロンプト トークンを見積もりません。 false に設定すると、モデルの応答からの実際のトークン使用量を使って、counter-key ごとの残りのトークンが計算されます。 これにより、トークンの制限を超えるプロンプトがモデルに送信される可能性があります。 そのような場合、これは応答で検出され、トークンの制限が再び解放されるまで、すべての後続の要求はポリシーによってブロックされます。 |
はい | 該当なし |
retry-after-header-name | 指定した tokens-per-minute または token-quota を超えた後の推奨される再試行間隔を秒単位で指定したカスタム応答ヘッダーの名前。 ポリシー式は使用できません。 |
いいえ | Retry-After |
retry-after-variable-name | 指定した tokens-per-minute または token-quota を超えた後の推奨される再試行間隔を秒単位で格納する変数の名前。 ポリシー式は使用できません。 |
いいえ | 該当なし |
remaining-quota-tokens-header-name | 各ポリシーの実行後の値が、token-quota で許可されるtoken-quota-period に対応する残りのトークンの数である応答ヘッダーの名前。 ポリシー式は使用できません。 |
いいえ | 該当なし |
remaining-quota-tokens-variable-name | 各ポリシーの実行後に、token-quota で許可されるtoken-quota-period に対応する残りのトークンの数を格納する変数の名前。 ポリシー式は使用できません。 |
いいえ | 該当なし |
remaining-tokens-header-name | 各ポリシーの実行後の値が、時間間隔で許可される tokens-per-minute に対応する残りのトークンの数である応答ヘッダーの名前。 ポリシー式は使用できません。 |
いいえ | 該当なし |
remaining-tokens-variable-name | 各ポリシーの実行後に、時間間隔で許可される tokens-per-minute に対応する残りのトークンの数を格納する変数の名前。 ポリシー式は使用できません。 |
いいえ | 該当なし |
tokens-consumed-header-name | 値がプロンプトと入力候補の両方で使用されるトークンの数である応答ヘッダーの名前。 ヘッダーは、バックエンドから応答を受信した後にのみ応答に追加されます。 ポリシー式は使用できません。 | いいえ | 該当なし |
tokens-consumed-variable-name |
backend が estimate-prompt-tokens の場合はパイプラインの true セクションにおけるプロンプトのトークンの見積もり数 (それ以外の場合は 0) に初期化された変数の名前。 この変数は、outbound セクションで応答を受信すると、報告されたカウントで更新されます。 |
いいえ | 該当なし |
使用法
- ポリシー セクション: inbound
- ポリシー スコープ: グローバル、ワークスペース、製品、API、操作
- ゲートウェイ: クラシック、v2、セルフホステッド、ワークスペース
使用上の注意
- このポリシーは、ポリシー定義ごとに複数回使用できます。
- このポリシーは、ポータルを使用して Azure OpenAI Service から API を追加するときに、必要に応じて構成できます。
-
estimate-prompt-tokens
がfalse
に設定されているときに使用可能な場合、Azure OpenAI Service API からの応答の使用状況セクションの値を使用してトークンの使用状況を判別します。 - 特定の Azure OpenAI エンドポイントでは、応答のストリーミングがサポートされています。 API 要求で
stream
がtrue
に設定されてストリーミングを有効になっている場合は、estimate-prompt-tokens
属性の値に関係なく、プロンプト トークンが常に推定されます。 応答がストリーミングされる場合、完了トークンも推定されます。 - イメージ入力を受け入れるモデルの場合、通常、イメージ トークンはバックエンド言語モデルによってカウントされ、制限とクォータの計算に含まれます。 ただし、ストリーミングが使用されるか、
estimate-prompt-tokens
がtrue
に設定されている場合、ポリシーは現在、各イメージを 1200 トークンの最大カウントとしてオーバーカウントします。 - API Management では、ポリシーで指定した
counter-key
値ごとに 1 つのカウンターが使用されます。 このカウンターは、ポリシーがそのキー値で構成されているすべてのスコープで更新されます。 異なるスコープ (特定の API や製品など) で個別のカウンターを構成する場合は、異なるスコープで異なるキー値を指定します。 たとえば、式の値にスコープを識別する文字列を追加します。 - このポリシーは、複数リージョンデプロイのワークスペース ゲートウェイやリージョン ゲートウェイなど、適用される各ゲートウェイでトークンの使用状況を個別に追跡します。 インスタンス全体のトークン数は集計されません。
例示
トークン レートの制限
次の例では、1 分あたり 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>
トークン クォータ
次の例では、10000 のトークン クォータがサブスクリプション ID によってキー設定され、毎月リセットされます。 各ポリシーの実行後、期間内にそのサブスクリプション ID に対して許可される残りのトークンの数は、変数 remainingQuotaTokens
に格納されます。
<policies>
<inbound>
<base />
<azure-openai-token-limit
counter-key="@(context.Subscription.Id)"
token-quota="100000" token-quota-period="Monthly" remaining-quota-tokens-variable-name="remainingQuotaTokens" />
</inbound>
<outbound>
<base />
</outbound>
</policies>
関連ポリシー
関連するコンテンツ
ポリシーに対する処理の詳細については、次のトピックを参照してください。