Der frustrierende Fehler RateLimitError: Error code: 429
tritt häufig bei der Nutzung der (Azure) OpenAI-API auf, selbst wenn das Limit nicht überschritten wird. Es wird gezeigt, wie eine Batch-Logik dabei helfen kann, die Herausforderungen bei der Arbeit mit LLMs zu meistern.
Der Fehler liegt hier häufig in der Größe der Anfrage. Dabei ist es nicht entscheidend, ob der Zugriff direkt über die von OpenAI bereitgestellte API erfolgt, oder über einen Wrapper wie von Langchain zur Verfügung gestellt wird. Eine Lösung lässt sich meist erst nach langer Internetrecherche finden. Der Grund, ein zu großer Text-Input für einen Request führt zu der irritierenden Fehlermeldung.
Nehmen wir an es soll ein RAG-System aufgebaut werden. Dazu müssen die Informationen, welche als Text vorliegen, in einzelne Chunk zerlegt werden. Anschließend müssen die Chunks mithilfe der Embedding-API in Vektoren überführt werden. Als Input dient dabei eine Liste von Texten oder ein einzelner Text. Wie ein möglicher Anwendungsfall aussehen könnte, kann an dieser Stelle nachgelesen werden.
In Python kann die Embedding-API über den Azure OpenAI Client mit der Funktion embeddings.create() erzeugt werden.
Pro Request an die API darf eine maximale Anzahl an Input-Token nicht überschritten werden. Diese ist von der Länge des Eingabetextes oder der Eingabetexte abhängig. Ein Token ist dabei die kleinste Einheit, in der ein Text zerlegt wird. Ein Token kann ein Wort sein oder ein Teil eines Wortes oder ein Satzzeichen siehe Tokenizer OpenAi.
Tipp: Nicht nur die Größe des gesamten Inputs ist relevant, sondern auch eines einzelnen Textes. Dabei ist zu beachten, dass ein einzelner Text oder ein Text aus einem Array die maximal 8192 Token nicht überschreiten darf (openai-python/src/openai/resources/embeddings.py at main · openai/openai-python).
Bei den von OpenAI bereitgestellten Model zum Embedding “text-embedding-3-large"
, kommt es bei der Überschreitung des Tokenlimits pro Request zu der Fehlermeldung:
Error code: 429 - {'error': {'code': '429', 'message': 'Requests to the Embeddings_Create Operation under Azure OpenAI API version 2024-08-01-preview have exceeded call rate limit of your current OpenAI S0 pricing tier. Please retry after 86400 seconds. Please go here:
Dynamics 365 Customer Voice if you would like to further increase the default rate limit.
Der Fehler hat allerdings nichts mit dem “OpenAI S0 Pricing Tier"
zu tun und eine Erhöhung mithilfe des referenzierten Links hilft nicht zur Lösung des Problems. Der Hinweis, es nach 86400 Sekunden oder auch einem Tag erneut zu versuchen, kann somit nicht weiterhelfen. Der Fehler entsteht dadurch, dass ein einzelner Request auf einmal nur eine bestimmte Menge an Tokens verarbeiten kann. Die genaue Anzahl an maximalen Tokens pro Request, scheint dabei zu variieren und liegt nicht bei einem absoluten Wert.
Um das Problem mit den zu großen Input-Token zu lösen, sollte die Anzahl der Input-Token für einen Request klein genug sein, um den Fehler zu umgehen. Beispielsweise kann so die Anzahl der Token für einen Request aus dem Notebook oben mithilfe eines Batch-Jobs beschränkt werden. Der einzelne Request kann nun von dem Embedding Modell verarbeitet werden.
Fazit
Abschließend lässt sich festhalten, dass die ausgegebene Fehlermeldung häufig auf eine Überschreitung des Tokenlimits hinweist. Dies kann frustrierend sein, insbesondere wenn sie fälschlicherweise, wie im Fehlercode erklärt, mit dem “Pricing Tier” in Verbindung gebracht wird.
Um diese Probleme zu vermeiden, ist es ratsam, die Token-Anzahl im Voraus zu überprüfen und gegebenenfalls Texte zu kürzen oder aufzuteilen. So kann sichergestellt werden, dass Anfragen effizient bearbeitet werden und die volle Funktionalität der API genutzt werden kann.
Letztlich ist ein proaktiver Umgang mit den Token-Beschränkungen der Schlüssel zu einer erfolgreichen Integration der OpenAI API in Projekte.
Bei Fragen stehen wir Ihnen gerne zur Verfügung. Weitere Informationen zu unseren Angeboten finden Sie außerdem hier.
zurück zur Blogübersicht