Testování způsobu, jakým vaše aplikace zpracovává limity rychlosti OpenAI

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_exceeded nebo slow_down aplikace čeká po dobu Retry-After. Pokud někdo volá rozhraní API příliš brzy, Dev Proxy to nahlásí a omezí rychlost požadavku.
  • credit_balance_exhausted Po 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é