DocumentazioneLimiti ed errori

Gestisci

Limiti ed errori

Cosa rifiuta l’API, perché, e cosa deve fare il tuo codice con ogni risposta.

In questa pagina
  1. I limiti
  2. Gli errori
  3. Riprovare correttamente

I limiti

LimiteValoreOltre il limite
Richieste300 al minuto per chiave429, con l’attesa in retry-after
Richieste simultaneeSecondo il tuo piano429, nuovo tentativo dopo 5 secondi
Token al giorno, alla settimana o al meseSecondo il tuo piano429, senza retry-after
Dimensione di una richiesta50 MBRifiutata

Gli errori

CodiceCausaCosa fare
400Richiesta malformata o modello sconosciuto. Il messaggio indica il campo in questione.Correggere la richiesta
401Chiave mancante, sconosciuta, revocata o scadutaVerificare la chiave, senza riprovare in loop
403Modello o funzione non inclusi nel tuo pianoCambiare modello o piano
429Troppe richieste, o tetto di token raggiuntoAttendere retry-after se presente, altrimenti fermarsi
502Il modello non ha risposto correttamenteRiprovare un po’ più tardi
503Servizio temporaneamente non disponibileRiprovare un po’ più tardi

Il corpo di un errore contiene sempre un messaggio leggibile:

json
{
  "error": {
    "message": "model \"max\" is not part of this plan",
    "type": "router_error"
  }
}

Riprovare correttamente

Riprova solo quando l’API ti dice quanto attendere. Un tetto di token raggiunto non si risolve insistendo.

import time
from openai import OpenAI, RateLimitError

client = OpenAI(
    base_url="https://api.learnya.ai/v1",
    api_key=os.environ["LEARNYA_API_KEY"],
    max_retries=0,
)


def complete(**request):
    for attempt in range(5):
        try:
            return client.chat.completions.create(**request)
        except RateLimitError as error:
            # The gateway says how long to wait.
            # A spent token budget says nothing: stop there.
            wait = error.response.headers.get("retry-after")
            if wait is None:
                raise
            time.sleep(int(wait) + attempt)
    raise RuntimeError("still limited after five attempts")