LLM-sebességkorlátok: tokenek percenként, kérések percenként, és mi történik, ha eléri őket

A nyelvi modell API-k egyszerre két módon korlátozzák a forgalmat: hány kérést küld percenként (RPM), és hány tokent használ percenként (TPM). A kérelemkorlát alatt is maradhat, és továbbra is korlátozhatja a rendszer, mert néhány hosszú kérés felhasználta a tokenkeretét. Ha bármelyik korlátot eléri, az API válaszol 429 Too Many Requests , és az alkalmazásnak várnia kell.

Hogyan számolja az OpenAI, az Azure OpenAI és az Anthropic

Provider Mi korlátozott Mit kell tudni
OpenAI RPM, kérések naponta, TPM, tokenek naponta és egyebek szervezetenként és projektenként, modellenként Mindig azt a korlátot éred el, amelyik előbb fogy el. A tokenkorlát esetében egy kérés a max_tokens és a karakterei alapján készített becslés közül a magasabb értéknek számít. A sikertelen kérések száma is.
Azure OpenAI Az egyes telepítésekhez hozzárendelt TPM, valamint az azzal arányos RPM-korlát Az RPM 1 vagy 10 másodperces ablakokon van ellenőrizve, így egy hirtelen forgalmi csúcs akkor is 429-et kap, ha a percenkénti összeg rendben van. A tokenbecslés tartalmazza a(z) max_tokens elemet.
Anthropic RPM, bemeneti tokenek percenként (ITPM) és kimeneti tokenek percenként (OTPM), modellenként A kapacitás folyamatosan újratöltődik, és a 60 RPM másodpercenként 1 kérésként érvényesíthető. A legtöbb modell esetében a gyorsítótárazott bemeneti tokenek nem számítanak bele az ITPM-be, és max_tokens nem számít bele az OTPM-be.

Ha a max_tokens értékét 4000-re állítja, és 200 tokent kap vissza, az OpenAI és az Azure OpenAI továbbra is beleszámítják a 4000-et a korlátjába. Így kaphat 429-es hibákat, miközben a használati metrikák jóval a kvótája alatt vannak.

Mit jelent a 429 az egyes szolgáltatók számára?

Nem minden 429 múlik el, ha vársz.

Provider Várjon, majd próbálja újra Álljon meg, és mondja el valakinek
OpenAI 429 kérések vagy tokenek esetén 429 slow_down (a forgalom túl gyorsan növekedett, még a korlátokon belül is), és 503 server_is_overloaded. Várjon a(z) Retry-After elemre, ha megjelenik. 429 with credit_balance_exhausted, organization_spend_limit_exceeded, , project_spend_limit_exceededor organization_usage_limit_exceeded in error.code. Az újrapróbálkozás nem állítja vissza a hozzáférést.
Azure OpenAI 429 a telepítés TPM-jére vagy RPM-jére, rendszerkapacitásra, vagy a sebességkorlátozás ideiglenes csökkentésére. Várjon a(z) retry-after-ms-ra/re. Tartósan 429-es hibákat tapasztal éles környezetben, miközben ön a jóváhagyott kvóta alatt van. Ellenőrizze a telepítés TPM-hozzárendelését, majd nyisson meg egy támogatási kérést.
Anthropic 429 rate_limit_errorretry-after fejléccel, beleértve a gyorsítási korlátokat a használat hirtelen növekedése után, és 529 overloaded_error. 429 a havi költési korláthoz. Nincs retry-after fejléce, error.details.error_codeenforced_spend_limit_reached, és folyamatosan meghiúsul, amíg a hozzáférés nem folytatódik.

LLM-sebességkorlátok kezelése

  1. Ellenőrizze, hogy melyik 429-et kapta. A számlázási, költési és kvótahibák emberi beavatkozást igényelnek, nem pedig újrapróbálkozást.
  2. Várjon annyi ideig, amennyit az API kér. Az OpenAI és az Anthropic másodpercek alatt küld retry-after. Az Azure OpenAI retry-after-ms ezredmásodpercek alatt küld. Minden jelzés nélkül exponenciálisan növeld a várakozási időt véletlenszerű jitterrel, és korlátozd mind a próbálkozások számát, mind a teljes időt.
  3. Tudja, mit csinál már az SDK. Az OpenAI és az Anthropic Python SDK-k csatlakozási hiba, 409, 429, 408 és 5xx válaszok esetén alapértelmezés szerint 2 alkalommal próbálkoznak újra. Ha saját újrapróbálkozási ciklust ad hozzá, kapcsolja ki az SDK újrapróbálkozásait, például Pythonban a max_retries=0 használatával, ahogy az Azure OpenAI javasolja, különben a próbálkozások megsokszorozódnak.
  4. Csökkentsd azt, ami számít. Az OpenAI-n és az Azure OpenAI-n állítsa a(z) max_tokens értékét a várt válaszmérethez közeli értékre. Az Anthropicon gyorsítótárazz ismétlődő tartalmakat, például a rendszerutasításokat.
  5. Fokozatosan növelje. A forgalom éles ugrása aktiválja az OpenAI és az Anthropic slow_down sebességkorlátait, még a korlátokon belül is. Az OpenAI azt javasolja, hogy ha eléri az 1 millió bemeneti tokent percenként, 15 percenként legfeljebb 50%-kal növekedhet.
  6. Ne játssza vissza a már feldolgozott streamet. A stream indítása után hiba érkezhet streameseményként, és az OpenAI azt tanácsolja, hogy a kimenet felhasználása után ne ismételjen meg automatikusan egy kérést.
  7. Mondja el a felhasználónak, ha egy kérés 429-es hibán elakad, ahelyett, hogy egy betöltési indikátor jelenne meg.

Annak tesztelése, hogy az alkalmazás kezeli-e az LLM kérésszám-korlátait

Approach Mit talál? Amit elmulasztott
Az SDK-ügyfél mockolása a tesztekben, vagy hagyja, hogy a kódolóügynök megírja a mockot Lefut-e a hibaág A szolgáltató valós állapotkódjai, hibakódjai és fejlécei, valamint az SDK saját újrapróbálkozásai. Az alkalmazásnak egy csak tesztelésre szolgáló kapcsolóra is szüksége van a mock eléréséhez.
Hívja meg a valódi API-t, amíg korlátozni nem kezdi a hívásokat Valós viselkedés Minden tokenért fizetnie kell, és nem aktiválhat slow_down túlterhelést vagy költségkorlátot tetszés szerint
Az alkalmazás valós forgalmának elfogása és a szolgáltató hibáinak visszaadása, vagy az alkalmazás által használt tokenek szabályozása Valós URL-címek, az SDK újrapróbálkozási szabályzata és a szolgáltató hibaválaszainak törzse, az Ön által választott korláttal A te kódod elkülönítve. Arra valók az egységtesztek.

Próbálja ki az alkalmazásán

A Dev Proxy elfogja az alkalmazás kéréseit a nyelvi modell API-jának, és visszaadja a szolgáltató saját hibáit, miközben az alkalmazás továbbra is a valódi URL-címet hívja. OpenAI esetén töltse le az előre beállított beállítást, és indítsa el vele a Dev Proxyt:

devproxy config get openai-throttling
devproxy --config-file "~dataFolder/configs/openai-throttling/.devproxy/devproxyrc.json"

Az openai-throttling előbeállítás a https://api.openai.com/* felé irányuló kérelmek 90%-ánál véletlenszerű hibával meghiúsul: rate_limit_exceeded TPM vagy RPM esetén, slow_down, credit_balance_exhausted vagy 503 server_is_overloaded. Az anthropic-throttling előre beállított érték ugyanezt teszi az https://api.anthropic.com/* esetében is az RPM, a bemeneti token, a kimeneti token, a gyorsítás miatti 429-esek és az 529 overloaded_error tekintetében. Mindkét beállításkészlet tartalmazza a RetryAfterPlugin bővítményt, amely megmondja, hogy az alkalmazás mikor hívhatja meg újra az API-t, mielőtt a 429-es válaszhoz tartozó retry-after várakozási idő lejárna. Nem ellenőrzi az 503 és az 529 választ.

Az alkalmazás által ténylegesen használt tokenek korlátozásához használja a LanguageModelRateLimitingPlugin modult. Megszámlálja a prompt- és befejezési tokeneket, amelyeket az egyes válaszok jelentenek, és 429-es választ ad vissza retry-after, amikor az alkalmazás túllépi a beállított korlátokat. OpenAI-kompatibilis API-kkal működik, beleértve az Azure OpenAI-t és a helyi modelleket:

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.3.1/rc.schema.json",
  "plugins": [
    {
      "name": "LanguageModelRateLimitingPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll",
      "configSection": "languageModelRateLimitingPlugin"
    }
  ],
  "urlsToWatch": [
    "https://api.openai.com/*",
    "https://*.openai.azure.com/openai/deployments/*/chat/completions*"
  ],
  "languageModelRateLimitingPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.3.1/languagemodelratelimitingplugin.schema.json",
    "promptTokenLimit": 1000,
    "completionTokenLimit": 500,
    "resetTimeWindowSeconds": 60
  }
}

A beépülő modul nem állítja elő a max_tokens becslést. Az alapértelmezett 429-választörzs a insufficient_quota kódot használja. Ha vissza szeretné adni az alkalmazás által elvárt hibatörzset sebességkorlátozás esetén, állítsa a whenLimitExceeded értékét Custom-re, és irányítsa a customResponseFile elemet a saját válaszára. A Dev Proxy telepítéséhez lásd: Dev Proxy beállítása.

További lépések

Lásd még