Σφάλματα
Κάθε κωδικός σφάλματος με τον οποίο μπορεί να απαντήσει αυτό το API, η κατάσταση HTTP που τον μεταφέρει και τι να κάνετε γι' αυτό. Ο φάκελος είναι σε σχήμα OpenAI με μία προσθήκη σε namespace.
Ο φάκελος
Το error.message είναι γραμμένο για ένα άτομο που διαβάζει ένα αρχείο καταγραφής, το error.type ονομάζει την κλάση αποτυχίας, και το error.code είναι το σταθερό αναγνωριστικό στο οποίο βασίζεστε — το κείμενο του μηνύματος δεν αποτελεί σύμβαση. Όπου το API έχει δομημένη λεπτομέρεια (ποια πολιτική, ποιο endpoint, ποιο μοντέλο) αυτή φτάνει στο error.llmeu και δεν αντικαθιστά ποτέ τα τρία τυπικά πεδία.
{
"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" }
}
}
Ο τύπος ακολουθεί την κατάσταση
Η αντιστοίχιση παρακάτω είναι αυτή που εφαρμόζει το API, παραγόμενη από τον ίδιο πίνακα που χτίζει τις απαντήσεις του.
| HTTP | τύπος |
|---|---|
| 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 |
Κωδικοί
Κάθε κωδικός που μπορεί να φτάσει σε έναν πελάτη. Ένας έλεγχος διατρέχει τον πηγαίο κώδικα του API και αποτυγχάνει όταν αυτός ο πίνακας και ο κώδικας διαφωνούν προς οποιαδήποτε κατεύθυνση, οπότε ένας κωδικός δεν μπορεί να επινοηθεί εδώ ή να προστεθεί εκεί χωρίς να τεκμηριωθεί.
| HTTP | code | Τι σημαίνει και τι να κάνετε |
|---|---|---|
| 400 | invalid_request | Το σώμα του αιτήματος απέτυχε στην επικύρωση. |
| 400 | invalid_json | Το σώμα δεν ήταν έγκυρο JSON. |
| 400 | invalid_llmeu | Το αντικείμενο llmeu δεν ήταν αντικείμενο ή περιείχε άγνωστο πεδίο. |
| 400 | invalid_residency | Η ζητούμενη τοποθεσία φιλοξενίας δεν είναι μία από τις τέσσερις κλάσεις φιλοξενίας. |
| 400 | invalid_data_class | Το ζητούμενο data_class δεν είναι μία από τις τέσσερις κλάσεις. |
| 400 | invalid_retention | Η ζητούμενη διατήρηση δεν είναι zero, 24h, 7d ή 30d. |
| 400 | invalid_max_tokens | Το max_tokens δεν ήταν θετικός ακέραιος. |
| 400 | invalid_stream | Το stream δεν ήταν boolean. |
| 400 | invalid_stop | Το stop δεν ήταν ούτε συμβολοσειρά ούτε πίνακας συμβολοσειρών. |
| 400 | invalid_role | Ένα μήνυμα περιείχε ρόλο εκτός των system, user, assistant και tool. |
| 400 | invalid_tools | Το tools ή το tool_choice είχαν λανθασμένη μορφή. |
| 400 | missing_model | Το πεδίο model είναι υποχρεωτικό. |
| 400 | missing_messages | Το messages είναι υποχρεωτικό και δεν πρέπει να είναι κενό. |
| 400 | missing_input | Το input είναι υποχρεωτικό για embeddings. |
| 400 | missing_name | Το name είναι υποχρεωτικό. |
| 401 | invalid_api_key | Το κλειδί λείπει, είναι άγνωστο, ανακλήθηκε ή έληξε. |
| 402 | budget_exceeded | Ο ημερήσιος προϋπολογισμός του οργανισμού έχει εξαντληθεί. Αυξήστε το max_usd_per_day ή περιμένετε να ανανεωθεί το παράθυρο. |
| 403 | api_key_required | Το αίτημα χρησιμοποίησε συνεδρία κονσόλας. Δημιουργήστε ένα API key και στείλτε αυτό αντ' αυτού. |
| 403 | insufficient_scope | Το κλειδί είναι έγκυρο αλλά δεν έχει το scope που απαιτεί αυτό το endpoint. |
| 403 | no_organization | Το διαπιστευτήριο δεν είναι συνδεδεμένο με οργανισμό. |
| 403 | model_denied | Η πολιτική του οργανισμού απαγορεύει αυτό το μοντέλο ή τον πάροχό του. |
| 403 | policy_violation | Το αίτημα παραβιάζει έναν κανόνα της πολιτικής του οργανισμού. |
| 403 | retention_exceeds_policy | Η ζητούμενη διατήρηση είναι μεγαλύτερη από ό,τι επιτρέπει η πολιτική. Αυτό ελέγχεται πριν από οτιδήποτε άλλο σχετικά με το αίτημα. |
| 403 | data_class_not_allowed | Το data_class του αιτήματος δεν είναι ένα από αυτά που επιτρέπει η πολιτική. |
| 404 | model_not_found | Δεν υπάρχει τέτοιο μοντέλο για αυτόν τον οργανισμό. |
| 404 | hosted_unavailable | Το μοντέλο είναι στον κατάλογο αλλά δεν φιλοξενείται στο LLM EU, οπότε δεν μπορεί να κληθεί. |
| 404 | not_found | Η διαδρομή υπάρχει αλλά το αντικείμενο δεν υπάρχει. |
| 404 | unknown_route | Δεν έχει τοποθετηθεί καμία διαδρομή σε αυτό το μονοπάτι. Κάθε endpoint του OpenAI που δεν αναφέρεται στο Endpoints απαντά με αυτό. |
| 404 | policy_not_found | Το policy_id στο llmeu δεν ανήκει σε αυτόν τον οργανισμό. |
| 409 | no_endpoint_for_policy | Τίποτα δεν ικανοποιεί μαζί την πολιτική και την τοποθεσία φιλοξενίας, και κανένα από τα δύο δεν χαλαρώνει σιωπηλά. |
| 409 | not_a_text_model | Το μοντέλο που ονομάστηκε δεν μπορεί να παράγει κείμενο: είναι μοντέλο αναγνώρισης ομιλίας, ενσωμάτωσης ή επανακατάταξης. |
| 409 | conflict | Το αίτημα συγκρούεται με την τρέχουσα κατάσταση του αντικειμένου. |
| 413 | request_too_large | Το σώμα υπερέβη το όριο μεγέθους του τελικού σημείου. |
| 429 | rate_limit_exceeded | Ένα όριο από τον πίνακα ορίων ρυθμού επιτεύχθηκε. Το μήνυμα αναφέρει τον χρόνο επαναφοράς του παραθύρου. |
| 500 | internal_error | Μια απροσδόκητη αποτυχία από την πλευρά μας. |
| 501 | not_implemented | Το τελικό σημείο δεν προσφέρεται σκόπιμα, ή η ζητούμενη δυνατότητα δεν υπάρχει σε αυτή την ανάπτυξη. |
| 501 | retention_not_implemented | Η πολιτική επιτρέπει διατήρηση διάφορη του μηδενός και μόνο το μηδέν υλοποιείται, οπότε το αίτημα απορρίπτεται αντί να αποθηκευτεί. |
| 501 | unsupported_n | Το n μεγαλύτερο του 1 δεν υποστηρίζεται. |
| 502 | upstream_error | Κανένα τελικό σημείο δεν μπόρεσε να εξυπηρετήσει το αίτημα μετά τη μεταβίβαση. Το ίχνος καταγράφει κάθε προσπάθεια. |
| 502 | stream_failed | Η ροή απέτυχε αφού είχε ήδη ξεκινήσει. |
Το no_endpoint_for_policy είναι το προϊόν σε λειτουργία
Ένα 409 με αυτόν τον κωδικό σημαίνει ότι η πολιτική και το αίτημα μαζί δεν επιτρέπουν κανένα endpoint, και ο router αρνήθηκε να χαλαρώσει σιωπηλά οποιοδήποτε από τα δύο. Δεν είναι παροδικό: η επανάληψη χωρίς αλλαγή του αιτήματος, της πολιτικής ή της τοποθεσίας φιλοξενίας αποτυγχάνει με τον ίδιο τρόπο. Το σφάλμα μεταφέρει τη ζητούμενη τοποθεσία φιλοξενίας και το ίχνος καταγράφει γιατί απορρίφθηκε κάθε endpoint.
Σφάλματα μέσα σε ροή
Ένα αίτημα ροής που αποτυγχάνει αφού σταλούν οι κεφαλίδες γράφει το σφάλμα ως τελικό πλαίσιο SSE και έπειτα τον τερματιστή, ώστε ένας πελάτης που ακολουθεί τη μορφή να βλέπει αποτυχία αντί για κολοβωμένη επιτυχία.
data: {"error":{"message":"No endpoint could start the stream.","type":"api_error","code":"upstream_error"}}
data: [DONE]