A nyelvi modell tokenhatárainak tesztelése

Egy pillantással
Cél: LLM-jogkivonatok sebességkorlátainak tesztelése
Idő: 10 perc
Beépülő modulok:LanguageModelRateLimitingPlugin
Előfeltételek:Fejlesztői proxy beállítása

Nyelvi modelleket használó alkalmazások létrehozásakor tesztelnie kell, hogy az alkalmazás hogyan kezeli a jogkivonatalapú sebességkorlátozást. A Dev Proxy lehetővé teszi a nyelvi modell API-k jogkivonatkorlátainak szimulálását a LanguageModelRateLimitingPlugin használatával.

Nyelvi modell API-k tokenkorlátainak szimulálása

Első lépésként engedélyezze a LanguageModelRateLimitingPlugin elemet a konfigurációs fájlban.

Fájl: devproxyrc.json

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

Jótanács

A beépülő modul bármilyen OpenAI-kompatibilis API-val működik, beleértve az olyan helyi nyelvi modelleket is, mint az Ollama. Adja meg a tulajdonságban tesztelni kívánt összes nyelvi modell API-végpontot urlsToWatch .

Ezután állítsa be a beépülő modult a kívánt tokenkorlátokkal és időkerettel.

Fájl: devproxyrc.json (tokenkorlátokkal kiegészítve)

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.3.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.3.0/languagemodelratelimitingplugin.schema.json",
    "promptTokenLimit": 1000,
    "completionTokenLimit": 500,
    "resetTimeWindowSeconds": 60,
    "whenLimitExceeded": "Throttle"
  }
}

Ez a konfiguráció legfeljebb 1000 parancssori jogkivonatot és 500 befejezési jogkivonatot tesz lehetővé egy 60 másodperces ablakban. Ha bármelyik korlátot túllépi, a rendszer a további kéréseket szabványos 429-válaszsal szabályozza.

Indítsa el a dev proxyt a konfigurációs fájllal, és használja az alkalmazást a nyelvi modell kéréseinek igényléséhez. A beépülő modul nyomon követi a tényleges API-válaszok token felhasználását, és a korlátok túllépése esetén korlátozza a kérelmeket.

Tesztelés egyéni hibaválaszokkal

Egyéni válaszokat is konfigurálhat, ha a tokenkorlátokat túllépi, úgy, hogy beállítja a whenLimitExceeded értéket Custom-re, és létrehoz egy egyéni válaszfájlt.

Fájl: devproxyrc.json (csak languageModelRateLimitingPlugin szakasz)

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

Hozza létre az egyéni válaszfájlt a kívánt hibaformátummal:

Fájl: token-limit-response.json

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

Az @dynamic retry-after fejlécek értéke automatikusan kiszámítja a fennmaradó másodperceket, amíg a token korlátai újraindulnak.

Különböző forgatókönyvek tesztelése

1. forgatókönyv: Alacsony tokenkorlátok a gyakori teszteléshez

Fájl: devproxyrc.json (csak languageModelRateLimitingPlugin szakasz)

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

Alacsony korlátok és rövid időkeretek használatával gyorsan aktiválhatja a szabályozást a fejlesztés és a tesztelés során.

2. forgatókönyv: Éles környezethez hasonló korlátok

Fájl: devproxyrc.json (csak languageModelRateLimitingPlugin szakasz)

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

A valós tokenhasználati minták teszteléséhez állítson be az éles környezetéhez hasonló korlátokat.

3. forgatókönyv: Aszimmetrikus korlátok

Fájl: devproxyrc.json (csak languageModelRateLimitingPlugin szakasz)

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

Olyan forgatókönyvek tesztelése, amelyeknél a befejezési jogkivonat korlátai alacsonyabbak a parancssori korlátoknál, és a költségtudatos API-csomagokat szimulálják.

Következő lépés

További információ a LanguageModelRateLimitingPlugin-ról.