Partage via


Limiter l’utilisation des jetons d’API Azure OpenAI

S’APPLIQUE À : Développeur | Essentiel | Essentiel v2 | Standard | Standard v2 | Premium

La stratégie azure-openai-token-limit empêche les pics d’utilisation de l’API Azure OpenAI Service par clé en limitant la consommation de jetons de modèle de langage à un nombre spécifié par minute. Lorsque l’utilisation du jeton est dépassée, l’appelant reçoit un code d’état de réponse 429 Too Many Requests.

En s’appuyant sur les métriques d’utilisation des jetons retournées par le point de terminaison OpenAI, la stratégie peut surveiller et appliquer des limites en temps réel. La stratégie permet également le pré-calcul des jetons d’invite par Gestion des API, ce qui réduit les demandes inutiles adressées au serveur principal OpenAI si la limite est déjà dépassée.

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.

Modèles Azure OpenAI Service pris en charge

La stratégie est utilisée avec les API ajoutées à Gestion des API à partir de Azure OpenAI Service des types suivants :

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

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

text-embedding-3-small

text-embedding-ada-002

Pour plus d’informations, consultez Gérer les Modèles Azure OpenAI Service.

Instruction de la stratégie

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

Attributs

Attribut Description Obligatoire Default
counter-key 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
tokens-per-minute Nombre maximal de jetons consommés par invite et achèvement par minute. Oui 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 demandes réussies seront bloquées par la stratégie jusqu’à ce que la limite du jeton se libère à nouveau.
Oui N/A
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 du tokens-per-minute spécifié. Les expressions de stratégie ne sont pas autorisées. No 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 du tokens-per-minute spécifié. Les expressions de stratégie ne sont pas autorisées. Non N/A
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 autorisés pour l’intervalle de temps. Les expressions de stratégie ne sont pas autorisées. Non N/A
remaining-tokens-variable-name Nom d’une variable qui après chaque exécution de stratégie stocke le nombre de jetons restants autorisés pour l’intervalle de temps. Les expressions de stratégie ne sont pas autorisées. Non N/A
tokens-consumed-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 N/A
tokens-consumed-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 N/A

Usage

Notes d’utilisation

  • Cette stratégie peut être utilisée plusieurs fois par définition de stratégie.
  • Cette stratégie peut éventuellement être configurée lors de l’ajout d’une API à partir de Azure OpenAI Service à l’aide du portail.
  • Lorsqu’elles sont disponibles, quand estimate-prompt-tokens est défini sur false, les valeurs indiquées dans la section d’utilisation de la réponse de l’API du service Azure OpenAI sont utilisées pour déterminer les métriques de jeton.
  • 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.
  • 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.

Exemple

Dans l’exemple suivant, la limite 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>

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