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
- Sections de la stratégie : inbound
- Étendues de la stratégie : global, espace de travail, produit, API, opération
- Passerelles : classiques, v2, auto-hébergées, espace de travail
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 surfalse
, 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 surtrue
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’attributestimate-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>
Stratégies connexes
- Limitation de débit et quotas
- Stratégie llm-token-limit
- Stratégie azure-openai-emit-token-metric
Contenu connexe
Pour plus d’informations sur l’utilisation des stratégies, consultez :
- Tutoriel : Transformer et protéger votre API
- Référence de stratégie pour obtenir la liste complète des instructions et des paramètres de stratégie
- Expressions de stratégie
- Définir ou modifier des stratégies
- Réutilisation de configurations de stratégie
- Référentiel d’extrait de stratégie
- Créer des stratégies à l’aide de Microsoft Copilot dans Azure