Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In één oogopslag
Doel: Testen hoe uw app openAI-frequentielimieten en overbelastingsfouten verwerkt
Tijd: 10 minuten
Plugins:GenericRandomErrorPlugin, RetryAfterPlugin
Vereisten:Dev Proxy instellen
Uw app werkt in ontwikkeling en faalt vervolgens in productie met 429 Too Many Requests. OpenAI-frequentielimieten zijn afhankelijk van het gebruiksniveau van uw organisatie, uw model en alle anderen die dezelfde organisatie gebruiken, zodat u ze niet opzettelijk betrouwbaar kunt bereiken. Dev Proxy retourneert dezelfde fouten die de OpenAI-API retourneert, zodat u kunt zien wat uw app doet voordat uw gebruikers dat doen.
Ontdek wat OpenAI retourneert
Niet elke OpenAI-fout betekent 'probeer het opnieuw'. Uw app kan ze van elkaar onderscheiden.
| Status | error.code |
Wat betekent het? | Wat uw app moet doen |
|---|---|---|---|
| 429 | rate_limit_exceeded |
U hebt uw limiet voor aanvragen per minuut (RPM) of tokens per minuut (TPM) bereikt. | Wacht op de tijd in de Retry-After koptekst en probeer het opnieuw. |
| 429 | slow_down |
Uw aanvraagfrequentie is te snel toegenomen, zelfs als u binnen uw limieten valt. | Wacht op Retry-After, verminder de aanvraagsnelheid en verhoog deze geleidelijk. |
| 429 | credit_balance_exhausted |
Uw organisatie heeft geen vooruitbetaald tegoed meer. | Probeer het niet opnieuw. Opnieuw proberen herstelt de toegang niet. Vertel de gebruiker of waarschuw een beheerder. |
| 503 | server_is_overloaded |
Het model beschikt momenteel niet over voldoende capaciteit. | Wacht op Retry-After indien aanwezig en probeer het opnieuw met toenemende vertragingen. |
Zie Foutcodes in de OpenAI-documentatie voor de volledige lijst.
Important
Alle 3 fouten in de 429 rijen gebruiken dezelfde statuscode. Als uw app het bij elke 429 opnieuw probeert, blijft deze verzoeken met factureringsfouten opnieuw proberen die nooit herstellen. Controleer error.code om te bepalen wat u moet doen.
Weet wat de OpenAI SDK voor u doet
De officiële OpenAI SDK's voor Python en JavaScript proberen 408, 409, 429 en 5xx-antwoorden en verbindingsfouten, 2 keer standaard met exponentieel uitstel. U kunt dit wijzigen met de max_retries optie in Python en maxRetries in JavaScript.
SDK-herhalingspogingen dekken korte bursts. Uw app moet nog steeds bepalen wat er gebeurt wanneer de nieuwe pogingen uitlopen en hoe u fouten kunt afhandelen die niet opnieuw worden geprobeerd. In Python, een 429 heffen RateLimitError en een 503 heffen InternalServerError, dus omgaan met beide.
Tip
Als u precies wilt zien wat uw foutcode ontvangt, stelt max_retries=0 u (Python) of maxRetries: 0 (JavaScript) in terwijl u test. Schakel het opnieuw proberen van de SDK later weer in.
OpenAI-frequentielimieten simuleren
Dev Proxy heeft een voorinstelling met de OpenAI-fouten in de tabel. Downloaden:
devproxy config get openai-throttling
Start Dev Proxy met de preset:
devproxy --config-file "~dataFolder/configs/openai-throttling/.devproxy/devproxyrc.json"
De voorinstelling mislukt 90% van de aanvragen https://api.openai.com/* met een willekeurige fout uit de tabel. Voor beperkingsreacties wordt de Retry-After header ingesteld en wordt de RetryAfterPlugin gebruikt om te controleren of uw app zo lang wacht voordat de API opnieuw wordt aangeroepen.
Zorg ervoor dat uw app de aanvragen verzendt via Dev Proxy en het Dev Proxy-certificaat vertrouwt. Zie Dev Proxy gebruiken met Node.js toepassingen voor Node.js. Zie Problemen met dev-proxy oplossen voor andere runtimes.
Voer uw app uit en controleer of:
- Na een
rate_limit_exceededofslow_downmeer fouten wacht uw app op deRetry-Aftertijd. Als de API te vroeg wordt aangeroepen, rapporteert Dev Proxy deze en wordt de aanvraag beperkt. - Na een
credit_balance_exhaustedfout stopt uw app met het aanroepen van de API en wordt er een duidelijk bericht weergegeven. - Na een
server_is_overloadedfout wordt uw app opnieuw geprobeerd met een vertraging. Wanneer nieuwe pogingen uitlopen, valt u terug of wordt er een duidelijk bericht weergegeven in plaats van een stack-trace. - Uw app verliest geen werk. Een lang chatgesprek of een batchtaak wordt bijvoorbeeld voortgezet na de fout.
Als u wilt wijzigen hoe vaak aanvragen mislukken, gebruikt u de --failure-rate optie. Als u bijvoorbeeld elke aanvraag te laten mislukken:
devproxy --config-file "~dataFolder/configs/openai-throttling/.devproxy/devproxyrc.json" --failure-rate 100
Tokenlimieten simuleren voor Azure OpenAI en andere providers
De voorinstelling retourneert willekeurig fouten, ongeacht het aantal tokens dat door uw app wordt gebruikt. Als u aanvragen wilt beperken op basis van daadwerkelijk tokengebruik, bijvoorbeeld om te zien wat er gebeurt wanneer een lang gesprek de TPM-limiet overschrijdt, gebruikt u LanguageModelRateLimitingPlugin. Het werkt met elke OpenAI-compatibele API, waaronder Azure OpenAI en lokale modellen. Zie Tokenlimieten van taalmodellen testen voor meer informatie.
Volgende stap
Leer hoe u limieten op basis van tokens kunt simuleren.
Zie ook
- Test mijn app met fouten in het taalmodel - Onverwachte antwoorden van taalmodellen simuleren
- Fouten van OpenAI-API's simuleren - Uw eigen OpenAI-foutenbestand maken
- Testen of mijn toepassing throttling correct afhandelt - Throttling op elke API
- Vooraf ingestelde configuraties gebruiken - Werken met voorinstellingen
- RetryAfterPlugin - Gedrag van opnieuw proberen controleren