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 Claude retourne 529 avec le type overloaded_error d’erreur lorsque l’API est temporairement surchargée. Selon Anthropic, cela peut se produire lorsque l’API rencontre un trafic élevé pour l’ensemble des utilisateurs. Votre demande est correcte. L’API est occupée, de sorte qu’elle a rejeté la requête. Lorsque votre organisation dépasse ses propres limites de débit, vous recevez un code 429 à la place. Le corps de la réponse a la même forme que toutes les autres erreurs de l’API Claude : un niveau type supérieur de error, un objet error avec type et message, et un request_id que vous pouvez donner à Anthropic prise en charge. Pour plus d’informations, consultez les erreurs de l’API Claude.
529, 429 ou limite de dépense : comment les distinguer
L’API Claude utilise des erreurs d’apparence similaire pour des problèmes très différents. Certaines disparaissent si vous attendez. Ça ne partira pas avant le mois prochain.
| Response | error.type |
retry-after |
Ce que cela signifie | Procédure à suivre |
|---|---|---|---|---|
529 |
overloaded_error |
Utilisez-le s’il est présent | L’API est surchargée pour tous les utilisateurs | Attendez un peu puis réessayez quelques fois |
429 |
rate_limit_error |
Yes | Votre organisation a dépassé ses demandes, jetons d’entrée ou jetons de sortie par minute, ou a augmenté trop vite et a atteint une limite d’accélération | Attendez aussi longtemps que retry-after l’indique |
429 |
rate_limit_error, avec error.details.error_code défini sur enforced_spend_limit_reached |
No | Votre organisation a atteint la limite de dépense mensuelle de son niveau d’utilisation | Ne réessayez pas. L’utilisation s’interrompt jusqu’à 00:00 UTC le premier jour du mois suivant, ou jusqu’à ce que vous passiez à un niveau supérieur. |
400 |
invalid_request_error |
No | L’utilisation a atteint une limite de dépense que vous avez définie sur votre organisation ou votre espace de travail | Augmenter ou supprimer la limite |
Une limite de dépense 429 a le même type d’erreur qu’une limite de débit, de sorte que le code qui réessaie toutes les rate_limit_error continue d’échouer. Anthropic remarque que les nouvelles tentatives échouent jusqu'à ce que l'accès reprenne, y compris les nouvelles tentatives automatiques du Kit de développement logiciel (SDK). Pour plus d’informations, consultez Atteindre votre plafond de dépenses.
Comment gérer un 529
- Vérifiez le code d’état avant de réessayer. Un
529et un429nécessitent des délais d’attente différents, et un429sansretry-aftern’a pas besoin de réessayer du tout. - Renoncer à un 529. Réessayez avec une temporisation exponentielle et une gigue aléatoire, puis arrêtez après quelques tentatives. Si la réponse comporte un en-tête
retry-after, attendez aussi longtemps à la place. - Laissez le Kit de développement logiciel (SDK) effectuer les premiers réessais. Les kits de développement logiciel (SDK) officiels Anthropic retentent les erreurs de connexion, les limites de débit et les erreurs 5xx deux fois par défaut, avec repli exponentiel, et prennent en compte
retry-afterlorsqu'il est présent. Vous pouvez modifier le nombre avecmax_retries(maxRetriesen TypeScript). Lorsque le Kit de développement logiciel (SDK) n’a plus de tentatives, votre code reçoit l’erreur. - Arrêtez de réessayer en cas d’atteinte du plafond de dépenses. Si un 429 n’a pas d’en-tête
retry-after, indiquez-le à l’utilisateur et déclenchez une alerte. - Gardez l’utilisateur informé. Mettre en file d’attente le travail et réessayer ultérieurement, ou afficher un message clair « occupé, réessayez dans une minute » au lieu d’une erreur générique.
Dans le sdk Python, une erreur 429 déclenche anthropic.RateLimitError et tout code d’état 500 ou supérieur, y compris 529, déclenche anthropic.InternalServerError:
import anthropic
client = anthropic.Anthropic(max_retries=4)
def summarize(text: str) -> str | None:
try:
message = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
messages=[{"role": "user", "content": f"Summarize:\n\n{text}"}],
)
except anthropic.RateLimitError as e:
if "retry-after" not in e.response.headers:
# Spend cap: every retry fails until access resumes
alert_admin(e)
return None
raise
except anthropic.InternalServerError as e:
if e.status_code == 529:
# Overloaded after all SDK retries: queue the job for later
queue_for_later(text)
return None
raise
return next(block.text for block in message.content if block.type == "text")
Comment tester que votre application gère un 529
Vous voyez rarement une erreur 529 pendant que vous développez. Cela dépend du trafic de chaque utilisateur de l’API Claude. Vous ne pouvez donc pas le déclencher. La façon dont vous testez 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 | Surcharges effectives | Tout, jusqu’à ce qu’un utilisateur appuie dessus |
| Simuler l’API dans vos tests ou laisser votre agent de codage écrire la simulation | Si votre branche d’erreur s’exécute | les codes d'état réels et les corps d'erreurs de Anthropic, ainsi que la stratégie de nouvelle tentative de votre Kit de développement logiciel (SDK). Votre application a également besoin d’un commutateur réservé aux tests pour atteindre le mock. |
| Appeler l’API réelle jusqu’à ce qu’elle échoue | Comportement réel | Vous ne pouvez pas déclencher un 529 à la demande, et vous ne pouvez pas déclencher un plafond de dépenses en toute sécurité du tout |
| Interceptez le trafic réel de votre application et retournez des 529 et 429 à la demande | URL réelles, votre véritable SDK et politique de réessai, et le format d'erreur propre à Anthropic | Rien dans votre application ne change, de sorte que cela ne teste donc pas votre code de manière isolée. Conservez vos tests unitaires pour cela. |
Essayez-le dans votre application
Dev Proxy intercepte les requêtes https://api.anthropic.com de votre application et retourne des erreurs au format d'erreur d'Anthropic, tandis que votre application continue d'appeler l'URL réelle. Téléchargez un preset et démarrez Dev Proxy avec celui-ci :
devproxy config get anthropic-throttling
devproxy --config-file "~dataFolder/configs/anthropic-throttling/.devproxy/devproxyrc.json"
| Preset | Ce qu’il retourne |
|---|---|
anthropic-throttling |
De manière aléatoire, 1 sur 4 429 rate_limit_error réponses (demandes, jetons d’entrée, jetons de sortie et limite d’accélération) ou un 529 overloaded_error. Sur les 429, le proxy de développement définit retry-after et vous indique quand votre application réessaie d’appeler l’API trop tôt. |
anthropic-random-errors |
Au hasard, l’une des erreurs de la liste d’erreurs de l’API Claude, dont 400, 401, 402, 403, 404, 409, 413, 429, 500, 504 et 529, pour 50% de requêtes |
Aucun préréglage n’inclut un plafond de dépenses 429. Pour tester ce chemin d’accès, ajoutez une réponse sans en-tête retry-after au fichier du anthropic-errors.json préréglage :
{
"statusCode": 429,
"headers": [
{ "name": "content-type", "value": "application/json" }
],
"body": {
"type": "error",
"error": {
"type": "rate_limit_error",
"message": "You have reached your API usage limits.",
"details": { "error_code": "enforced_spend_limit_reached" }
}
}
}
Pour faire échouer chaque requête, de sorte que vous voyez ce qui se passe lorsque le SDK manque de nouvelles tentatives, démarrez Dev Proxy avec --failure-rate 100. Pour plus d’informations, consultez Le taux d’échec des demandes de modification. Pour installer Dev Proxy, consultez Configurer Dev Proxy.