Sdílet prostřednictvím


Omezení tokenů testovacího modelu jazyka

Na první pohled
Cílem: Testování limitů rychlosti tokenů LLM
Čas: 10 minut
Pluginy:LanguageModelRateLimitingPlugin
Požadavky:Nastavení dev proxy serveru

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.

Soubor: devproxyrc.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.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.

Soubor: devproxyrc.json (úplný s limity tokenů)

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.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/v2.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 whenLimitExceeded, pokud dojde k překročení limitů tokenů, a vytvoříte vlastní soubor s odpověďmi.

Soubor: devproxyrc.json (pouze část languageModelRateLimitingPlugin)

{
  "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:

Soubor: token-limit-response.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/languagemodelratelimitingplugin.customresponsefile.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í

Soubor: devproxyrc.json (pouze část languageModelRateLimitingPlugin)

{
  "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í

Soubor: devproxyrc.json (pouze část languageModelRateLimitingPlugin)

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

Soubor: devproxyrc.json (pouze část languageModelRateLimitingPlugin)

{
  "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.