Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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
- 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.
- Várjon annyi ideig, amennyit az API kér. Az OpenAI és az Anthropic másodpercek alatt küld
retry-after. Az Azure OpenAIretry-after-msezredmá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. - 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 amax_retries=0használatával, ahogy az Azure OpenAI javasolja, különben a próbálkozások megsokszorozódnak. - 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. - Fokozatosan növelje. A forgalom éles ugrása aktiválja az OpenAI és az Anthropic
slow_downsebessé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. - 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.
- 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.