Erori

Fiecare cod de eroare cu care poate răspunde acest API, statusul HTTP care îl transportă și ce să faceți în privința lui. Anvelopa are forma OpenAI, cu o singură adăugare într-un spațiu de nume.

Anvelopa

error.message este scris pentru o persoană care citește un jurnal, error.type numește clasa de eșec, iar error.code este identificatorul stabil pe baza căruia să ramificați — textul mesajului nu este un contract. Acolo unde API-ul are detalii structurate (ce politică, ce endpoint, ce model), acestea sosesc în error.llmeu și nu înlocuiesc niciodată cele trei câmpuri standard.

{
  "error": {
    "message": "No endpoint satisfies residency eu-owned. Residency is never relaxed silently.",
    "type": "conflict_error",
    "code": "no_endpoint_for_policy",
    "llmeu": { "requested": "llmeu-auto" }
  }
}

type urmează status

Maparea de mai jos este cea pe care o aplică API-ul, generată din același tabel care îi construiește răspunsurile.

HTTP type
400invalid_request_error
401authentication_error
402insufficient_quota
403permission_error
404not_found_error
409conflict_error
413invalid_request_error
422invalid_request_error
429rate_limit_error
500api_error
501api_error
502api_error
503api_error

Coduri

Fiecare cod care poate ajunge la un client. Un test parcurge codul sursă al API-ului și eșuează atunci când acest tabel și codul nu concordă în nicio direcție, așa că un cod nu poate fi inventat aici sau adăugat acolo fără a fi documentat.

HTTP code Ce înseamnă și ce să faceți
400 invalid_request Corpul cererii nu a trecut validarea.
400 invalid_json Corpul nu a fost JSON valid.
400 invalid_llmeu Obiectul llmeu nu a fost un obiect sau conținea un câmp necunoscut.
400 invalid_residency Rezidența solicitată nu este una dintre cele patru clase de găzduire.
400 invalid_data_class data_class solicitată nu este una dintre cele patru clase.
400 invalid_retention Retenția solicitată nu este zero, 24h, 7d sau 30d.
400 invalid_max_tokens max_tokens nu a fost un întreg pozitiv.
400 invalid_stream stream nu a fost un boolean.
400 invalid_stop stop nu a fost nici un șir de caractere, nici un tablou de șiruri de caractere.
400 invalid_role Un mesaj conținea un rol din afara system, user, assistant și tool.
400 invalid_tools tools sau tool_choice a fost malformat.
400 missing_model Câmpul model este obligatoriu.
400 missing_messages messages este obligatoriu și nu trebuie să fie gol.
400 missing_input input este obligatoriu pentru embeddings.
400 missing_name name este obligatoriu.
401 invalid_api_key Cheia lipsește, este necunoscută, revocată sau expirată.
402 budget_exceeded Bugetul zilnic al organizației este epuizat. Mărește max_usd_per_day sau așteaptă să se reseteze fereastra.
403 api_key_required Cererea a folosit o sesiune de consolă. Creează o cheie API și trimite acea cheie în schimb.
403 insufficient_scope Cheia este validă, dar nu are scope-ul cerut de acest endpoint.
403 no_organization Acreditarea nu este atașată unei organizații.
403 model_denied Politica organizației interzice acest model sau furnizorul său.
403 policy_violation Cererea încalcă o regulă a politicii organizației.
403 retention_exceeds_policy Perioada de retenție cerută este mai lungă decât permite politica. Acest lucru este verificat înainte de orice altceva legat de cerere.
403 data_class_not_allowed data_class al cererii nu este unul permis de politică.
404 model_not_found Nu există acest model pentru această organizație.
404 hosted_unavailable Modelul este în catalog, dar nu este găzduit pe LLM EU, așa că nu poate fi apelat.
404 not_found Ruta există, dar obiectul nu.
404 unknown_route Nu este montată nicio rută la această cale. Fiecare endpoint OpenAI care nu este listat la Endpoints răspunde cu aceasta.
404 policy_not_found policy_id din llmeu nu aparține acestei organizații.
409 no_endpoint_for_policy Nimic nu satisface politica și rezidența împreună, iar niciuna nu este relaxată în mod silențios.
409 not_a_text_model Modelul numit nu poate genera text: este un model de recunoaștere a vorbirii, de embedding sau de reranking.
409 conflict Cererea intră în conflict cu starea actuală a obiectului.
413 request_too_large Corpul a depășit limita de dimensiune a endpoint-ului.
429 rate_limit_exceeded S-a atins o limită din tabelul de rate-limit. Mesajul indică ora de resetare a ferestrei.
500 internal_error O eroare neașteptată de partea noastră.
501 not_implemented Endpoint-ul nu este oferit intenționat sau capabilitatea cerută nu există în această implementare.
501 retention_not_implemented Politica permite o perioadă de retenție diferită de zero, iar doar zero este implementat, așa că cererea este refuzată în loc să fie stocată.
501 unsupported_n n mai mare decât 1 nu este acceptat.
502 upstream_error Niciun endpoint nu a putut servi cererea după failover. Trace-ul înregistrează fiecare încercare.
502 stream_failed Fluxul a eșuat după ce deja începuse.

no_endpoint_for_policy înseamnă că produsul funcționează

Un 409 cu acest cod înseamnă că politica și cererea împreună nu admit niciun endpoint, iar routerul a refuzat să relaxeze tacit oricare dintre ele. Nu este tranzitoriu: reîncercarea fără a schimba cererea, politica sau rezidența eșuează la fel. Eroarea poartă rezidența solicitată, iar urma înregistrează de ce a fost respins fiecare endpoint.

Erori în interiorul unui flux

O cerere în streaming care eșuează după trimiterea antetelor scrie eroarea ca ultim cadru SSE și apoi terminatorul, astfel încât un client care respectă formatul vede un eșec în loc de un succes trunchiat.

data: {"error":{"message":"No endpoint could start the stream.","type":"api_error","code":"upstream_error"}}

data: [DONE]