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

Chat Completions

Το POST /v1/chat/completions δέχεται μια συνομιλία και επιστρέφει το επόμενο μήνυμα του μοντέλου σε μορφή OpenAI Chat Completions. Χρησιμοποιήστε το από οποιοδήποτε OpenAI SDK ή με απλό HTTP· αυτή η σελίδα είναι η αναφορά πεδίο προς πεδίο.

POST https://api.shannon-ai.com/v1/chat/completions

Το μικρότερο αίτημα είναι ένα id μοντέλου και ένα μήνυμα χρήστη.

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com/v1",
)

response = client.chat.completions.create(
    model="shannon-3",
    messages=[{"role": "user", "content": "Say hello in one sentence."}],
)

print(response.choices[0].message.content)

Η απάντηση είναι ένα αντικείμενο JSON:

200 JSON
{
  "id": "chatcmpl-5f0c1e7a9b3d4c62a8e1f07d2b46c9a3",
  "object": "chat.completion",
  "created": 1791625200,
  "model": "shannon-3",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "Hello, it is good to meet you.",
        "reasoning_content": "The user wants a greeting in one sentence. Keep it short and friendly."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 1184,
    "completion_tokens": 46,
    "total_tokens": 1230
  }
}

Κεφαλίδες

Κεφαλίδες αιτήματος

Κεφαλίδα Τιμή Περιγραφή
Authorization Bearer YOUR_API_KEY Το κλειδί API σας. Αντί γι' αυτό γίνεται δεκτό το x-api-key: YOUR_API_KEY σε κάθε endpoint.
Content-Type application/json Υποχρεωτικό. Οποιαδήποτε άλλη τιμή επιστρέφει 415.
x-request-id Προαιρετικό. Το δικό σας id για το αίτημα. Επιστρέφεται αμετάβλητο στην απάντηση.

Κεφαλίδες απάντησης

Κεφαλίδα Περιγραφή
x-request-id Σε κάθε απάντηση, συμπεριλαμβανομένων σφαλμάτων και streams: η τιμή που στείλατε ή 12 δεκαεξαδικοί χαρακτήρες όταν δεν στείλατε καμία. Αναφέρετέ την όταν αναφέρετε ένα πρόβλημα.
content-type application/json, ή text/event-stream όταν το stream είναι true.

Πεδία αιτήματος

Μόνο το messages είναι υποχρεωτικό. Η στήλη Εφαρμόζεται από ονομάζει τα μοντέλα στα οποία ένα πεδίο αλλάζει την απάντηση. Τα φιλοξενούμενα μοντέλα ανοιχτών βαρών είναι τα δώδεκα ids της λίστας μοντέλων· η οικογένεια Shannon 3 είναι τα shannon-3, shannon-3-pro, shannon-3.1 και shannon-3.1-pro. Μοντέλα & τιμές

Πεδίο Τύπος Προεπιλογή Περιγραφή Εφαρμόζεται από
model string shannon-1.6-lite Το μοντέλο που απαντά: ένα id από τη λίστα μοντέλων. Στείλτε το με κάθε αίτημα. Η αντιστοίχιση δεν κάνει διάκριση πεζών-κεφαλαίων. Ένα id που δεν είναι δημοσιευμένο επιστρέφει 400 unknown model. Όλα τα μοντέλα
messages array Υποχρεωτικό. Η συνομιλία, με το παλαιότερο μήνυμα πρώτο. Δείτε παρακάτω Μηνύματα. Όλα τα μοντέλα
stream boolean false Το true στέλνει την απάντηση ως server-sent events καθώς γράφεται. Όλα τα μοντέλα
max_tokens integer 4096 Ανώτατο όριο της απάντησης, σε tokens. Μια τιμή εκτός του εύρους 1 έως 65,536 μετακινείται μέσα σε αυτό το εύρος. Είναι επίσης το ποσό που δεσμεύεται από το υπόλοιπό σας όσο εκτελείται το αίτημα. Δείτε παρακάτω Μήκος εξόδου. Φιλοξενούμενα μοντέλα ανοιχτών βαρών, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
max_completion_tokens integer Ίδιο με το max_tokens. Όταν σταλούν και τα δύο, χρησιμοποιείται το max_tokens. Φιλοξενούμενα μοντέλα ανοιχτών βαρών, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
temperature number Θερμοκρασία δειγματοληψίας. Στα φιλοξενούμενα μοντέλα ανοιχτών βαρών η προεπιλογή είναι 1 και οι τιμές διατηρούνται μεταξύ 0 και 2. Φιλοξενούμενα μοντέλα ανοιχτών βαρών, shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1
top_p number 0.95 Δειγματοληψία nucleus. Οι τιμές διατηρούνται μεταξύ 0 και 1. Φιλοξενούμενα μοντέλα ανοιχτών βαρών
seed integer Seed του sampler, οποιοσδήποτε ακέραιος. Χωρίς αυτό, το seed προκύπτει από το μοντέλο και τη συνομιλία, οπότε το ίδιο αίτημα που στέλνεται δύο φορές χρησιμοποιεί το ίδιο seed. Φιλοξενούμενα μοντέλα ανοιχτών βαρών
stop string | array Ένα string ή ένας πίνακας από strings. Χρησιμοποιούνται έως 4. Η απάντηση τελειώνει πριν από το πρώτο που εμφανίζεται· το ίδιο το κείμενο διακοπής δεν επιστρέφεται. Φιλοξενούμενα μοντέλα ανοιχτών βαρών
reasoning_effort string high Πόσο συλλογίζεται το μοντέλο πριν απαντήσει: off, low, medium ή high. Τα none και minimal σημαίνουν off, το default σημαίνει medium, το max σημαίνει high. Οποιαδήποτε άλλη τιμή επιστρέφει 400. Φιλοξενούμενα μοντέλα ανοιχτών βαρών
reasoning object Η ίδια ρύθμιση σε μορφή αντικειμένου: {"effort": "low"}. Όταν σταλούν και τα δύο, χρησιμοποιείται το reasoning_effort. Φιλοξενούμενα μοντέλα ανοιχτών βαρών
tools array Οι συναρτήσεις που μπορεί να καλέσει το μοντέλο, η καθεμία ως {"type": "function", "function": {"name", "description", "parameters"}}. Οι κλήσεις του μοντέλου επιστρέφονται στο tool_calls· τις εκτελεί ο κώδικάς σας. Όλα τα μοντέλα
tool_choice string | object auto Το "auto" αφήνει το μοντέλο να αποφασίσει. Το "required" το αναγκάζει να καλέσει εργαλείο. Το {"type": "function", "function": {"name": "…"}} το αναγκάζει να καλέσει εκείνο το εργαλείο. Φιλοξενούμενα μοντέλα ανοιχτών βαρών
response_format object {"type": "json_object"} για απάντηση JSON, ή {"type": "json_schema", "json_schema": {…}} για απάντηση που ακολουθεί το schema σας. Όλα τα επίπεδα Shannon· φιλοξενούμενα μοντέλα ανοιχτών βαρών όπως αναγράφεται ανά id
web_search boolean false Το true αφήνει το μοντέλο να αναζητήσει στον ιστό πριν απαντήσει. shannon-1.6-*, shannon-2-*, οικογένεια Shannon 3

Άλλα πεδία του OpenAI, όπως n, user, stream_options, parallel_tool_calls, presence_penalty, frequency_penalty, logit_bias, logprobs, metadata, store και prompt_cache_key, γίνονται δεκτά ώστε ο υπάρχων κώδικας client να τρέχει αμετάβλητος. Δεν αλλάζουν την απάντηση: υπάρχει πάντα μία επιλογή και ένα stream τελειώνει πάντα με χρήση.

Ένα πεδίο με λάθος τύπο JSON, για παράδειγμα "max_tokens": "100", επιστρέφει 422. Το ίδιο ισχύει για αίτημα χωρίς messages.

Τα εργαλεία, η δομημένη έξοδος, ο συλλογισμός και η αναζήτηση στον ιστό έχουν η καθεμία τη δική της σελίδα: Κλήση συναρτήσεων, Δομημένες έξοδοι, Προσπάθεια συλλογισμού, Ενσωματωμένη αναζήτηση ιστού.

Ένα αίτημα με επιλογές

Αυτό το αίτημα ορίζει ένα μήνυμα system, τα πεδία δειγματοληψίας και την προσπάθεια συλλογισμού. Χρησιμοποιεί φιλοξενούμενο μοντέλο ανοιχτών βαρών, το οποίο τα εφαρμόζει όλα.

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com/v1",
)

response = client.chat.completions.create(
    model="DeepSeek-V4-Flash-0731-W4A16-AUTOROUND-REAP",
    messages=[
        {"role": "system", "content": "You are a physics teacher. Answer in two sentences."},
        {"role": "user", "content": "Why is the sky blue?"},
    ],
    max_tokens=512,
    temperature=0.3,
    top_p=0.9,
    seed=7,
    stop=["\n\n"],
    reasoning_effort="low",
)

message = response.choices[0].message
print(message.reasoning_content)  # the reasoning
print(message.content)            # the answer
print(response.usage)

Η απάντηση έχει την ίδια μορφή με την παραπάνω. Το usage της προσθέτει δύο λεπτομέρειες στα φιλοξενούμενα μοντέλα ανοιχτών βαρών: τα tokens prompt που διαβάστηκαν από το cache και τα tokens που δαπανήθηκαν στον συλλογισμό.

200 JSON
{
  "usage": {
    "prompt_tokens": 31,
    "completion_tokens": 62,
    "total_tokens": 93,
    "prompt_tokens_details": {
      "cached_tokens": 0
    },
    "completion_tokens_details": {
      "reasoning_tokens": 21
    }
  }
}

Μήκος εξόδου

Το max_tokens κάνει δύο πράγματα. Πρώτον, είναι ο αριθμός των tokens που δεσμεύονται από το υπόλοιπό σας όταν ξεκινά το αίτημα. Όταν ολοκληρωθεί η απάντηση, το ποσό αυτό αντικαθίσταται από τα tokens που χρησιμοποίησε το αίτημα. Αν το max_tokens είναι μεγαλύτερο από όσο απομένει στο υπόλοιπό σας, το αίτημα επιστρέφει 429 Quota exceeded ακόμη κι αν η ίδια η απάντηση θα χωρούσε. Στείλτε χαμηλότερο max_tokens για να δεσμευτεί λιγότερο.

Το shannon-coder-1 μετριέται διαφορετικά σε αυτό το endpoint: κάθε αίτημα είναι μία από τις κλήσεις Shannon Coder του πλάνου σας και δεν δεσμεύονται tokens γι' αυτό. Όρια και υπόλοιπο

Δεύτερον, περιορίζει το μήκος της απάντησης σε αυτά τα μοντέλα:

Μοντέλα Τι κάνει το max_tokens
shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 Η απάντηση σταματά όταν φτάσει το όριο. Ένα stream τότε τελειώνει με finish_reason length.
Φιλοξενούμενα μοντέλα ανοιχτών βαρών Το κείμενο της απάντησης σταματά στο max_tokens. Ο συλλογισμός δεν προσμετράται σε αυτό. Τιμές κάτω από 256 λειτουργούν ως 256.

Χωρίς max_tokens ή max_completion_tokens, η τιμή είναι 4,096. Στο shannon-coder-1 είναι 65,536.

Μηνύματα

Κάθε μήνυμα είναι αντικείμενο με role και content. Το content είναι string ή πίνακας από μέρη όταν το μήνυμα φέρει περισσότερα από κείμενο.

Ρόλος Περιγραφή Εφαρμόζεται από
system Οδηγίες για το μοντέλο. Βάλτε το πρώτο. Στα επίπεδα Shannon χρησιμοποιείται το πρώτο μήνυμα system. Φιλοξενούμενα μοντέλα ανοιχτών βαρών, shannon-1.6-*, shannon-2-*, shannon-coder-1
developer Διαβάζεται ως system. Φιλοξενούμενα μοντέλα ανοιχτών βαρών
user Αυτό που ρωτάτε. Στα επίπεδα Shannon το τελευταίο μήνυμα user είναι το prompt και τα μηνύματα πριν από αυτό είναι το ιστορικό. Όλα τα μοντέλα
assistant Προηγούμενες απαντήσεις του μοντέλου. Κρατήστε τα tool_calls του όταν στέλνετε αποτέλεσμα εργαλείου μετά από αυτό. Όλα τα μοντέλα
tool Το αποτέλεσμα μιας κλήσης εργαλείου: το tool_call_id περιέχει το id της κλήσης και το content το αποτέλεσμα ως string. Όλα τα μοντέλα

Με id της οικογένειας Shannon 3, βάλτε τις οδηγίες που πρέπει να ισχύουν στο μήνυμα user.

Στα επίπεδα Shannon ένα αίτημα χωρίς κείμενο χρήστη και χωρίς tools επιστρέφει 400 No user message provided.

Μέρη περιεχομένου

Μέρος Περιγραφή Διαθέσιμο σε
{"type": "text", "text": "…"} Απλό κείμενο. Όλα τα μοντέλα
{"type": "image_url", "image_url": {"url": "…"}} Μια εικόνα, ως URL data: με περιεχόμενο base64 ή ως URL http(s). Οικογένεια Shannon 3, shannon-1.6-lite, shannon-1.6-pro και τα φιλοξενούμενα μοντέλα ανοιχτών βαρών που δηλώνουν είσοδο εικόνας
{"type": "file", "source": {"type": "base64", "media_type": "application/pdf", "data": "…"}} Ένα έγγραφο (PDF, Word, PowerPoint ή Excel), ως base64 ή με URL. Οικογένεια Shannon 3

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

Το αντικείμενο απάντησης

Πεδίο Τύπος Περιγραφή
id string chatcmpl- ακολουθούμενο από 32 δεκαεξαδικούς χαρακτήρες.
object string Πάντα chat.completion.
created integer Ώρα της απάντησης, σε δευτερόλεπτα Unix.
model string Το κανονικό id του μοντέλου που απάντησε. Μπορεί να διαφέρει στην ορθογραφία από το id που στείλατε.
choices array Πάντα ακριβώς μία επιλογή, με index 0.
choices[0].message.role string Πάντα assistant.
choices[0].message.content string | null Το κείμενο της απάντησης. Με tool_calls είναι null στα επίπεδα Shannon· τα φιλοξενούμενα μοντέλα ανοιχτών βαρών μπορούν να στείλουν κείμενο δίπλα στις κλήσεις.
choices[0].message.reasoning_content string | null Ο συλλογισμός που έγραψε το μοντέλο πριν από την απάντηση, ή null όταν δεν υπάρχει.
choices[0].message.tool_calls array Υπάρχει μόνο όταν το μοντέλο καλεί εργαλεία. Κάθε εγγραφή έχει ένα id, type function και function με το name και τα arguments ως string JSON.
choices[0].message.annotations array Μόνο σε αίτημα με web_search: true του οποίου η αναζήτηση βρήκε κάτι. Ένα url_citation για κάθε πηγή που κατονομάζει ένας δείκτης στο content, με url, title, start_index και end_index (η θέση του δείκτη, μετρημένη σε χαρακτήρες, το τέλος δεν περιλαμβάνεται).
choices[0].finish_reason string Γιατί τελείωσε η απάντηση. Δείτε Λόγοι ολοκλήρωσης.
usage object Τα tokens του αιτήματος. Δείτε Χρήση.
sources array Μόνο σε αίτημα με web_search: true του οποίου η αναζήτηση βρήκε κάτι: τα αποτελέσματα που δόθηκαν στο μοντέλο, καθένα με index, title και url. Το [1] στην απάντηση είναι η εγγραφή με index 1.

Λόγοι ολοκλήρωσης

finish_reason Περιγραφή
stop Το μοντέλο ολοκλήρωσε την απάντησή του ή εμφανίστηκε ένα string stop.
tool_calls Το μοντέλο καλεί ένα ή περισσότερα εργαλεία. Εκτελέστε τα και στείλτε τα αποτελέσματα σε μηνύματα tool.
length Η απάντηση κόπηκε στο όριο εξόδου. Αναφέρεται σε streams των shannon-1.6-lite, shannon-1.6-pro, shannon-coder-1 και της οικογένειας Shannon 3.

Μια απάντηση χωρίς streaming αναφέρει stop ή tool_calls.

Χρήση

Πεδίο Τύπος Περιγραφή Διαθέσιμο σε
usage.prompt_tokens integer Tokens εισόδου. Όλα τα μοντέλα
usage.completion_tokens integer Tokens εξόδου: συλλογισμός, απάντηση και κλήσεις εργαλείων μαζί. Όλα τα μοντέλα
usage.total_tokens integer prompt_tokens συν completion_tokens. Όλα τα μοντέλα
usage.prompt_tokens_details.cached_tokens integer Το μέρος του prompt_tokens που διαβάστηκε από το prompt cache. Φιλοξενούμενα μοντέλα ανοιχτών βαρών
usage.completion_tokens_details.reasoning_tokens integer Το μέρος του completion_tokens που δαπανήθηκε στον συλλογισμό. Φιλοξενούμενα μοντέλα ανοιχτών βαρών

Στα φιλοξενούμενα μοντέλα ανοιχτών βαρών, το prompt_tokens είναι τα μηνύματά σας και οι ορισμοί εργαλείων μετρημένα με το δικό του tokenizer του μοντέλου, συν τα tokens τυχόν εικόνων. Τα endpoints μέτρησης tokens επιστρέφουν τον ίδιο αριθμό πριν στείλετε. Καταμέτρηση tokens

Στα επίπεδα Shannon, το prompt_tokens μετρά ό,τι διάβασε το μοντέλο για να γράψει την απάντηση, οπότε είναι μεγαλύτερο από το κείμενο των μηνυμάτων σας μόνο.

Streaming

Με το stream ορισμένο σε true, η απάντηση φτάνει ως συμβάντα chat.completion.chunk και τελειώνει με data: [DONE]. Το τελευταίο chunk πριν από αυτό φέρει finish_reason και usage· δεν χρειάζονται stream_options. Οι μορφές των chunks, οι γραμμές keep-alive και τα σφάλματα μέσα σε stream έχουν τη δική τους σελίδα. Ροή

Σφάλματα

Ένα σφάλμα είναι αντικείμενο JSON με μέλος error. Οι έλεγχοι εκτελούνται με αυτή τη σειρά: κλειδί API, σώμα αιτήματος, id μοντέλου και μετά υπόλοιπο. Ο πίνακας απαριθμεί όσα επιστρέφει πιο συχνά αυτό το endpoint. Ο πλήρης κατάλογος, με το τι να δοκιμάσετε ξανά, έχει τη δική του σελίδα. Χειρισμός σφαλμάτων

400 JSON
{
  "error": {
    "type": "invalid_request_error",
    "message": "unknown model: no-such-model"
  }
}
Κατάσταση Τύπος Μήνυμα Πότε
401 authentication_error Missing authentication
Invalid API key
Δεν στάλθηκε κλειδί API ή το κλειδί είναι άγνωστο ή ανακλήθηκε.
400 invalid_request_error unknown model: <id> Το model δεν είναι δημοσιευμένο id.
400 invalid_request_error No user message provided Επίπεδα Shannon: το αίτημα δεν έχει κείμενο χρήστη ούτε tools.
400 invalid_request_error <id> does not accept image input Στάλθηκε μέρος εικόνας σε φιλοξενούμενο μοντέλο ανοιχτών βαρών χωρίς είσοδο εικόνας.
400 invalid_request_error <id> does not accept response_format Στάλθηκε response_format σε φιλοξενούμενο μοντέλο ανοιχτών βαρών χωρίς δομημένη έξοδο.
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high Το reasoning_effort έχει τιμή εκτός της λίστας.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … Λείπει το messages ή ένα πεδίο έχει λάθος τύπο JSON.
429 rate_limit_error Quota exceeded. Upgrade your plan at shannon-ai.com/plan Το max_tokens είναι μεγαλύτερο από όσο απομένει στο υπόλοιπό σας.
429 rate_limit_error Too many requests. Retry in <n>s. Προστασία από υπερφόρτωση: περισσότερα από 120 αιτήματα σε ένα λεπτό στον λογαριασμό σας.
500 server_error The model backend failed to answer. Please retry. Το μοντέλο δεν παρήγαγε απάντηση. Στείλτε ξανά το αίτημα.
502 api_error The model backend failed to answer. Please retry. Το ίδιο, στην οικογένεια Shannon 3 και στα φιλοξενούμενα μοντέλα ανοιχτών βαρών.