Partager via


Limiter l’utilisation des jetons d’API Azure OpenAI

S’applique à : Développeur | Essentiel | Essentiel v2 | Standard | Standard v2 | Premium | Premium v2

La azure-openai-token-limit stratégie empêche Azure OpenAI dans les pics d’utilisation de l’API Foundry Models par clé en limitant la consommation de jetons de modèle de langage à un taux spécifié (nombre par minute), un quota sur une période spécifiée, ou les deux. Lorsqu’une limite de débit de jeton spécifiée est dépassée, l’appelant reçoit un code d’état 429 Too Many Requests de réponse. Lorsqu’un quota spécifié est dépassé, l’appelant reçoit un code d’état 403 Forbidden de réponse.

En s’appuyant sur les indicateurs d’utilisation des tokens retournés par le point de terminaison Azure OpenAI, la politique surveille et applique des limites basées sur la consommation réelle de tokens. La politique permet également d’estimer à l’avance les jetons de prompt par API Management, minimisant ainsi les requêtes inutiles vers le backend Azure OpenAI si la limite est déjà dépassée. Cependant, comme le nombre réel de tokens consommés dépend à la fois de la taille de la demande et de la taille de la complétion (qui varie selon la requête), la politique ne peut pas prédire à l’avance la consommation totale de tokens. Cette conception pourrait permettre de dépasser temporairement les limites de jetons lorsque plusieurs requêtes sont traitées simultanément.

Remarque

Définissez les éléments enfants et de stratégie dans l’ordre fourni dans l’instruction de stratégie. En savoir plus sur comment définir ou modifier des stratégies du service Gestion des API.

Prise en charge d’Azure OpenAI dans les modèles Azure AI Foundry

La stratégie est utilisée avec les API ajoutées à Gestion des API à partir d’Azure OpenAI dans les modèles AI Foundry des types suivants :

Type de l’API Modèles pris en charge
Saisie semi-automatique de la conversation gpt-3.5

gpt-4

gpt-4o

gpt-4o-mini

o1

o3
Incorporations text-embedding-3-large

text-embedding-3-small

text-embedding-ada-002
Réponses (préversion) gpt-4o (Versions : 2024-11-20, 2024-08-06, 2024-05-13)

gpt-4o-mini (Version : 2024-07-18)

gpt-4.1 (Version : 2025-04-14)

gpt-4.1-nano (Version : 2025-04-14)

gpt-4.1-mini (Version : 2025-04-14)

gpt-image-1 (Version : 2025-04-15)

o3 (Version : 2025-04-16)

o4-mini (Version : '2025-04-16)

Remarque

Les API de saisie semi-automatique traditionnelles sont disponibles uniquement avec les versions de modèle héritées et la prise en charge est limitée.

Pour plus d’informations sur les modèles et leurs fonctionnalités, consultez Azure OpenAI dans Foundry Models.

Instruction de la stratégie

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

Attributs

Attribut Descriptif Obligatoire Par défaut
contre-clé Clé à utiliser pour la stratégie de limite de jetons. Pour chaque valeur de clé, un compteur unique est utilisé pour toutes les étendues auxquelles la stratégie est configurée. Les expressions de stratégie sont autorisées. Oui S/O
jetons par minute Nombre maximal de jetons consommés par invite et achèvement par minute. Une limite de débit (tokens-per-minute), un quota (token-quota sur un token-quota-period), ou les deux doivent être spécifiés. S/O
token-quota Nombre maximal de jetons autorisés pendant l’intervalle de temps spécifié dans le token-quota-period. Les expressions de stratégie ne sont pas autorisées. Une limite de débit (tokens-per-minute), un quota (token-quota sur un token-quota-period), ou les deux doivent être spécifiés. S/O
token-quota-period Longueur de la fenêtre fixe après laquelle la token-quota réinitialisation est terminée. La valeur doit être l’une des suivantes : Hourly,Daily, Weekly, Monthly, Yearly. L’heure de début d’une période de quota est calculée à l’aide de l’horodatage UTC tronqué à l’unité (heure, jour, etc.) utilisée pour la période. Une limite de débit (tokens-per-minute), un quota (token-quota sur un token-quota-period), ou les deux doivent être spécifiés. S/O
estimate-prompt-tokens Valeur booléenne qui détermine s’il faut estimer le nombre de jetons requis pour une invite :
- true: estimer le nombre de jetons en fonction du schéma d’invite dans l’API ; peut réduire les performances.
- false: ne pas estimer les jetons d’invite.

Lorsqu’il est défini sur false, les jetons restants par counter-key sont calculés à l’aide de l’utilisation réelle des jetons à partir de la réponse du modèle. Cela peut entraîner l’envoi d’invites au modèle qui dépasse la limite de jetons. Dans ce cas, cela sera détecté dans la réponse, et toutes les requêtes suivantes seront bloquées par la politique jusqu’à ce que la limite de jeton soit réinitialisée.
Oui S/O
retry-after-header-name Nom d’un en-tête de réponse personnalisé dont la valeur est l’intervalle de nouvelle tentative recommandé en secondes après le dépassement spécifié tokens-per-minute ou token-quota dépassé. Les expressions de stratégie ne sont pas autorisées. Non Retry-After
retry-after-variable-name Nom d’une variable qui stocke l’intervalle de nouvelle tentative recommandé en secondes après le dépassement spécifié tokens-per-minute ou token-quota dépassé. Les expressions de stratégie ne sont pas autorisées. Non S/O
restant-quota-tokens-header-name Le nom d’un en-tête de réponse dont la valeur après chaque exécution de stratégie est le nombre estimé de jetons restants correspondant à token-quota autorisés pour le token-quota-period. Les expressions de stratégie ne sont pas autorisées. Non S/O
restant-quota-tokens-variable-name Nom d’une variable qui après chaque exécution de stratégie stocke le nombre estimé de jetons restants correspondant à token-quota autorisés pour le token-quota-period. Les expressions de stratégie ne sont pas autorisées. Non S/O
remaining-tokens-header-name Nom d’un en-tête de réponse dont la valeur après chaque exécution de stratégie est le nombre de jetons restants correspondant à tokens-per-minute l’intervalle de temps autorisé. Les expressions de stratégie ne sont pas autorisées. Non S/O
restant-tokens-variable-name Nom d’une variable qui après chaque exécution de stratégie stocke le nombre de jetons restants correspondant à tokens-per-minute l’intervalle de temps autorisé. Les expressions de stratégie ne sont pas autorisées. Non S/O
tokens-consume-header-name Nom d’un en-tête de réponse dont la valeur est le nombre de jetons consommés par l’invite et la saisie semi-automatique. L’en-tête est ajouté à la réponse uniquement une fois la réponse reçue du serveur principal. Les expressions de stratégie ne sont pas autorisées. Non S/O
tokens-consume-variable-name Nom d’une variable initialisée au nombre estimé de jetons dans l’invite dans backend section du pipeline si estimate-prompt-tokens est true et zéro sinon. La variable est mise à jour avec le nombre signalé lors de la réception de la réponse dans outbound section. Non S/O

Utilisation

Notes d’utilisation

  • Cette politique peut être utilisée plusieurs fois par définition de la police
  • Cette politique peut être configurée en option lors de l’ajout d’une API Azure OpenAI via le portail.
  • Lorsqu’il est estimate-prompt-tokensdisponible, false les valeurs de la section utilisation de la réponse de l’API Azure OpenAI sont utilisées pour déterminer l’utilisation des jetons.
  • Lorsque plusieurs requêtes sont envoyées simultanément ou avec de légers délais, la politique peut permettre une consommation de jetons dépassant la limite configurée. Cela arrive parce que la politique ne peut pas déterminer le nombre exact de tokens consommés tant que les réponses ne sont pas reçues du backend. Une fois les réponses traitées et les limites des tokens dépassées, les requêtes suivantes sont bloquées jusqu’à ce que la limite soit réinitialisée.
  • Certains points de terminaison Azure OpenAI prennent en charge la diffusion en continu des réponses. Lorsque stream est défini sur true dans la requête d’API pour activer la diffusion en continu, les jetons d’invite sont toujours estimés, quelle que soit la valeur de l’attribut estimate-prompt-tokens. Les jetons d’achèvement sont également estimés lorsque les réponses sont diffusées en continu.
  • La valeur ou remaining-quota-tokens-variable-name est une estimation à des fins d’information, mais peut être plus grande que prévu en fonction de remaining-quota-tokens-header-name la consommation réelle de jetons. La valeur est plus précise à mesure que le quota est approché.
  • Pour les modèles qui acceptent l’entrée d’image, les jetons d’image sont généralement comptabilisés par le modèle de langage principal et inclus dans les calculs de limite et de quota. Toutefois, lorsque la diffusion en continu est utilisée ou estimate-prompt-tokens définie truesur , la stratégie compte actuellement sur chaque image comme un nombre maximal de 1200 jetons.
  • Gestion des API utilise un seul compteur pour chaque valeur de counter-key que vous spécifiez dans la stratégie. Le compteur est mis à jour pour toutes les étendues pour lesquelles la stratégie est configurée avec cette valeur de clé. Si vous souhaitez configurer des compteurs distincts pour différentes étendues (par exemple une API ou un produit spécifique), spécifiez des valeurs de clé différentes dans les différentes étendues. Par exemple, ajoutez une chaîne qui identifie l’étendue avec la valeur d’une expression.
  • Les niveaux v2 utilisent un algorithme de seau de jetons pour la limitation de débit, ce qui diffère de l’algorithme à fenêtre glissante dans les niveaux classiques. En raison de cette différence d’implémentation, lorsque vous configurez les limites des jetons dans les niveaux v2 à plusieurs portées en utilisant le même counter-key, assurez-vous que la tokens-per-minute valeur est cohérente à travers toutes les instances de politique. Des valeurs incohérentes peuvent entraîner des comportements imprévisibles.
  • Cette stratégie effectue le suivi de l’utilisation des jetons indépendamment à chaque passerelle où elle est appliquée, y compris les passerelles d’espace de travail et les passerelles régionales dans un déploiement multirégion. Il n’agrège pas le nombre de jetons dans l’ensemble de l’instance.

Exemples

Limite de débit de jetons

Dans l’exemple suivant, la limite de débit de jeton de 5 000 par minute est clé par l’adresse IP de l’appelant. La stratégie n’estime pas le nombre de jetons requis pour une invite. Après l’exécution de chaque stratégie, les jetons restants autorisés pour l’adresse IP de cet appelant dans la période de temps sont stockés dans la variable 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>

Quota de jetons

Dans l’exemple suivant, le quota de jetons de 10000 est clé par l’ID d’abonnement et réinitialise mensuellement. Après chaque exécution de stratégie, le nombre de jetons restants autorisés pour cet ID d’abonnement dans la période est stocké dans la variable 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>

Pour plus d’informations sur l’utilisation des stratégies, consultez :