Codes d’erreur et réessai
En cas d’erreur, l’API renvoie un code d’état autre que 2xx, et le corps de la réponse est en JSON :
{ "error": { "message": "描述错误", "type": "invalid_request_error", "code": "..." }}Codes d’erreur courants
| Statut HTTP | Cause courante | Traitement recommandé |
|---|---|---|
| 400 | Erreur de paramètres, format du corps de requête non valide | Vérifier les paramètres et le format JSON |
| 401 | Clé manquante / invalide | Vérifier Authorization: Bearer sk-... |
| 403 | Jeton désactivé, aucun accès au groupe de modèles | Vérifier l’état du jeton et le groupe dans la console |
| 404 | Nom du modèle inexistant ou non ouvert | Consulter Vue d’ensemble des modèles |
| 413 | Corps de requête trop volumineux (contexte dépassé) | Réduire les messages ou utiliser un modèle à long contexte |
| 429 | Limitation de débit ou quota insuffisant | Réessayer avec temporisation, voir Limitation de débit et 429 |
| 500 / 502 / 503 | Fluctuation du modèle amont | Réessayer après une courte temporisation, la passerelle basculera automatiquement vers un amont disponible |
Recommandations de réessai
- Pour 429 / 5xx, utiliser une temporisation exponentielle + jitter : par exemple 1 s, 2 s, 4 s, au maximum 3 à 5 fois ;
- 400 / 401 / 403 sont des erreurs déterministes ; les réessais n’ont pas de sens, il faut d’abord corriger la requête ;
- Dans les scénarios idempotents (comme la génération d’images), vérifier l’état final de la dernière requête avant de soumettre à nouveau, afin d’éviter une double facturation ;
- En environnement de production, il est recommandé d’enregistrer les en-têtes de réponse et
error.message, afin de faciliter l’identification de l’étape ayant renvoyé l’erreur.