Compartir a través de


Limitar el uso de tokens de API del modelo de lenguaje grande

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.

Al confiar en las métricas de uso de tokens devueltas desde el punto de conexión de LLM, la directiva puede supervisar y aplicar con precisión los límites en tiempo real. La directiva también habilita el cálculo previo de los tokens de solicitud por API Management, lo que minimiza las solicitudes innecesarias al back-end de LLM si ya se ha superado el límite.

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.

Modelos admitidos

Use la directiva con las API de LLM agregadas a Azure API Management que están disponibles a través de la API de inferencia de modelos de Azure AI o con modelos compatibles con OpenAI que se proporcionan a través de proveedores de inferencia de terceros.

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. 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 No 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 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: calcula el número de tokens en función del esquema de solicitud en la API; puede reducir el rendimiento.
- false: no calcule los tokens de solicitud.

Cuando se establece en false, los tokens restantes por counter-key se calculan usando la utilización real de tokens a partir de la respuesta del modelo. Esto podría dar lugar a que se enviaran indicaciones al modelo que excedieran el límite de tokens. En tal caso, esto se detectará en la respuesta, y todas las solicitudes sucesivas serán bloqueadas por la directiva hasta que el límite de tokens se libere de nuevo.
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 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 El nombre de una variable que después de cada ejecución de directiva almacena el número 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 número estimado de tokens del símbolo del sistema en backend sección de canalización si estimate-prompt-tokens es true y cero de lo contrario. La variable se actualiza con el recuento notificado al recibir la respuesta en outbound sección. No N/D

Uso

Notas de uso

  • Esta directiva se puede usar varias veces por definición de directiva.
  • Si está disponible cuando estimate-prompt-tokens se establece en false, los valores de la sección de uso de la respuesta de la API de LLM se usan para determinar el uso del token.
  • Algunos puntos de conexión de LLM admiten el streaming de respuestas. Cuando se establece stream en true en la solicitud de API para habilitar el streaming, los tokens de solicitud siempre se estiman, independientemente del valor del atributo estimate-prompt-tokens.
  • En el caso de los modelos que aceptan entrada de imagen, los tokens de imagen se cuentan generalmente por el modelo de lenguaje back-end y se incluyen en los cálculos de límite y cuota. Sin embargo, cuando se usa el streaming o estimate-prompt-tokens se establece trueen , la directiva cuenta actualmente en exceso cada imagen como un recuento máximo de 1200 tokens.
  • API Management usa un único contador para cada valor counter-key que 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.
  • 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.

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>

Para más información sobre el trabajo con directivas, vea: