Erori

Fiecare cod de eroare cu care poate răspunde acest API, statusul HTTP care îl transportă și ce să faceți în legătură cu el. Plicul are forma OpenAI, cu o singură adăugare namespaced.

Plicul

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 care să ramificați — textul mesajului nu este un contract. Acolo unde API-ul are detalii structurate (care politică, care endpoint, care 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" }
  }
}

tipul urmează statusul

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

HTTP tip
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 sursa API-ului și eșuează când acest tabel și codul nu sunt de acord în oricare direcție, astfel încât un cod nu poate fi inventat aici sau adăugat acolo fără a fi documentat.

HTTP code Ce înseamnă și ce să faci
400 invalid_request Validarea corpului cererii a eșuat.
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, nici o matrice de șiruri.
400 invalid_role Un mesaj avea un rol în 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. Creș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-o în schimb.
403 insufficient_scope Cheia este validă, dar nu are domeniul de aplicare 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 Retenția solicitată este mai lungă decât permite politica. Acest lucru este verificat înainte de orice altceva despre cerere.
403 data_class_not_allowed data_class al cererii nu este unul permis de politică.
404 model_not_found Nu există un astfel de 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 sub Endpoints răspunde astfel.
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 silențiu.
409 not_a_text_model Modelul numit nu poate genera text: este un model de recunoaștere vocală, de embedding sau de reranking.
409 conflict Cererea intră în conflict cu starea actuală a obiectului.
413 request_too_large Corpul cererii a depășit limita de dimensiune a endpoint-ului.
429 rate_limit_exceeded O limită din tabelul de limite de rată a fost atinsă. Mesajul indică momentul 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 solicitată nu există în această implementare.
501 retention_not_implemented Politica permite o 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. Urmărirea înregistrează fiecare încercare.
502 stream_failed Fluxul a eșuat după ce deja începuse.

no_endpoint_for_policy este produsul care funcționează

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

Erori în interiorul unui flux

O cerere de streaming care eșuează după trimiterea antetelor scrie eroarea ca un cadru SSE final ș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]