Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
L’API OpenAI retourne 429 avec le type d’erreur insufficient_quota lorsque votre compte n’avait plus de crédits ou a dépassé une limite de dépense ou d’utilisation. Il s’agit du même code d’état qu’une limitation de débit, mais l’attente de quelques secondes ne le corrigera pas. L’accès revient uniquement une fois que quelqu’un ajoute des crédits, augmente une limite ou que la période mensuelle est réinitialisée. OpenAI indique que réessayer après des erreurs de facturation, de dépenses ou de quota ne rétablira pas l’accès à l’API, et que vous devez consulter error.code pour en identifier la cause précise. Pour plus d’informations, consultez Codes d’erreur.
À quoi ressemblent les erreurs de quota d’OpenAI
Chacune de ces erreurs retourne 429. Le error.type peut toujours être insufficient_quota, donc vérifiez error.code pour savoir celui que vous avez obtenu.
error.code |
Ce que cela signifie | Comment l’accès revient |
|---|---|---|
credit_balance_exhausted |
Votre organisation n’a plus de crédits prépayés. | Ajouter des crédits. |
organization_spend_limit_exceeded |
Votre organisation a atteint sa limite de dépense mensuelle pour tous les projets. | Augmentez ou supprimez la limite, ou attendez la réinitialisation mensuelle. |
project_spend_limit_exceeded |
Le projet a atteint sa limite de dépense mensuelle. D’autres projets continuent de marcher. | Augmentez ou supprimez la limite du projet, ou attendez la réinitialisation mensuelle. |
organization_usage_limit_exceeded |
Votre organisation a atteint la limite d’utilisation mensuelle attribuée par OpenAI. Il est distinct des limites de dépense que vous définissez. | Demandez une limite approuvée plus élevée ou contactez le support OpenAI. |
Comparez-les avec les erreurs « Limite de débit atteinte », comme rate_limit_exceeded et slow_down. Ceux-ci sont temporaires et une nouvelle tentative après une courte attente fonctionne généralement. Pour plus d’informations, consultez les erreurs OpenAI « Rate limit reached ».
Comment gérer les erreurs de quota OpenAI
- Lisez
error.code, pas seulement l’état. Un429seul ne vous indique pas s’il faut réessayer. Traitez les 4 codes du tableau comme « stop » et les codes de limitation de débit comme « attendre et réessayer ». - Arrêtez de réessayer. N’envoyez pas à nouveau la requête et ne laissez pas une boucle de nouvelle tentative continuer à appeler l’API. Jusqu’à ce que quelqu’un corrige le problème de facturation, chaque requête échoue de la même façon.
- Suspendez les appels qui échouent. Une erreur de quota signifie que les requêtes suivantes de la même organisation ou du même projet échouent également. Ignorez-les au lieu d’envoyer chacun d’eux et d’attendre l’erreur.
- Indiquez à l’utilisateur. Expliquez que la fonctionnalité IA n’est pas disponible pour l’instant et que le reste de votre application fonctionne.
- Définissez une alerte. Consignez le code avec un niveau de gravité élevé, ou alertez la personne responsable de la facturation. Le correctif est en dehors de votre code, donc quelqu’un doit le savoir.
Le SDK Python d’OpenAI réessaie les réponses 429 2 fois par défaut. Quoi qu’il retente, votre code obtient finalement RateLimitError le code de facturation, et c’est là que vous vous arrêtez :
import logging
import openai
from openai import OpenAI
client = OpenAI()
logger = logging.getLogger(__name__)
BILLING_CODES = {
"credit_balance_exhausted",
"organization_spend_limit_exceeded",
"project_spend_limit_exceeded",
"organization_usage_limit_exceeded",
}
billing_error: str | None = None
def ask(prompt: str) -> str:
global billing_error
if billing_error:
raise RuntimeError("AI features are paused until billing is fixed.")
try:
response = client.responses.create(model="gpt-4.1", input=prompt)
return response.output_text
except openai.RateLimitError as error:
if error.code in BILLING_CODES:
billing_error = error.code
logger.critical("OpenAI billing error: %s", error.code)
raise
L’indicateur reste défini jusqu’à ce que votre application redémarre. Supprimez-le d’une autre façon si votre application s’exécute pendant longtemps, par exemple avec une action d’administrateur après que quelqu’un a corrigé la facturation.
Comment tester que votre application gère les erreurs de quota OpenAI
Vous voyez rarement une erreur de quota pendant le développement. Votre compte de test dispose de crédits et votre consommation est faible. Ainsi, la façon dont vous testez la gestion des quotas détermine si vous trouvez les bogues avant que vos utilisateurs ne le fassent.
| Approach | Ce que vous trouvez | Ce qui vous manque |
|---|---|---|
| Attendre la mise en production | Échecs réels | Tout fonctionne jusqu’à ce qu’un utilisateur l’active, et la fonctionnalité IA reste en panne jusqu’à ce que quelqu’un s’en aperçoive |
| Simuler l’API dans vos tests ou laisser votre agent de codage écrire la simulation | Si votre branche d’arrêt du flux s’exécute | Corps et codes d’erreur réels d’OpenAI, ainsi que la stratégie de nouvelle tentative de votre Kit de développement logiciel (SDK). Votre application a également besoin d’une option réservée aux tests pour atteindre le mock. |
| Utilisez vos crédits réels ou définissez une limite de dépense minuscule | Comportement réel | Cela coûte de l’argent, et cela bloque toutes les autres applications appartenant à la même organisation ou au même projet |
| Interceptez le trafic réel de votre application et retournez des erreurs de quota à la demande | De vraies URL, votre véritable SDK et politique de nouvelle tentative, et le format d’erreur d’OpenAI | Rien dans votre application ne change, de sorte que cela ne permet donc pas de tester votre code de manière isolée. Conservez vos tests unitaires pour cela. |
Essayez-le dans votre application
Dev Proxy intercepte les requêtes de votre application vers api.openai.com et retourne des erreurs OpenAI, tandis que votre application continue d’appeler les URL réelles. Le openai-throttling préréglage inclut une credit_balance_exhausted erreur parmi les erreurs de limite de débit. Elle retourne 429 avec un type insufficient_quota et sans en-tête Retry-After. Vous pouvez donc vérifier que votre application s’arrête au lieu de réessayer.
Téléchargez le preset et démarrez Dev Proxy avec celui-ci :
devproxy config get openai-throttling
devproxy --config-file "~dataFolder/configs/openai-throttling/.devproxy/devproxyrc.json"
Pour tester uniquement les erreurs de quota, modifiez le fichier du openai-errors.json preset et conservez uniquement la credit_balance_exhausted réponse. Pour tester les codes de limite de dépense et d’utilisation, ajoutez des réponses avec la même structure et une autre code.
Exécutez ensuite votre application comme d’habitude et regardez ce qu’elle fait. Pour installer Dev Proxy, consultez Configurer Dev Proxy.