Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
När du skapar appar som använder språkmodeller bör du testa hur appen hanterar tokenbaserad hastighetsbegränsning. Med Dev Proxy kan du simulera tokengränser för språkmodell-API:er med hjälp av LanguageModelRateLimitingPlugin.
Simulera tokenbegränsningar för språkmodell-API:er
För att starta, aktivera LanguageModelRateLimitingPlugin i din konfigurationsfil.
{
  "$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/*"
      ]
    }
  ]
}
Tips/Råd
Plugin-programmet fungerar med alla OpenAI-kompatibla API:er, inklusive lokala språkmodeller som Ollama. Inkludera alla api-slutpunkter för språkmodellen som du vill testa i egenskapen urlsToWatch .
Konfigurera sedan plugin-programmet med önskade tokengränser och tidsperioder.
{
  "$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"
  }
}
Den här konfigurationen tillåter upp till 1 000 prompttoken och 500 slutförandetoken inom ett 60-sekundersfönster. När någon av gränserna överskrids begränsas efterföljande begäranden med ett standardsvar på 429.
Starta Dev Proxy med konfigurationsfilen och använd din app för att göra språkmodellbegäranden. Plugin-programmet spårar tokenförbrukning från faktiska API-svar och begränsar begäranden när gränserna överskrids.
Testa med anpassade felsvar
Du kan också konfigurera anpassade svar när tokengränserna överskrids genom att ange whenLimitExceeded till Custom och skapa en anpassad svarsfil.
{
  "languageModelRateLimitingPlugin": {
    "promptTokenLimit": 500,
    "completionTokenLimit": 300,
    "resetTimeWindowSeconds": 120,
    "whenLimitExceeded": "Custom",
    "customResponseFile": "token-limit-response.json"
  }
}
Skapa den anpassade svarsfilen med önskat felformat:
{
  "$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"
      }
    }
  }
}
Värdet @dynamic för återförsök efter rubriker beräknar automatiskt de sekunder som återstår tills tokengränserna återställs.
Testa olika scenarier
Scenario 1: Låga tokengränser för frekvent testning
{
  "languageModelRateLimitingPlugin": {
    "promptTokenLimit": 100,
    "completionTokenLimit": 50,
    "resetTimeWindowSeconds": 30
  }
}
Använd låga gränser med korta tidsfönster för att snabbt utlösa strypning under utveckling och testning.
Scenario 2: Produktionsliknande gränser
{
  "languageModelRateLimitingPlugin": {
    "promptTokenLimit": 10000,
    "completionTokenLimit": 5000,
    "resetTimeWindowSeconds": 3600
  }
}
Om du vill testa realistiska mönster för tokenförbrukning konfigurerar du gränser som liknar produktionsmiljön.
Scenario 3: Asymmetriska gränser
{
  "languageModelRateLimitingPlugin": {
    "promptTokenLimit": 2000,
    "completionTokenLimit": 100,
    "resetTimeWindowSeconds": 300
  }
}
Testscenarier där gränserna för slutförandetoken är lägre än promptgränserna, vilket simulerar kostnadsmedvetna API-planer.
Nästa steg
Läs mer om LanguageModelRateLimitingPlugin.