Delen via


Tokenlimieten voor taalmodel testen

Wanneer u apps bouwt die gebruikmaken van taalmodellen, moet u testen hoe uw app de snelheidsbeperking op basis van tokens verwerkt. Met Dev Proxy kunt u tokenlimieten simuleren voor api's van het taalmodel met behulp van languageModelRateLimitingPlugin.

Tokenlimieten voor taalmodel-API's simuleren

Als u wilt beginnen, schakelt u het LanguageModelRateLimitingPlugin in uw configuratiebestand in.

{
  "$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/*"
      ]
    }
  ]
}

Aanbeveling

De invoegtoepassing werkt met elke OpenAI-compatibele API, inclusief lokale taalmodellen zoals Ollama. Neem alle API-eindpunten voor het taalmodel op die u in de urlsToWatch eigenschap wilt testen.

Configureer vervolgens de invoegtoepassing met de gewenste tokenlimieten en tijdvenster.

{
  "$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"
  }
}

Met deze configuratie kunnen maximaal 1000 prompttokens en 500 voltooiingstokens binnen een venster van 60 seconden worden voltooid. Wanneer een van beide limieten wordt overschreden, worden volgende aanvragen beperkt met een standaard 429-antwoord.

Start Dev Proxy met uw configuratiebestand en gebruik uw app om taalmodelaanvragen te maken. De invoegtoepassing houdt het tokenverbruik bij van werkelijke API-antwoorden en beperkt aanvragen wanneer de limieten worden overschreden.

Testen met aangepaste foutreacties

U kunt ook aangepaste antwoorden configureren wanneer tokenlimieten worden overschreden door whenLimitExceeded te Custom stellen en een aangepast antwoordbestand te maken.

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

Maak het aangepaste antwoordbestand met de gewenste foutindeling:

{
  "$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"
      }
    }
  }
}

De @dynamic waarde voor opnieuw proberen na headers berekent automatisch de resterende seconden totdat de tokenlimieten opnieuw zijn ingesteld.

Verschillende scenario's testen

Scenario 1: Lage tokenlimieten voor frequente tests

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

Gebruik lage limieten met korte tijdvensters om snel drosseling te activeren tijdens het ontwikkelen en testen.

Scenario 2: Productieachtige limieten

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

Als u realistische tokenverbruikspatronen wilt testen, configureert u limieten die vergelijkbaar zijn met uw productieomgeving.

Scenario 3: Asymmetrische limieten

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

Testscenario's waarbij de limieten voor voltooiingstokens lager zijn dan promptlimieten, waarbij kostenbewuste API-plannen worden simuleren.

Volgende stap

Meer informatie over de LanguageModelRateLimitingPlugin.