Chyby
Každý kód chyby, ktorým môže toto API odpovedať, HTTP stav, ktorý ho nesie, a čo s tým robiť. Obálka má tvar OpenAI s jedným prídavkom v mennom priestore.
Obálka
error.message je napísaná pre človeka čítajúceho log, error.type pomenúva triedu zlyhania a error.code je stabilný identifikátor, podľa ktorého sa vetví — text správy nie je kontrakt. Ak má API štruktúrovaný detail (ktorá politika, ktorý endpoint, ktorý model), prichádza v error.llmeu a nikdy nenahrádza tri štandardné polia.
{
"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" }
}
}
typ nasleduje stav
Mapovanie nižšie je to, ktoré API uplatňuje, vygenerované z tej istej tabuľky, ktorá zostavuje jeho odpovede.
| HTTP | typ |
|---|---|
| 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 |
Kódy
Každý kód, ktorý sa môže dostať ku klientovi. Test prechádza zdrojový kód API a zlyhá, keď sa táto tabuľka a kód nezhodujú v jednom či druhom smere, takže kód sa tu nedá vymyslieť ani tam pridať bez zdokumentovania.
| HTTP | code | Čo to znamená a čo robiť |
|---|---|---|
| 400 | invalid_request | Telo požiadavky neprešlo validáciou. |
| 400 | invalid_json | Telo nebolo platné JSON. |
| 400 | invalid_llmeu | Objekt llmeu nebol objektom alebo niesol neznáme pole. |
| 400 | invalid_residency | Požadované umiestnenie údajov nie je jednou zo štyroch tried hostovania. |
| 400 | invalid_data_class | Požadovaná data_class nie je jednou zo štyroch tried. |
| 400 | invalid_retention | Požadovaná retencia nie je zero, 24h, 7d alebo 30d. |
| 400 | invalid_max_tokens | max_tokens nebolo kladné celé číslo. |
| 400 | invalid_stream | stream nebol boolean. |
| 400 | invalid_stop | stop nebol ani reťazec, ani pole reťazcov. |
| 400 | invalid_role | Niektorá správa niesla rolu mimo system, user, assistant a tool. |
| 400 | invalid_tools | tools alebo tool_choice boli chybne naformátované. |
| 400 | missing_model | Pole model je povinné. |
| 400 | missing_messages | messages je povinné a nesmie byť prázdne. |
| 400 | missing_input | input je povinné pre embeddingy. |
| 400 | missing_name | name je povinné. |
| 401 | invalid_api_key | Kľúč chýba, je neznámy, odvolaný alebo expirovaný. |
| 402 | budget_exceeded | Denný rozpočet organizácie je vyčerpaný. Zvýšte max_usd_per_day alebo počkajte, kým sa okno neposunie. |
| 403 | api_key_required | Požiadavka použila reláciu konzoly. Vytvorte API kľúč a pošlite ten namiesto toho. |
| 403 | insufficient_scope | Kľúč je platný, ale nemá rozsah, ktorý tento endpoint vyžaduje. |
| 403 | no_organization | Prihlasovací údaj nie je priradený k organizácii. |
| 403 | model_denied | Politika organizácie odmieta tento model alebo jeho poskytovateľa. |
| 403 | policy_violation | Požiadavka porušuje pravidlo organizačnej politiky. |
| 403 | retention_exceeds_policy | Požadovaná retencia je dlhšia, než politika povoľuje. Toto sa kontroluje pred všetkým ostatným v požiadavke. |
| 403 | data_class_not_allowed | data_class požiadavky nie je jedným z tých, ktoré politika povoľuje. |
| 404 | model_not_found | Pre túto organizáciu neexistuje žiadny takýto model. |
| 404 | hosted_unavailable | Model je v katalógu, ale nie je hostovaný na LLM EU, takže sa nedá volať. |
| 404 | not_found | Trasa existuje, ale objekt nie. |
| 404 | unknown_route | Na tejto ceste nie je zaregistrovaná žiadna trasa. Každý endpoint OpenAI, ktorý nie je uvedený v časti Endpoints, odpovedá takto. |
| 404 | policy_not_found | policy_id v llmeu nepatrí tejto organizácii. |
| 409 | no_endpoint_for_policy | Nič nevyhovuje politike a rezidencii súčasne a ani jedno sa potichu neuvoľňuje. |
| 409 | not_a_text_model | Pomenovaný model nedokáže generovať text: je to model na rozpoznávanie reči, embedding alebo reranker. |
| 409 | conflict | Požiadavka je v konflikte s aktuálnym stavom objektu. |
| 413 | request_too_large | Telo prekročilo veľkostný limit endpointu. |
| 429 | rate_limit_exceeded | Bol dosiahnutý limit z tabuľky rýchlostných limitov. Správa uvádza čas resetovania okna. |
| 500 | internal_error | Neočakávaná chyba na našej strane. |
| 501 | not_implemented | Endpoint sa zámerne neponúka alebo požadovaná funkcia v tomto nasadení neexistuje. |
| 501 | retention_not_implemented | Politika povoľuje inú než nulovú retenciu a implementovaná je len nula, preto je požiadavka odmietnutá namiesto toho, aby bola uložená. |
| 501 | unsupported_n | n väčšie ako 1 nie je podporované. |
| 502 | upstream_error | Žiadny endpoint nedokázal obslúžiť požiadavku po failoveri. Trace zaznamenáva každý pokus. |
| 502 | stream_failed | Stream zlyhal po tom, čo sa už spustil. |
no_endpoint_for_policy znamená, že produkt funguje
409 s týmto kódom znamená, že politika a požiadavka spolu nepripúšťajú žiadny endpoint a router odmietol ticho uvoľniť jedno alebo druhé. Nie je to prechodné: opakovanie bez zmeny požiadavky, politiky alebo umiestnenia údajov zlyhá rovnako. Chyba nesie požadované umiestnenie údajov a trasa (trace) zaznamenáva, prečo bol každý endpoint odmietnutý.
Chyby v rámci streamu
Streamovacia požiadavka, ktorá zlyhá po odoslaní hlavičiek, zapíše chybu ako posledný SSE rámec a potom terminátor, takže klient, ktorý dodržiava formát, vidí zlyhanie namiesto skráteného úspechu.
data: {"error":{"message":"No endpoint could start the stream.","type":"api_error","code":"upstream_error"}}
data: [DONE]