Pogreške
Svaki kod pogreške kojim ovaj API može odgovoriti, HTTP status koji ga nosi i što učiniti u vezi s tim. Omotnica je OpenAI oblika s jednim dodatkom u imenskom prostoru.
Omotnica
error.message napisan je za osobu koja čita dnevnik, error.type imenuje klasu kvara, a error.code stabilan je identifikator za grananje — tekst poruke nije ugovor. Gdje API ima strukturirani detalj (koja politika, koji endpoint, koji model), on stiže u error.llmeu i nikad ne zamjenjuje tri standardna polja.
{
"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 prati status
Mapiranje u nastavku ono je koje API primjenjuje, prikazano iz iste tablice koja gradi njegove odgovore.
| HTTP | type |
|---|---|
| 400 | invalid_request_error |
| 401 | authentication_error |
| 402 | insufficient_quota |
| 403 | permission_error |
| 404 | not_found_error |
| 409 | conflict_error |
| 413 | invalid_request_error |
| 422 | invalid_request_error |
| 429 | rate_limit_error |
| 500 | api_error |
| 501 | api_error |
| 502 | api_error |
| 503 | api_error |
Kodovi
Svaki kod koji može doći do klijenta. Test prolazi kroz izvorni kod API-ja i pada kad se ova tablica i kod ne slažu u bilo kojem smjeru, pa se kod ne može izmisliti ovdje ni dodati ondje bez dokumentiranja.
| HTTP | code | Što znači i što učiniti |
|---|---|---|
| 400 | invalid_request | Tijelo zahtjeva nije prošlo validaciju. |
| 400 | invalid_json | Tijelo nije bio valjani JSON. |
| 400 | invalid_llmeu | Objekt llmeu nije bio objekt ili je nosio nepoznato polje. |
| 400 | invalid_residency | Zatražena rezidentnost nije jedna od četiriju klasa hostanja. |
| 400 | invalid_data_class | Zatraženi data_class nije jedna od četiriju klasa. |
| 400 | invalid_retention | Zatraženo zadržavanje nije zero, 24h, 7d ili 30d. |
| 400 | invalid_max_tokens | max_tokens nije bio pozitivan cijeli broj. |
| 400 | invalid_stream | stream nije bio boolean. |
| 400 | invalid_stop | stop nije bio ni string ni polje stringova. |
| 400 | invalid_role | Poruka je nosila ulogu izvan system, user, assistant i tool. |
| 400 | invalid_tools | tools ili tool_choice nisu ispravno oblikovani. |
| 400 | missing_model | Polje model je obavezno. |
| 400 | missing_messages | messages je obavezno i ne smije biti prazno. |
| 400 | missing_input | input je obavezan za embeddings. |
| 400 | missing_name | name je obavezno. |
| 401 | invalid_api_key | Ključ nedostaje, nepoznat je, opozvan ili istekao. |
| 402 | budget_exceeded | Dnevni proračun organizacije je potrošen. Povećajte max_usd_per_day ili pričekajte da se prozor okrene. |
| 403 | api_key_required | Zahtjev je koristio konzolnu sesiju. Izradite API ključ i pošaljite ga umjesto toga. |
| 403 | insufficient_scope | Ključ je valjan, ali mu nedostaje opseg koji ovaj endpoint zahtijeva. |
| 403 | no_organization | Vjerodajnica nije povezana s organizacijom. |
| 403 | model_denied | Politika organizacije zabranjuje ovaj model ili njegovog pružatelja. |
| 403 | policy_violation | Zahtjev krši pravilo politike organizacije. |
| 403 | retention_exceeds_policy | Zatraženo zadržavanje je dulje nego što politika dopušta. To se provjerava prije svega ostalog u vezi sa zahtjevom. |
| 403 | data_class_not_allowed | data_class zahtjeva nije dopušten politikom. |
| 404 | model_not_found | Ne postoji takav model za ovu organizaciju. |
| 404 | hosted_unavailable | Model je u katalogu, ali nije hostan na LLM EU, pa se ne može pozvati. |
| 404 | not_found | Ruta postoji, ali objekt ne postoji. |
| 404 | unknown_route | Nijedna ruta nije montirana na ovoj putanji. Svaki OpenAI endpoint koji nije naveden pod Endpoints odgovara ovim. |
| 404 | policy_not_found | policy_id u llmeu ne pripada ovoj organizaciji. |
| 409 | no_endpoint_for_policy | Ništa ne zadovoljava politiku i rezidentnost zajedno, i nijedno se ne ublažava tiho. |
| 409 | not_a_text_model | Navedeni model ne može generirati tekst: to je model za prepoznavanje govora, embedding ili reranker. |
| 409 | conflict | Zahtjev je u sukobu s trenutnim stanjem objekta. |
| 413 | request_too_large | Tijelo je premašilo ograničenje veličine endpointa. |
| 429 | rate_limit_exceeded | Dosegnuto je ograničenje iz tablice ograničenja brzine. Poruka navodi vrijeme resetiranja prozora. |
| 500 | internal_error | Neočekivana greška na našoj strani. |
| 501 | not_implemented | Endpoint se namjerno ne nudi ili tražena mogućnost ne postoji u ovoj implementaciji. |
| 501 | retention_not_implemented | Politika dopušta zadržavanje različito od nule, a implementirano je samo nula, pa se zahtjev odbija umjesto da se pohrani. |
| 501 | unsupported_n | n veći od 1 nije podržan. |
| 502 | upstream_error | Nijedan endpoint nije mogao poslužiti zahtjev nakon prebacivanja. Trag bilježi svaki pokušaj. |
| 502 | stream_failed | Stream je pao nakon što je već započeo. |
no_endpoint_for_policy znači da proizvod radi
409 s ovim kodom znači da politika i zahtjev zajedno ne prihvaćaju nijedan endpoint i usmjerivač je odbio tiho ublažiti bilo koje od njih. To nije prolazno: ponovni pokušaj bez promjene zahtjeva, politike ili rezidentnosti završava jednako. Pogreška nosi zatraženu rezidentnost, a trag bilježi zašto je svaki endpoint odbijen.
Pogreške unutar streama
Streaming zahtjev koji ne uspije nakon što su zaglavlja poslana zapisuje pogrešku kao posljednji SSE okvir, a zatim terminator, pa klijent koji slijedi format vidi neuspjeh umjesto skraćenog uspjeha.
data: {"error":{"message":"No endpoint could start the stream.","type":"api_error","code":"upstream_error"}}
data: [DONE]