Sdílet prostřednictvím


Omezení tokenů testovacího modelu jazyka

Při vytváření aplikací, které používají jazykové modely, byste měli otestovat, jak aplikace zpracovává omezování rychlosti založené na tokenech. Dev Proxy umožňuje simulovat limity tokenů pro rozhraní API jazykového modelu pomocí LanguageModelRateLimitingPlugin.

Simulace limitů tokenů v rozhraních API jazykového modelu

Začněte tím, že povolíte LanguageModelRateLimitingPlugin ve vašem konfiguračním souboru.

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

Návod

Modul plug-in funguje s jakýmkoli rozhraním API kompatibilním s OpenAI, včetně místních jazykových modelů, jako je Ollama. Zahrňte do vlastnosti všechny koncové body rozhraní API jazykového urlsToWatch modelu, které chcete testovat.

Dále nakonfigurujte modul plug-in s požadovanými limity tokenů a časovým oknem.

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

Tato konfigurace umožňuje až 1 000 tokenů pro výzvu a 500 tokenů pro dokončení v rámci 60sekundového okna. Když dojde k překročení některého limitu, následující požadavky se omezí se standardní odpovědí 429.

Spusťte dev Proxy s konfiguračním souborem a použijte aplikaci k vytváření žádostí o jazykový model. Modul plug-in sleduje spotřebu tokenů ze skutečných odpovědí rozhraní API a omezuje požadavky při překročení limitů.

Testování s vlastními odpověďmi na chyby

Můžete také nakonfigurovat vlastní odpovědi tím, že nastavíte Custom, pokud dojde k překročení limitů tokenů, a vytvoříte vlastní soubor s odpověďmi.

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

Vytvořte vlastní soubor odpovědi s požadovaným formátem chyby:

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

Hodnota @dynamic hlaviček retry-after automaticky vypočítá zbývající počet sekund, dokud se omezení tokenů znovu nenastaví.

Testování různých scénářů

Scénář 1: Nízké limity tokenů pro časté testování

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

Pomocí nízkých limitů s krátkými časovými intervaly můžete rychle aktivovat omezování během vývoje a testování.

Scénář 2: Limity podobné produkčnímu prostředí

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

Pokud chcete otestovat modely skutečné spotřeby tokenů, nakonfigurujte limity podobné produkčnímu prostředí.

Scénář 3: Asymetrické limity

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

Testovací scénáře, ve kterých jsou limity tokenů dokončení nižší než limity výzvy, simulují plány rozhraní API s vědomím nákladů.

Další krok

Další informace o nástroji LanguageModelRateLimitingPlugin.