Partager via


Limiter l’utilisation des jetons d’API de modèle de langage volumineux

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

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

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 sur false, 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 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.
  • 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>

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