Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sprachmodell-APIs begrenzen Den Datenverkehr auf 2 Arten gleichzeitig: wie viele Anforderungen Sie pro Minute (RPM) senden und wie viele Token Sie pro Minute (TPM) verwenden. Sie können gut unter Ihrem Anfragelimit bleiben und trotzdem eingeschränkt werden, da einige lange Prompts Ihr Tokenbudget verbraucht haben. Wenn Sie einen der beiden Grenzwerte erreichen, antwortet die API mit 429 Too Many Requests und Ihre App muss warten.
Wie OpenAI, Azure OpenAI und Anthropic Zählen
| Provider | Was ist begrenzt | Wissenswertes |
|---|---|---|
| OpenAI | RPM, Anfragen pro Tag, TPM, Token pro Tag und mehr, pro Organisation und Projekt, pro Modell | Sie stoßen an das Limit, das zuerst erreicht wird. Für den Tokengrenzwert zählt eine Anforderung als der höhere Wert von max_tokens und einer auf ihren Zeichen basierenden Schätzung. Fehlgeschlagene Anfragen werden ebenfalls gezählt. |
| Azure OpenAI | TPM, das Sie den einzelnen Bereitstellungen zuweisen, plus ein dazu proportional festgelegter RPM-Grenzwert | Rpm wird über Fenster von 1 oder 10 Sekunden überprüft, sodass ein Platz ein 429 erhält, auch wenn die Gesamtsumme pro Minute in Ordnung ist. Die Tokenschätzung enthält max_tokens. |
| Anthropic | RPM, Eingabetoken pro Minute (ITPM) und Ausgabetoken pro Minute (OTPM), pro Modell | Die Kapazität wird kontinuierlich aufgefüllt, und 60 U/min können als 1 Anforderung pro Sekunde erzwungen werden. Bei den meisten Modellen werden zwischengespeicherte Eingabetoken nicht auf ITPM angerechnet, und max_tokens Ausgabe-Token werden nicht auf OTPM angerechnet. |
Wenn Sie max_tokens auf 4.000 festgelegt und 200 Token wieder erhalten, zählen OpenAI und Azure OpenAI trotzdem die 4.000 für Ihr Limit. So können Sie 429s erhalten, während Ihre Nutzungsmetriken gut unter Ihrem Kontingent aussehen.
Was ein 429 für jeden Anbieter bedeutet
Nicht alle 429 gehen weg, wenn Sie warten.
| Provider | Warten und wiederholen | Stopp und jemandem Bescheid sagen |
|---|---|---|
| OpenAI | 429 für Anfragen oder Token, 429 slow_down (Ihr Datenverkehr wuchs zu schnell, auch innerhalb Ihrer Grenzen), und 503 server_is_overloaded. Warten Sie, bis Retry-After vorhanden ist. |
429 mit credit_balance_exhausted, organization_spend_limit_exceeded, project_spend_limit_exceeded oder organization_usage_limit_exceeded in error.code. Ein erneuter Versuch stellt den Zugriff nicht wieder her. |
| Azure OpenAI | 429 für das TPM oder die RPM der Bereitstellung, für die Systemkapazität oder für eine vorübergehende Reduzierung Ihres Ratenlimits. Warten Sie auf retry-after-ms. |
Anhaltende 429-Fehler in der Produktion, während Sie unter Ihrem genehmigten Kontingent liegen. Überprüfen Sie die TPM-Zuordnung des Deployments, und öffnen Sie dann eine Supportanfrage. |
| Anthropic | 429 rate_limit_error mit einem retry-after Header, einschließlich Beschleunigungsgrenzwerten nach einem starken Anstieg der Nutzung und 529 overloaded_error. |
429 für die monatliche Ausgabenobergrenze. Es hat keine Kopfzeile retry-after, error.details.error_code ist enforced_spend_limit_reached, und es schlägt weiterhin fehl, bis der Zugriff wieder möglich ist. |
Umgang mit LLM-Ratenlimits
- Überprüfen Sie, welche 429 Sie erhalten haben. Abrechnungs-, Ausgaben- und Kontingentfehler benötigen eine Person, keinen erneuten Versuch.
- Warten Sie so lange, wie die API es verlangt. OpenAI und Anthropic senden
retry-afterin Sekunden. Azure OpenAI sendetretry-after-msin Millisekunden. Ohne einen Hinweis warten Sie mit exponentiellem Backoff mit zufälligem Jitter und deckeln Sie sowohl die Anzahl der Versuche als auch die Gesamtzeit. - Wissen Sie, was Ihr SDK bereits tut. Die OpenAI- und Anthropic Python SDKs wiederholen bei Verbindungsfehlern sowie bei
408,409,429und 5xx Antworten standardmäßig 2 mal. Wenn Sie eine eigene Wiederholungsschleife hinzufügen, deaktivieren Sie die Wiederholungen des SDK, z. B. mitmax_retries=0in Python, wie Azure OpenAI empfiehlt, andernfalls vervielfacht sich die Anzahl der Versuche. - Verkleinere, was zählt. Stellen Sie auf OpenAI und Azure OpenAI
max_tokensnahe der erwarteten Antwortgröße ein. Speichern Sie auf Anthropic wiederholte Inhalte wie Systemanweisungen zwischen. - Allmählich hochfahren. Ein starker Anstieg des Traffics löst die Beschränkungen bei der Beschleunigung von OpenAI
slow_downund Anthropic aus, selbst wenn Sie innerhalb Ihrer Limits bleiben. OpenAI weist darauf hin, dass Sie, sobald Sie 1 Millionen Eingabetoken pro Minute erreicht haben, um höchstens 50 % alle 15 Minuten wachsen. - Geben Sie einen Datenstrom, den Sie bereits gelesen haben, nicht erneut wieder. Ein Fehler nach dem Starten eines Datenstroms kann als Datenstromereignis eingehen, und OpenAI empfiehlt, eine Anfrage nicht automatisch erneut zu senden, nachdem Sie bereits Ausgabe empfangen haben.
- Informieren Sie den Benutzer, wenn eine Anforderung bei einem 429-Fehler stagniert, anstatt ein Ladesymbol anzuzeigen.
So testen Sie, ob Ihre App LLM-Ratenbegrenzungen verarbeitet
| Approach | Was Sie finden | Was Ihnen fehlt |
|---|---|---|
| Mock the SDK client in your tests, or let your coding agent write the mock | Ob Ihr Fehlerzweig ausgeführt wird | Die tatsächlichen Statuscodes, Fehlercodes und Header des Anbieters sowie die eigenen Wiederholungen Ihres SDK. Ihre App benötigt außerdem einen reinen Testschalter, um den Mock zu erreichen. |
| Rufen Sie die echte API auf, bis sie Sie drosselt | Tatsächliches Verhalten | Sie zahlen für jedes Token, und Sie können keine Überladung oder eine Ausgabengrenze bei Bedarf auslösen slow_down. |
| Abfangen des tatsächlichen Datenverkehrs Ihrer App und Zurückgeben der Fehler des Anbieters oder Drosseln der von Ihrer App verwendeten Token | Echte URLs, die Wiederholungsrichtlinie Ihres SDK und die Fehlertexte des Anbieters mit einem von Ihnen ausgewählten Grenzwert | Ihr Code in Isolation. Halten Sie die Komponententests dafür. |
Probieren Sie sie in Ihrer App aus
Dev Proxy fängt die Anforderungen Ihrer App an die Sprachmodell-API ab und gibt die eigenen Fehler des Anbieters zurück, während Ihre App die echte URL aufruft. Laden Sie für OpenAI die Voreinstellung herunter, und starten Sie Dev Proxy damit:
devproxy config get openai-throttling
devproxy --config-file "~dataFolder/configs/openai-throttling/.devproxy/devproxyrc.json"
Die openai-throttling Voreinstellung schlägt 90% von Anforderungen https://api.openai.com/* mit einem zufälligen Fehler fehl: rate_limit_exceeded für TPM oder RPM, slow_down, credit_balance_exhaustedoder 503 server_is_overloaded. Die anthropic-throttling Voreinstellung gilt entsprechend für https://api.anthropic.com/* mit RPM, Eingabetoken, Ausgabetoken und Beschleunigung von 429s und 529 overloaded_error. Beide Voreinstellungen enthalten den RetryAfterPlugin, der Ihnen angibt, wann Ihre App die API erneut aufruft, bevor die retry-after Zeit für eine 429 ist. Die Antworten von 503 und 529 werden nicht überprüft.
Verwenden Sie das LanguageModelRateLimitingPlugin, um auf Grundlage der von Ihrer App tatsächlich verwendeten Token zu drosseln. Es zählt die Eingabeaufforderungs- und Abschlusstoken, die von den einzelnen Antwortberichten gemeldet werden, und gibt 429 zurück retry-after , wenn Ihre App die von Ihnen festgelegten Grenzwerte überschreitet. Es funktioniert mit openAI-kompatiblen APIs, einschließlich Azure OpenAI und lokalen Modellen:
{
"$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
}
}
Das Plug-In reproduziert die max_tokens Schätzung nicht. Der Standardtext 429 verwendet den insufficient_quota Code. Um den Fehlertext zurückzugeben, den Ihre App für eine Ratenbegrenzung erwartet, setzen Sie whenLimitExceeded auf Custom und verweisen Sie customResponseFile auf Ihre eigene Antwort. Zum Installieren von Dev Proxy siehe Dev Proxy einrichten.