Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Na první pohled
Cíl: Otestujte, jak vaše aplikace zpracovává chyby omezování rychlosti OpenAI a přetížení.
Čas: 10 minut
Pluginy:GenericRandomErrorPlugin, RetryAfterPlugin
Požadavky:Nastavení dev proxy serveru
Vaše aplikace funguje ve vývoji a pak selže v produkčním prostředí s 429 Too Many Requests. Limity požadavků OpenAI závisí na úrovni využití vaší organizace, vašem modelu a všech ostatních, kteří používají stejnou organizaci, takže jich nemůžete spolehlivě záměrně dosáhnout. Dev Proxy vrátí stejné chyby, které vrací rozhraní API OpenAI, abyste viděli, co vaše aplikace dělá ještě předtím, než ji použijí vaši uživatelé.
Zjistěte, co OpenAI vrací
Ne každá chyba OpenAI znamená "zkuste to znovu". Vaše aplikace je musí rozlišovat.
| Status | error.code |
Co to znamená | Co má vaše aplikace dělat |
|---|---|---|---|
| 429 | rate_limit_exceeded |
Dosáhli jste limitu počtu žádostí za minutu (RPM) nebo tokenů za minutu (TPM). | Počkejte na čas uvedený v záhlaví Retry-After a pak to zkuste znovu. |
| 429 | slow_down |
Míra požadavků se příliš rychle zvýšila, i když jste v mezích svých limitů. | Počkejte na Retry-After, snižte frekvenci požadavků a postupně ji zvyšujte. |
| 429 | credit_balance_exhausted |
Vaší organizaci nezbývají žádné předplacené kredity. | Nezkoušejte to znovu. Opakováním se neobnoví přístup. Řekněte uživateli nebo upozorněte správce. |
| 503 | server_is_overloaded |
Model teď nemá dostatečnou kapacitu. | Je-li k dispozici Retry-After, počkejte na něj a pak to zkuste znovu se zvyšujícím zpožděním. |
Úplný seznam najdete v části Kódy chyb v dokumentaci OpenAI.
Important
Všechny 3 chyby ve 429 řádcích používají stejný stavový kód. Pokud vaše aplikace opakuje požadavek při každé chybě 429, bude stále znovu opakovat požadavky končící chybami fakturace, které se nikdy nevyřeší. Zkontrolujte error.code, abyste se rozhodli, co dělat.
Zjistěte, co pro vás OpenAI SDK dělá
Oficiální sady SDK OpenAI pro Python a JavaScript ve výchozím nastavení 2krát zopakují požadavky při odpovědích 408, 409, 429 a 5xx a při chybách připojení s exponenciálním zpoždováním. Můžete to změnit pomocí možnosti max_retries v Pythonu a maxRetries v JavaScriptu.
Opakované pokusy sady SDK zvládnou krátkodobé výkyvy. Vaše aplikace se stále musí rozhodnout, co se stane, když dojdou pokusy o opakování, a jak zpracovat chyby, které opakování nevyřeší. V Pythonu 429 vyvolá RateLimitError a 503 vyvolá InternalServerError, takže ošetřete obojí.
Tip
Chcete-li při testování přesně zjistit, co váš kód pro zpracování chyb obdrží, nastavte max_retries=0 (Python) nebo maxRetries: 0 (JavaScript). Poté znovu zapněte opakované pokusy sady SDK.
Simulovat omezení počtu požadavků OpenAI
Dev Proxy má předvolbu s chybami OpenAI v tabulce. Stáhněte si ho:
devproxy config get openai-throttling
Spusťte Dev Proxy s předvolbou:
devproxy --config-file "~dataFolder/configs/openai-throttling/.devproxy/devproxyrc.json"
U 90 % požadavků na https://api.openai.com/* u přednastavení dojde k selhání s náhodnou chybou z tabulky. U odpovědí na omezení požadavků nastaví hlavičku Retry-After a pomocí RetryAfterPlugin zkontroluje, jestli aplikace čeká po tuto dobu, než rozhraní API znovu zavolá.
Ujistěte se, že vaše aplikace odesílá své požadavky prostřednictvím dev proxy serveru a důvěřuje certifikátu dev proxy serveru. Informace o Node.jsnajdete v tématu Použití dev proxy s aplikacemi Node.js. Další runtime najdete v tématu Řešení potíží s Dev Proxy.
Spusťte aplikaci a zkontrolujte, že:
- Po chybě
rate_limit_exceededneboslow_downaplikace čeká po dobuRetry-After. Pokud někdo volá rozhraní API příliš brzy, Dev Proxy to nahlásí a omezí rychlost požadavku. -
credit_balance_exhaustedPo chybě přestane aplikace volat rozhraní API a zobrazí jasnou zprávu. - Po chybě se vaše aplikace se zpožděním znovu pokusí o akci a když dojdou pokusy o opakování, přejde na záložní řešení nebo místo trasování zásobníku zobrazí jasnou zprávu.
- Vaše aplikace neztratí vaši práci. Například dlouhá konverzace chatu nebo dávková úloha pokračuje po chybě.
Pokud chcete změnit, jak často požadavky selžou, použijte možnost --failure-rate. Pokud například chcete, aby každý požadavek selhal:
devproxy --config-file "~dataFolder/configs/openai-throttling/.devproxy/devproxyrc.json" --failure-rate 100
Simulovat limity tokenů pro Azure OpenAI a další poskytovatele
Předvolba náhodně vrací chyby bez ohledu na počet tokenů, které vaše aplikace používá. Pokud chcete omezit požadavky na základě skutečného použití tokenu, například pokud chcete zjistit, co se stane, když dlouhá konverzace překročí váš limit TPM, použijte LanguageModelRateLimitingPlugin. Funguje s libovolným rozhraním API kompatibilním s OpenAI, včetně Azure OpenAI a místních modelů. Další informace najdete v tématu Omezení tokenů testovacího jazykového modelu.
Další krok
Zjistěte, jak simulovat limity založené na tokenech.
Viz také
- Otestujte moji aplikaci při selháních jazykového modelu – Simulujte neočekávané odpovědi jazykového modelu
- Simulujte chyby z rozhraní OpenAI API – Vytvořte si vlastní soubor chyb OpenAI
- Otestovat, že moje aplikace správně zpracovává omezování – omezování v libovolném rozhraní API
- Použít předvolby – Práce s předvolbami
- RetryAfterPlugin – Ověření chování při opakování