Μετάβαση στο περιεχόμενο
Επισκόπηση

Επισκόπηση

Ο χάρτης του API: κάθε endpoint, πώς μοιάζουν ένα αίτημα και ένα σφάλμα, πώς πληρώνονται οι κλήσεις και τι πρέπει να γνωρίζετε όταν έρχεστε από SDK της OpenAI ή της Anthropic.

Endpoints

Κάθε endpoint βρίσκεται κάτω από ένα base URL και εξυπηρετείται μέσω HTTPS.

Base URL
https://api.shannon-ai.com
Endpoint Μορφή Σε τι χρησιμεύει
POST /v1/chat/completions OpenAI Chat Completions Στέλνετε μια συνομιλία, παίρνετε την επόμενη απάντηση. Με ή χωρίς streaming.
POST /v1/messages Anthropic Messages Το ίδιο, στις μορφές αιτήματος και απάντησης των SDK της Anthropic.
POST /v1/responses OpenAI Responses Το ίδιο, στις μορφές του Responses. Το endpoint δεν κρατά κατάσταση: στείλτε τη συνομιλία με κάθε αίτημα.
GET /v1/models Λίστα μοντέλων OpenAI Απαριθμεί τα μοντέλα με παράθυρο συμφραζομένων, τιμές και δυνατότητες. Δεν χρειάζεται κλειδί.
POST /v1/tokenize Shannon API Μετρά τα tokens ενός κειμένου ή ενός αιτήματος chat για φιλοξενούμενο μοντέλο ανοιχτών βαρών. Δωρεάν.
POST /v1/messages/count_tokens Μέτρηση tokens Anthropic Μετρά τα tokens εισόδου ενός αιτήματος Messages για φιλοξενούμενο μοντέλο ανοιχτών βαρών. Δωρεάν.

Τα τρία endpoints που παράγουν κείμενο φτάνουν στα ίδια μοντέλα. Διαλέξτε αυτό του οποίου τη μορφή χρησιμοποιεί ήδη ο κώδικάς σας.

Βασικά του αιτήματος

Κεφαλίδα Περιγραφή
Authorization: Bearer <key> Το κλειδί API σας. Απαιτείται σε κάθε endpoint εκτός από το GET /v1/models, εκτός αν στείλετε x-api-key.
x-api-key: <key> Το ίδιο κλειδί στην κεφαλίδα που στέλνουν τα SDK της Anthropic. Διαβάζεται σε κάθε endpoint.
Content-Type: application/json Απαιτείται σε κάθε POST. Χωρίς αυτήν η απάντηση είναι 415.
x-request-id: <your id> Προαιρετική. Το δικό σας id για το αίτημα· επιστρέφει στην κεφαλίδα απάντησης x-request-id. Χωρίς αυτήν το API δημιουργεί ένα από 12 δεκαεξαδικούς χαρακτήρες.
  • Το σώμα κάθε POST είναι ένα αντικείμενο JSON, έως 32 MiB.
  • Ένα πεδίο που το API δεν γνωρίζει δεν προκαλεί σφάλμα και δεν έχει αποτέλεσμα. Ένα αίτημα γραμμένο για άλλον πάροχο δεν αποτυγχάνει εξαιτίας ενός επιπλέον πεδίου.
  • Ένα γνωστό πεδίο με λάθος τύπο JSON, ή ένα υποχρεωτικό πεδίο που λείπει, απαντάται με 422. Ένα σώμα που δεν είναι έγκυρο JSON απαντάται με 400.
  • Το model είναι ένα από τα ids στη σελίδα Μοντέλα & τιμές. Τα πεζά και τα κεφαλαία δεν παίζουν ρόλο.

Μια απάντηση είναι JSON, ή stream από server-sent events όταν το αίτημα ορίζει το stream σε true. Κάθε endpoint απαντά στη δική του μορφή. Κάθε απάντηση έχει την κεφαλίδα x-request-id.

Από τι περνά ένα αίτημα

Ένα αίτημα ελέγχεται με σταθερή σειρά πριν τρέξει μοντέλο. Απαντά ο πρώτος έλεγχος που αποτυγχάνει, οπότε ένα 401 δεν σας λέει ακόμη τίποτα για το σώμα.

Μορφή σφάλματος

Ένα σφάλμα είναι αντικείμενο JSON με ένα error που περιέχει type και message. Το /v1/messages το τυλίγει όπως το περιμένουν τα SDK της Anthropic· κάθε άλλη διαδρομή χρησιμοποιεί τη μορφή OpenAI.

{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: gpt-4o"
  }
}
  • Διαβάστε το type και το message. Τα code και param υπάρχουν μόνο σε ορισμένα σφάλματα: αντιμετωπίστε τα ως προαιρετικά. Το param είναι πάντα null.
  • Αφού ξεκινήσει ένα stream, η κατάσταση είναι ήδη 200. Μια αποτυχία φτάνει τότε ως frame σφάλματος μέσα στο stream.
  • Κάθε απάντηση σφάλματος φέρει την κεφαλίδα x-request-id.
Κατάσταση Τύπος Πότε
400 invalid_request_error Το σώμα δεν είναι έγκυρο JSON, το id μοντέλου είναι άγνωστο, ή το μοντέλο δεν δέχεται ένα είδος εισόδου που στείλατε.
401 authentication_error Το κλειδί λείπει ή δεν είναι έγκυρο.
404 not_found_error Η διαδρομή δεν υπάρχει.
405 api_error Η διαδρομή υπάρχει, η μέθοδος είναι λάθος.
413 invalid_request_error Το σώμα είναι μεγαλύτερο από 32 MiB.
415 invalid_request_error Το Content-Type δεν είναι application/json.
422 invalid_request_error Ένα πεδίο έχει λάθος τύπο JSON ή λείπει ένα υποχρεωτικό πεδίο.
429 rate_limit_error Το υπόλοιπο δεν καλύπτει το αίτημα, έφτασαν περισσότερα από 120 αιτήματα σε ένα λεπτό, οι κλήσεις Shannon Coder του παραθύρου εξαντλήθηκαν, ή το μοντέλο είναι απασχολημένο. Το μήνυμα λέει ποιο ισχύει.
5xx api_error Κατάσταση 500, 502, 503 ή 504: το αίτημα ήταν έγκυρο και δεν μπόρεσε να απαντηθεί. Στείλτε το ξανά. Ένα 500 μπορεί να φέρει τον τύπο server_error.

Χειρισμός σφαλμάτων

Χρέωση και υπόλοιπο

  • Υπάρχει ένα υπόλοιπο ανά λογαριασμό, και το chat και το API το μοιράζονται: πρώτα το σημερινό ημερήσιο όριο του πλάνου, μετά το αγορασμένο credit. Το API δεν έχει δική του ποσόστωση.
  • Ένα αίτημα δεσμεύει τον προϋπολογισμό εξόδου του (max_tokens, προεπιλογή 4,096) και στη συνέχεια χρεώνεται για τα tokens που χρησιμοποίησε πραγματικά, με την τιμή του μοντέλου.
  • Κάθε απάντηση αναφέρει τους αριθμούς tokens στο usage. Η σελίδα Κλειδιά & χρήση δείχνει το υπόλοιπο και το κόστος κάθε αιτήματος.
  • Κάθε αίτημα εξυπηρετείται ισότιμα. Το μόνο όριο στον ρυθμό αιτημάτων είναι η προστασία από υπερφόρτωση: 120 αιτήματα ανά λεπτό ανά λογαριασμό. Τα αιτήματα που στέλνονται παράλληλα περιμένουν σε ουρά.

Όρια και υπόλοιπο Μοντέλα & τιμές Κλειδιά & χρήση

Πεδία που εξαρτώνται από το μοντέλο

Κάθε μοντέλο δέχεται το ίδιο αίτημα. Μερικά πεδία ισχύουν μόνο σε ορισμένα μοντέλα· ο πίνακας ονομάζει πού. Οι σελίδες των endpoints απαριθμούν κάθε πεδίο.

Πεδίο Περιγραφή Εφαρμόζεται από
system Οδηγίες για το μοντέλο: μήνυμα system στα Chat Completions, system στο Messages, instructions στο Responses. Φιλοξενούμενα μοντέλα ανοιχτών βαρών, shannon-1.6-*, shannon-2-*, shannon-coder-1
temperature Θερμοκρασία δειγματοληψίας. Φιλοξενούμενα μοντέλα ανοιχτών βαρών, shannon-1.6-*, shannon-coder-1
top_p Δειγματοληψία πυρήνα (nucleus). Φιλοξενούμενα μοντέλα ανοιχτών βαρών
seed Σταθερό seed για τη δειγματοληψία. Φιλοξενούμενα μοντέλα ανοιχτών βαρών
stop Έως 4 ακολουθίες διακοπής. Φιλοξενούμενα μοντέλα ανοιχτών βαρών
reasoning_effort Πόσο συλλογίζεται το μοντέλο πριν απαντήσει. reasoning.effort στο Responses, thinking στο Messages. Φιλοξενούμενα μοντέλα ανοιχτών βαρών
web_search Το true αφήνει το μοντέλο να αναζητήσει στον ιστό για αυτό το αίτημα. Πεδίο αυτού του API, στα Chat Completions και Messages. Μοντέλα Shannon εκτός από το shannon-coder-1
max_tokens Ο προϋπολογισμός εξόδου. Σε κάθε μοντέλο ορίζει το ποσό που δεσμεύεται από το υπόλοιπό σας. Ως όριο στο μήκος της απάντησης: φιλοξενούμενα μοντέλα ανοιχτών βαρών, shannon-1.6-*, shannon-coder-1

Chat Completions

Αν έρχεστε από SDK της OpenAI

  • Ορίστε το base URL σε https://api.shannon-ai.com/v1 και το κλειδί στο κλειδί Shannon σας. Οι κλήσεις Chat Completions και Responses δουλεύουν τότε με το SDK ως έχει.
  • Το model πρέπει να είναι id Shannon. Ένα όνομα μοντέλου άλλου παρόχου, όπως το gpt-4o, απαντάται με 400 και unknown model.
  • Ο συλλογισμός έρχεται σε δικό του πεδίο: reasoning_content δίπλα στο content, στο μήνυμα και στα deltas του stream.
  • Ένα stream φέρει πάντα το usage στο τελευταίο του chunk, μαζί με το finish_reason.
  • Μια κλήση εργαλείου σε stream φτάνει ως ένα chunk με ολόκληρο το string arguments.
  • Μια απάντηση έχει μία επιλογή.
  • Οι διαδρομές του API της OpenAI που δεν υπάρχουν στον παραπάνω πίνακα, όπως το /v1/embeddings, απαντώνται με 404.

Αν έρχεστε από SDK της Anthropic

  • Ορίστε το base URL σε https://api.shannon-ai.com, χωρίς /v1, και το κλειδί στο κλειδί Shannon σας. Το SDK το στέλνει ως x-api-key.
  • Το model πρέπει να είναι id Shannon.
  • Το max_tokens είναι προαιρετικό σε αυτό το API. Η προεπιλογή του είναι 4,096.
  • Μια απάντηση περιέχει blocks περιεχομένου τύπου thinking, text και tool_use. Το πρώτο block δεν είναι πάντα το κείμενο: επιλέγετε blocks με βάση το type.
  • Το stop_reason είναι end_turn ή tool_use. Ένα stream ενός μοντέλου Shannon μπορεί να τελειώσει και με max_tokens.
  • Τα anthropic-version και anthropic-beta γίνονται δεκτά, ώστε το SDK να δουλεύει αμετάβλητο. Ένα αίτημα δεν τα χρειάζεται.
  • Τα σφάλματα στο /v1/messages έχουν τη μορφή της Anthropic: {"type": "error", "error": {…}}.

Τα εργαλεία προγραμματισμού που μιλούν αυτές τις μορφές ρυθμίζονται με τον ίδιο τρόπο: base URL, κλειδί και ένα id Shannon ως μοντέλο. Εργαλεία CLI για προγραμματισμό