Compartir a través de


Límites del token del modelo de lenguaje de prueba

Al compilar aplicaciones que usan modelos de lenguaje, debe probar cómo controla la aplicación la limitación de velocidad basada en tokens. El proxy de desarrollo permite simular límites de token en las API del modelo de lenguaje mediante LanguageModelRateLimitingPlugin.

Simular límites de token en las API del modelo de lenguaje

Para empezar, habilite LanguageModelRateLimitingPlugin en su archivo de configuración.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "LanguageModelRateLimitingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "languageModelRateLimitingPlugin",
      "urlsToWatch": [
        "https://api.openai.com/*",
        "http://localhost:11434/*"
      ]
    }
  ]
}

Sugerencia

El complemento funciona con cualquier API compatible con OpenAI, incluidos modelos de lenguaje local como Ollama. Incluya todos los puntos de conexión de la API del modelo de lenguaje que desea probar en la urlsToWatch propiedad .

A continuación, configure el complemento con los límites de token deseados y el período de tiempo.

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "LanguageModelRateLimitingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "languageModelRateLimitingPlugin",
      "urlsToWatch": [
        "https://api.openai.com/*",
        "http://localhost:11434/*"
      ]
    }
  ],
  "languageModelRateLimitingPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/languagemodelratelimitingplugin.schema.json",
    "promptTokenLimit": 1000,
    "completionTokenLimit": 500,
    "resetTimeWindowSeconds": 60,
    "whenLimitExceeded": "Throttle"
  }
}

Esta configuración permite hasta 1000 tokens de aviso y 500 tokens de finalización dentro de una ventana de 60 segundos. Cuando se supera cualquiera de los límites, las solicitudes posteriores se limitan con una respuesta estándar 429.

Inicie Dev Proxy con su archivo de configuración y use su aplicación para realizar solicitudes de modelos de idioma. El complemento realiza un seguimiento del consumo de tokens de las respuestas de API reales y limita las solicitudes cuando se superan los límites.

Prueba con respuestas de error personalizadas

También puede configurar respuestas personalizadas cuando se superen los límites de tokens estableciendo whenLimitExceeded a Custom y creando un archivo de respuesta personalizado.

{
  "languageModelRateLimitingPlugin": {
    "promptTokenLimit": 500,
    "completionTokenLimit": 300,
    "resetTimeWindowSeconds": 120,
    "whenLimitExceeded": "Custom",
    "customResponseFile": "token-limit-response.json"
  }
}

Cree el archivo de respuesta personalizado con el formato de error deseado:

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/languagemodelratelimitingplugincustomresponse.schema.json",
  "statusCode": 429,
  "headers": [
    {
      "name": "retry-after",
      "value": "@dynamic"
    },
    {
      "name": "content-type",
      "value": "application/json"
    }
  ],
  "body": {
    "error": {
      "message": "Token quota exceeded. Your application has consumed all available tokens for this time period.",
      "type": "quota_exceeded",
      "code": "TOKENS_EXHAUSTED",
      "details": {
        "quota_type": "tokens",
        "retry_after_seconds": "@dynamic"
      }
    }
  }
}

El valor @dynamic para los encabezados retry-after calcula automáticamente los segundos restantes hasta que se restablecen los límites de los tokens.

Probar diferentes escenarios

Escenario 1: Límites de tokens bajos para pruebas frecuentes

{
  "languageModelRateLimitingPlugin": {
    "promptTokenLimit": 100,
    "completionTokenLimit": 50,
    "resetTimeWindowSeconds": 30
  }
}

Utilice límites bajos con ventanas de tiempo breves para activar rápidamente el control de velocidad durante el desarrollo y las pruebas.

Escenario 2: Límites propios de producción

{
  "languageModelRateLimitingPlugin": {
    "promptTokenLimit": 10000,
    "completionTokenLimit": 5000,
    "resetTimeWindowSeconds": 3600
  }
}

Para probar patrones de consumo de tokens realistas, configure límites similares al entorno de producción.

Escenario 3: Límites asimétricos

{
  "languageModelRateLimitingPlugin": {
    "promptTokenLimit": 2000,
    "completionTokenLimit": 100,
    "resetTimeWindowSeconds": 300
  }
}

Pruebe escenarios en los que los límites de tokens de finalización son inferiores a los límites de solicitud, simulando planes de API que tengan en cuenta el coste.

Paso siguiente

Más información sobre LanguageModelRateLimitingPlugin.