Passer au contenu principal

Documentation Index

Fetch the complete documentation index at: https://apidoc.cometapi.com/llms.txt

Use this file to discover all available pages before exploring further.

Gérez les erreurs CometAPI en déterminant si la requête doit être corrigée ou réessayée. Réessayez 429, les échecs de type timeout et les échecs temporaires du serveur avec un backoff ; ne réessayez pas les requêtes mal formées ni les échecs d’authentification.

Réessayer uniquement les échecs réessayables

Status ou signalRéessayer ?Action
400NonCorrigez le corps de la requête ou les paramètres.
401NonCorrigez la clé API et l’en-tête Authorization.
403Généralement nonSupprimez les champs non pris en charge et vérifiez l’accès au modèle.
429OuiRéessayez avec un backoff exponentiel et du jitter.
500 with invalid_requestNonCorrigez la structure de la requête.
500, 503, 504, 524OuiRéessayez avec un backoff et conservez le request ID.

Ajouter un backoff

L’exemple Python suivant réessaie uniquement les échecs réessayables :
import os
import random
import time
from openai import APIError, OpenAI, RateLimitError

client = OpenAI(
    api_key=os.environ["COMETAPI_KEY"],
    base_url="https://api.cometapi.com/v1",
)

for attempt in range(5):
    try:
        response = client.chat.completions.create(
            model="your-model-id",
            messages=[{"role": "user", "content": "Say hello."}],
        )
        print(response.choices[0].message.content)
        break
    except RateLimitError:
        delay = min(30, 2**attempt) + random.random()
        time.sleep(delay)
    except APIError as error:
        status_code = getattr(error, "status_code", None)
        if status_code in {500, 503, 504, 524}:
            delay = min(30, 2**attempt) + random.random()
            time.sleep(delay)
            continue
        raise
else:
    raise RuntimeError("The request failed after retries.")
La réponse réussie inclut la sortie du modèle :
{
  "choices": [
    {
      "message": {
        "role": "assistant",
        "content": "Hello."
      }
    }
  ],
  "usage": {
    "total_tokens": 9
  }
}

Journaliser le contexte utile

La structure JSON suivante peut être stockée sans risque après suppression des secrets utilisateur et des fichiers volumineux :
{
  "method": "POST",
  "path": "/v1/chat/completions",
  "model": "your-model-id",
  "status": 429,
  "request_id": "request_id_from_error_message",
  "retryable": true
}

Erreurs courantes

ErreurCorrection
Nouvelle tentative après 401Arrêtez les tentatives et faites tourner ou rechargez la clé API.
Nouvelle tentative avec un JSON invalideValidez le corps de la requête avant d’envoyer une autre requête.
Aucun request ID dans les journauxCapturez le corps d’erreur exact avant que votre SDK ne l’encapsule.
Nouvelle tentative immédiate après 429Ajoutez du jitter et réduisez la concurrence.

Liens associés

Last modified on May 28, 2026