Μετάβαση στο περιεχόμενο
Προσπάθεια συλλογισμού

Προσπάθεια συλλογισμού

Νέο

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

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

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="Kimi-K3-3BIT-REAP",
    reasoning_effort="low",
    messages=[{"role": "user", "content": "Is 221 a prime number?"}],
)

message = response.choices[0].message
print("Reasoning:", getattr(message, "reasoning_content", None))
print("Answer:", message.content)
print("Reasoning tokens:", response.usage.completion_tokens_details.reasoning_tokens)

Η απάντηση φέρει το κείμενο συλλογισμού στο reasoning_content, την απάντηση στο content και τα tokens συλλογισμού στο usage:

200 JSON
{
  "id": "chatcmpl-2a6c8e0b4d1f4a3c9e7b5d3f1a8c6e4b",
  "object": "chat.completion",
  "created": 1791590400,
  "model": "Kimi-K3-3BIT-REAP",
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "No. 221 = 13 x 17, so it is not prime.",
        "reasoning_content": "Try small primes. 221 / 13 = 17, so 221 = 13 x 17."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 14,
    "completion_tokens": 43,
    "total_tokens": 57,
    "prompt_tokens_details": {"cached_tokens": 0},
    "completion_tokens_details": {"reasoning_tokens": 27}
  }
}

Ποια μοντέλα συλλογίζονται

Μοντέλο Επιστρέφει κείμενο συλλογισμού Εφαρμόζει το πεδίο προσπάθειας
shannon-1.6-lite — —
shannon-1.6-pro, shannon-2-lite, shannon-2-pro, shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro, shannon-coder-1 Ναι —
Κάθε φιλοξενούμενο μοντέλο ανοιχτών βαρών Ναι Ναι

Αυτές είναι οι σημαίες capabilities.reasoning και capabilities.reasoning_effort που αναφέρει το GET /v1/models για κάθε id. Μια απάντηση φέρει κείμενο συλλογισμού μόνο όταν το μοντέλο παρήγαγε κάποιο. Μοντέλα & τιμές

Ορισμός της προσπάθειας

Κάθε endpoint έχει τη δική του γραφή για την προσπάθεια. Όλες επιλέγουν ένα από τα ίδια τέσσερα επίπεδα.

Πεδίο Τύπος Προεπιλογή Περιγραφή Εφαρμόζεται από
reasoning_effort string high /v1/chat/completions. Πόσο βαθιά συλλογίζεται το μοντέλο πριν απαντήσει: off, low, medium ή high. Φιλοξενούμενα μοντέλα ανοιχτών βαρών
reasoning object | string /v1/chat/completions. Η ίδια τιμή ως {"effort": "low"} ή ως απλό string. Όταν στέλνονται και τα δύο πεδία, ισχύει το reasoning_effort. Φιλοξενούμενα μοντέλα ανοιχτών βαρών
reasoning.effort string high /v1/responses. Γράφεται ως το αντικείμενο {"effort": "low"}. Φιλοξενούμενα μοντέλα ανοιχτών βαρών
thinking object /v1/messages. {"type": "enabled", "budget_tokens": n} ή {"type": "disabled"}. Ο προϋπολογισμός επιλέγει ένα από τα επίπεδα· δείτε τον πίνακα παρακάτω. Φιλοξενούμενα μοντέλα ανοιχτών βαρών
{
  "model": "Kimi-K3-3BIT-REAP",
  "reasoning_effort": "low",
  "messages": [{"role": "user", "content": "Is 221 a prime number?"}]
}
Τιμή Γίνονται δεκτά και Αποτέλεσμα
off none, minimal Χωρίς συλλογισμό. Η απάντηση δεν φέρει κείμενο συλλογισμού.
low Σύντομος συλλογισμός.
medium default Μέσο βάθος.
high max Το βαθύτερο επίπεδο. Αυτό είναι το επίπεδο ενός αιτήματος που δεν στέλνει τιμή.
  • Οι τιμές διαβάζονται χωρίς διάκριση πεζών και κεφαλαίων.
  • Η τιμή default σημαίνει medium. Αν παραλείψετε το πεδίο, σημαίνει high.
  • Τα μοντέλα Shannon (shannon-*) ορίζουν μόνα τους το βάθος σε κάθε αίτημα· το GET /v1/models αναφέρει reasoning_effort: false για αυτά.

Ο προϋπολογισμός thinking στο /v1/messages

Στο /v1/messages το πεδίο thinking επιλέγει το επίπεδο. Το budget_tokens διαλέγει ένα από τα παραπάνω επίπεδα· δεν είναι δικό του όριο tokens. Το adaptive διαβάζεται όπως το enabled.

Εσείς στέλνετε Επίπεδο
{"type": "disabled"} off
{"type": "enabled", "budget_tokens": n} με n έως 2,048 low
n από 2,049 έως 8,192 medium
Μεγαλύτερο n, ή enabled χωρίς budget_tokens high
Χωρίς πεδίο thinking high

Πού φτάνει το κείμενο συλλογισμού

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

Endpoint Χωρίς streaming Με streaming
/v1/chat/completions choices[0].message.reasoning_content: ένα string, ή null όταν το μοντέλο δεν παρήγαγε κανένα. Chunks με choices[0].delta.reasoning_content, πριν από τα chunks με delta.content.
/v1/responses Ένα στοιχείο output {"type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]} πριν από το στοιχείο message. Χωρίς στοιχείο όταν δεν υπάρχει συλλογισμός. response.output_item.added με ένα στοιχείο reasoning, έπειτα συμβάντα response.reasoning_summary_text.delta και ένα response.reasoning_summary_text.done.
/v1/messages Ένα πρώτο block περιεχομένου {"type": "thinking", "thinking": "…"}, και μετά το block text. Χωρίς block thinking όταν δεν υπάρχει συλλογισμός. Ένα block περιεχομένου thinking: content_block_start, συμβάντα content_block_delta με thinking_delta, content_block_stop. Το block κειμένου ακολουθεί.
{
  "choices": [
    {
      "index": 0,
      "message": {
        "role": "assistant",
        "content": "No. 221 = 13 x 17, so it is not prime.",
        "reasoning_content": "Try small primes. 221 / 13 = 17, so 221 = 13 x 17."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 14,
    "completion_tokens": 43,
    "total_tokens": 57,
    "prompt_tokens_details": {"cached_tokens": 0},
    "completion_tokens_details": {"reasoning_tokens": 27}
  }
}

Πού να κοιτάξετε, ανά μοντέλο:

Μοντέλα Πού φτάνει το κείμενο
Φιλοξενούμενα μοντέλα ανοιχτών βαρών Σε κάθε endpoint, με ή χωρίς streaming. Ένα αίτημα με προσπάθεια off, ή με response_format / text.format, απαντάται χωρίς κείμενο συλλογισμού.
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro Σε κάθε endpoint, με ή χωρίς streaming, όποτε το μοντέλο παρήγαγε κείμενο συλλογισμού.
shannon-2-lite, shannon-2-pro /v1/chat/completions, χωρίς streaming: στο message.reasoning_content. Με streaming, σε αίτημα χωρίς tools ή response_format: το stream φέρει γραμμές σχολίων : thinking όσο το μοντέλο συλλογίζεται, και μετά τα chunks της απάντησης. /v1/messages, με streaming: ένα block thinking πριν από το block κειμένου.
shannon-1.6-pro, shannon-coder-1 Σε απαντήσεις με streaming και σε απαντήσεις αιτημάτων που φέρουν tools, όποτε το μοντέλο παρήγαγε κείμενο συλλογισμού.

Στο /v1/responses, μια απάντηση χωρίς streaming φέρει το στοιχείο reasoning για την οικογένεια Shannon 3 και τα φιλοξενούμενα μοντέλα ανοιχτών βαρών.

Ανάγνωση ενός stream

Σε ένα stream το κείμενο συλλογισμού έρχεται πρώτο, σε δικά του deltas, και η απάντηση ακολουθεί. Τυπώστε ή αποθηκεύστε τα δύο ξεχωριστά:

from openai import OpenAI

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

stream = client.chat.completions.create(
    model="Kimi-K3-3BIT-REAP",
    reasoning_effort="medium",
    stream=True,
    messages=[{"role": "user", "content": "Is 221 a prime number?"}],
)

for chunk in stream:
    if not chunk.choices:
        continue
    delta = chunk.choices[0].delta
    reasoning = getattr(delta, "reasoning_content", None)
    if reasoning:
        print(reasoning, end="", flush=True)      # the reasoning text comes first
    if delta.content:
        print(delta.content, end="", flush=True)  # then the answer

Το πρώτο chunk ενός φιλοξενούμενου μοντέλου ανοιχτών βαρών, συλλογισμού ή απάντησης, φέρει επίσης delta.role: "assistant". Ροή

Tokens συλλογισμού και χρέωση

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

Endpoint Πεδίο Σημείωση
/v1/chat/completions usage.completion_tokens_details.reasoning_tokens Περιλαμβάνεται ήδη στο completion_tokens.
/v1/responses usage.output_tokens_details.reasoning_tokens Περιλαμβάνεται ήδη στο output_tokens.
/v1/messages usage.output_tokens Συλλογισμός και απάντηση μαζί. Αυτή η μορφή δεν έχει ξεχωριστό αριθμό.
  • Στα φιλοξενούμενα μοντέλα ανοιχτών βαρών το max_tokens περιορίζει το κείμενο της απάντησης. Τα tokens συλλογισμού δεν προσμετρώνται σε αυτό.
  • Επειδή ο συλλογισμός χρεώνεται ως έξοδος, το επίπεδο προσπάθειας είναι και ρύθμιση κόστους: το off δεν παράγει tokens συλλογισμού.
  • Τα μοντέλα Shannon αναφέρουν prompt_tokens, completion_tokens και total_tokens (input_tokens και output_tokens στο /v1/messages) χωρίς μερίδιο συλλογισμού, και χρεώνουν μία ενιαία τιμή ανά token. Μοντέλα & τιμές

Ο συλλογισμός στο επόμενο αίτημα

Δεν χρειάζεται να στέλνετε πίσω τον συλλογισμό. Ένα block thinking ή ένα στοιχείο reasoning στη συνομιλία που στέλνετε δεν περνά στο μοντέλο, οπότε ένας γύρος του assistant μπορεί να επιστρέψει με ή χωρίς αυτό. Ένα block thinking έχει τα δύο πεδία type και thinking· δεν έχει signature.

Σφάλματα

Κατάσταση Τύπος Μήνυμα Πότε
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high Ένα φιλοξενούμενο μοντέλο ανοιχτών βαρών έλαβε τιμή εκτός λίστας, για παράδειγμα xhigh. Τίποτα δεν αφαιρείται από το υπόλοιπό σας.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … Το reasoning_effort δεν είναι string.

Τα σφάλματα ταυτοποίησης, υπολοίπου και διακομιστή είναι ίδια με κάθε άλλο αίτημα. Χειρισμός σφαλμάτων