Limiter l’utilisation des jetons d’API de modèle de langage volumineux
S’applique à : Développeur | Essentiel | Essentiel v2 | Standard | Standard v2 | Premium | Premium v2
La stratégie llm-token-limit
empêche les pics d’utilisation des API LLM (Large Language Model) par clé en limitant la consommation de jetons LLM à 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 LLM, la stratégie peut surveiller et appliquer des limites en temps réel. La stratégie permet également la précalculation des jetons d’invite par Gestion des API, ce qui réduit les demandes inutiles sur le serveur principal LLM si la limite est déjà dépassée.
Remarque
Cette stratégie est actuellement en préversion.
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 pris en charge
Utilisez la stratégie avec les API LLM ajoutées à Gestion des API Azure qui sont disponibles via l’API d’inférence de modèle Azure AI.
Instruction de la stratégie
<llm-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.
- Si disponible lorsque
estimate-prompt-tokens
est défini surfalse
, les valeurs de la section utilisation de la réponse de l’API LLM sont utilisées pour déterminer l’utilisation du jeton. - Certains points de terminaison LLM 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
. - 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 />
<llm-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 azure-openai-token-limit
- stratégie llm-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
- Kit de ressources des stratégies Gestion des API Azure
- Créer des stratégies à l’aide de Microsoft Copilot dans Azure