Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
SE APLICA A: Desarrollador | Básico | Básico v2 | Estándar | Standard v2 | Premium |Premium v2
La llm-token-limit directiva evita picos de uso de API de modelo de lenguaje grande (LLM) por clave limitando el consumo de tokens del modelo de lenguaje a una tasa especificada (número por minuto), una cuota durante un período especificado o ambos. Cuando se supera un límite de velocidad de tokens especificado, el autor de la llamada recibe un 429 Too Many Requests código de estado de respuesta. Cuando se supera una cuota especificada, el autor de la llamada recibe un 403 Forbidden código de estado de respuesta.
Nota:
Establezca los elementos de la directiva y los elementos secundarios en el orden proporcionado en la instrucción de directiva. Obtenga más información sobre el establecimiento o modificación de directivas de API Management.
API de modelo admitidas
Esta directiva funciona con las API de LLM agregadas a API Management que cumplen uno de los siguientes esquemas de API:
- Api de finalizaciones o respuestas de chat de OpenAI
- API de mensajes de Anthropic (actualmente compatible con los niveles v2 de API Management)
Instrucción de la directiva
<llm-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" />
Atributos
| Atributo | Descripción | Necesario | Valor predeterminado |
|---|---|---|---|
| counter-key | Clave que se va a usar para la directiva de límite de tokens. En cada valor de clave, se usa un único contador para todos los ámbitos en los que se configura la directiva. Se permiten expresiones de directiva. | Sí | N/D |
| tokens por minuto | Número máximo de tokens consumidos por petición y finalización por minuto. | Se debe especificar un límite de velocidad (tokens-per-minute), una cuota (token-quota sobre un token-quota-period), o ambas. |
N/D |
| cuota de token | Número máximo de tokens permitidos durante el intervalo de tiempo especificado en .token-quota-period Se permiten expresiones de directiva. |
Se debe especificar un límite de velocidad (tokens-per-minute), una cuota (token-quota sobre un token-quota-period), o ambas. |
N/D |
| token-quota-period | Longitud de la ventana fija después de la cual se restablece.token-quota El valor debe ser uno de los siguientes: Hourly,Daily, Weekly, Monthly, Yearly. La hora de inicio de un período de cuota se calcula como la marca de tiempo UTC truncada a la unidad (hora, día, etc.) utilizada durante el período. Se permiten expresiones de directiva. |
Se debe especificar un límite de velocidad (tokens-per-minute), una cuota (token-quota sobre un token-quota-period), o ambas. |
N/D |
| estimate-prompt-tokens | Valor booleano que determina si se debe calcular el número de tokens necesarios para un mensaje: - true: calcule los tokens de solicitud de antemano en función del esquema de solicitud en la API. - false: no calcule los tokens de solicitud; use el uso real del token de la respuesta del modelo. Para conocer el comportamiento de estimación y recuento de tokens, consulte Consideraciones sobre los recuentos de tokens y la estimación. |
Sí | N/D |
| retry-after-header-name | Nombre de un encabezado de respuesta personalizado cuyo valor es el intervalo de reintento recomendado en segundos después de que se supere o tokens-per-minute especificadotoken-quota. No se permiten expresiones de directiva. |
No | Retry-After |
| retry-after-variable-name | Nombre de una variable que almacena el intervalo de reintento recomendado en segundos después de que se supere o tokens-per-minute especificadotoken-quota. No se permiten expresiones de directiva. |
No | N/D |
| remaining-quota-tokens-header-name | Nombre de un encabezado de respuesta cuyo valor después de cada ejecución de directiva es el número estimado de tokens restantes correspondientes a token-quota permitidos para .token-quota-period No se permiten expresiones de directiva. |
No | N/D |
| remaining-quota-tokens-variable-name | Nombre de una variable que después de cada ejecución de directiva almacena el número estimado de tokens restantes correspondientes a token-quota permitidos para .token-quota-period No se permiten expresiones de directiva. |
No | N/D |
| remaining-tokens-header-name | Nombre de un encabezado de respuesta cuyo valor después de cada ejecución de directiva es el número de tokens restantes correspondientes al tokens-per-minute intervalo de tiempo permitido. No se permiten expresiones de directiva. |
No | N/D |
| remaining-tokens-variable-name | El nombre de una variable que después de cada ejecución de directiva almacena el número de tokens restantes correspondientes a tokens-per-minute permitidos para el intervalo de tiempo. No se permiten expresiones de directiva. |
No | N/D |
| tokens-consumed-header-name | Nombre de un encabezado de respuesta cuyo valor es el número de tokens consumidos tanto por petición como por finalización. El encabezado se agrega a la respuesta solo después de recibir la respuesta del back-end. No se permiten expresiones de directiva. | No | N/D |
| tokens-consumed-variable-name | Nombre de una variable inicializada en el recuento estimado de tokens de solicitud en la backend sección (o cero si estimate-prompt-tokens es false), actualizado con el recuento notificado real en la outbound sección. |
No | N/D |
Uso
- Secciones de la directiva: inbound (entrada)
- Ámbitos de la directiva: global, área de trabajo, producto, API, operación
- Puertas de enlace: clásico, v2, autohospedado, área de trabajo
Notas de uso
- Esta directiva se puede usar varias veces por definición de directiva.
- Esta política puede configurarse opcionalmente al añadir una API LLM usando el portal.
- El valor de o
remaining-quota-tokens-header-namees una estimación y puede ser mayor de lo esperado en función del consumo real deremaining-quota-tokens-variable-nametokens. Para obtener más información, consulte Consideraciones sobre los recuentos de tokens y la estimación. - API Management usa un único contador para cada valor
counter-keyque se especifique en la directiva. El contador se actualiza en todos los ámbitos en los que la directiva está configurada con ese valor de clave. Si quiere configurar contadores independientes en distintos ámbitos (por ejemplo, una API o un producto específicos), especifique valores de clave diferentes en los distintos ámbitos. Por ejemplo, anexe una cadena que identifique el ámbito al valor de una expresión. - Los niveles v2 usan un algoritmo de cubo de tokens para limitar la velocidad, que difiere del algoritmo de ventana deslizante en niveles clásicos. Debido a esta diferencia de implementación, cuando configuras límites de tokens en los niveles v2 en múltiples ámbitos usando el mismo
counter-key, asegúrate de que eltokens-per-minutevalor sea consistente en todas las instancias de políticas. Los valores inconsistentes pueden causar comportamientos impredecibles. Para obtener más información, consulte Limitación de solicitudes avanzadas con Azure API Management - Esta directiva realiza un seguimiento del uso de tokens de forma independiente en cada puerta de enlace en la que se aplica, incluidas las puertas de enlace del área de trabajo y las puertas de enlace regionales en una implementación de varias regiones. No agrega recuentos de tokens en toda la instancia.
Consideraciones sobre los recuentos de tokens y la estimación
La directiva supervisa y aplica límites de token mediante los datos reales de uso de tokens devueltos desde el punto de conexión llm. Opcionalmente, puede habilitar la estimación del token de solicitud para reducir las solicitudes de back-end innecesarias. Se aplican las siguientes consideraciones.
- Tipos de token: la directiva solo cuenta tokens de solicitud y finalización.
-
Sin estimación del token de solicitud (
estimate-prompt-tokens="false"): la directiva usa valores reales de uso de tokens de la sección de lausagerespuesta de la API de LLM. Las solicitudes se pueden enviar al back-end incluso cuando se supera el límite; esto se detecta desde la respuesta, después de lo cual las solicitudes posteriores se bloquean hasta que se restablece el límite. -
Con la estimación del token del símbolo del sistema (
estimate-prompt-tokens="true"): la directiva calcula los tokens del esquema de solicitud en la definición de API antes de enviar la solicitud. Esto puede reducir las solicitudes de back-end innecesarias cuando ya se supera el límite, pero puede reducir el rendimiento. -
Streaming: cuando el streaming está habilitado en la solicitud de API (
stream: true), los tokens de solicitud siempre se calculan independientemente de laestimate-prompt-tokensconfiguración. Los tokens de finalización también se calculan cuando se transmiten respuestas. -
Entrada de imagen: en el caso de los modelos que aceptan entrada de imagen, los tokens de imagen se cuentan generalmente por el LLM de back-end y se incluyen en los cálculos de límite y cuota. Sin embargo, cuando el streaming está habilitado o
estimate-prompt-tokensse establecetrueen , la directiva supera cada imagen como máximo de 1200 tokens. - Simultaneidad: dado que el número exacto de tokens consumidos no se puede determinar hasta que las respuestas se reciben del back-end, las solicitudes simultáneas o casi simultáneas pueden superar temporalmente el límite de tokens configurado. Una vez que se procesan las respuestas y se supera el límite, las solicitudes posteriores se bloquean hasta que se restablece el límite.
-
Precisión de la cuota restante: la cuota de token restante estimada devuelta en
remaining-quota-tokens-variable-nameoremaining-quota-tokens-header-namepuede ser mayor que la esperada en función del consumo real de tokens y se vuelve más precisa a medida que se aproxima la cuota.
Ejemplos
Límite de velocidad de tokens
En el ejemplo siguiente, el límite de velocidad de tokens de 5000 por minuto está clavedo por la dirección IP del autor de la llamada. La directiva no calcula el número de tokens necesarios para un mensaje. Después de cada ejecución de directiva, los tokens restantes permitidos en el período de tiempo se almacenan en 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>
Cuota de tokens
En el ejemplo siguiente, la cuota de tokens de 10000 está claveda por el identificador de suscripción y restablece mensualmente. Después de cada ejecución de directiva, el número de tokens restantes permitidos para ese identificador de suscripción en el período de tiempo se almacena en la variable remainingQuotaTokens.
<policies>
<inbound>
<base />
<llm-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>
Directivas relacionadas
Contenido relacionado
Para más información sobre el trabajo con directivas, vea:
- Tutorial: Transformación y protección de una API
- Referencia de directivas para una lista completa de instrucciones de directivas y su configuración
- Expresiones de directiva
- Establecimiento o edición de directivas
- Reutilización de configuraciones de directivas
- repositorio de fragmentos de código Policy
- repositorio de ejemplos Policy
- Kit de herramientas de directivas de Azure API Management
- Get Copilot ayuda para crear, explicar y solucionar problemas de directivas