Zum Inhalt sprangen
Reasoning-Effort

Reasoning-Effort

Nei

E Modell, dee reasonéiert, gëtt säi Reasoning-Text niewent der Äntwert zréck, an engem eegene Feld. Bei den Hosted Open-Weight-Modeller setzt ee Ufro-Feld, wéi déif de Modell reasonéiert, ier en äntwert.

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)

D'Äntwert enthält de Reasoning-Text an reasoning_content, d'Äntwert an content, an d'Reasoning-Tokens an 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}
  }
}

Wéi eng Modeller reasonéieren

Modell Gëtt Reasoning-Text zréck Wend d'Effort-Feld un
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 Jo —
All Hosted Open-Weight-Modell Jo Jo

Dat sinn d'Flaggen capabilities.reasoning an capabilities.reasoning_effort, déi GET /v1/models fir all ID mellt. Eng Äntwert enthält nëmmen Reasoning-Text, wann de Modell e produzéiert huet. Modeller a Präisser

Den Effort astellen

All Endpoint huet seng eege Schreifweis fir den Effort. Si wielen all ee vun deene selwechte véier Niveauen aus.

Feld Typ Standard Beschreiwung Ugewannt vun
reasoning_effort string high /v1/chat/completions. Wéi déif de Modell reasonéiert, ier en äntwert: off, low, medium oder high. Hosted Open-Weight-Modeller
reasoning object | string /v1/chat/completions. Deeselwechte Wäert wéi {"effort": "low"} oder als bloussen String. Wann béid Felder geschéckt ginn, gëllt reasoning_effort. Hosted Open-Weight-Modeller
reasoning.effort string high /v1/responses. Als Objet {"effort": "low"} geschriwwen. Hosted Open-Weight-Modeller
thinking object /v1/messages. {"type": "enabled", "budget_tokens": n} oder {"type": "disabled"}. De Budget wielt ee vun den Niveauen aus; kuckt d'Tabell weider ënnen. Hosted Open-Weight-Modeller
{
  "model": "Kimi-K3-3BIT-REAP",
  "reasoning_effort": "low",
  "messages": [{"role": "user", "content": "Is 221 a prime number?"}]
}
Wäert Och akzeptéiert Wierkung
off none, minimal Keng Reasoning. D'Äntwert enthält keen Reasoning-Text.
low Kuerz Reasoning.
medium default Mëttel Déift.
high max Dat déifste Niveau. Dëst ass d'Niveau vun enger Ufro, déi kee Wäert schéckt.
  • D'Wäerter ginn ouni Ënnerscheed tëscht Grouss- a Klengschreiwung gelies.
  • De Wäert default bedeit medium. Wann d'Feld ewech bleift, bedeit dat high.
  • D'Shannon-Modeller (shannon-*) setze bei all Ufro hir eegen Déift; GET /v1/models mellt fir si reasoning_effort: false.

De Thinking-Budget op /v1/messages

Op /v1/messages wielt d'Feld thinking d'Niveau aus. budget_tokens sicht ee vun den Niveauen uewen eraus; et ass keng eege Token-Limit. adaptive gëtt wéi enabled gelies.

Dir schéckt Niveau
{"type": "disabled"} off
{"type": "enabled", "budget_tokens": n} mat n bis 2,048 low
n vun 2,049 bis 8,192 medium
E gréissert n, oder enabled ouni budget_tokens high
Kee thinking-Feld high

Wou de Reasoning-Text ukënnt

De Reasoning-Text ass ëmmer getrennt vun der Äntwert. All Format huet seng eege Plaz dofir:

Endpoint Net gestreamt Gestreamt
/v1/chat/completions choices[0].message.reasoning_content: e String, oder null, wann de Modell keng produzéiert huet. Chunken mat choices[0].delta.reasoning_content, virun de Chunke mat delta.content.
/v1/responses En output-Item {"type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]} virum message-Item. Kee Item, wann et keng Reasoning gëtt. response.output_item.added mat engem reasoning-Item, dann response.reasoning_summary_text.delta-Events an een response.reasoning_summary_text.done.
/v1/messages En éischte Inhaltsblock {"type": "thinking", "thinking": "…"}, dann de text-Block. Kee thinking-Block, wann et keng Reasoning gëtt. E thinking-Inhaltsblock: content_block_start, content_block_delta-Events mat thinking_delta, content_block_stop. De Text-Block follegt.
{
  "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}
  }
}

Wou ee kuckt, pro Modell:

Modeller Wou den Text ukënnt
Hosted Open-Weight-Modeller Op all Endpoint, gestreamt oder net. Eng Ufro mam Effort off, oder mat response_format / text.format, gëtt ouni Reasoning-Text beäntwert.
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro Op all Endpoint, gestreamt oder net, ëmmer wann de Modell Reasoning-Text produzéiert huet.
shannon-2-lite, shannon-2-pro /v1/chat/completions, net gestreamt: an message.reasoning_content. Gestreamt, an enger Ufro ouni tools oder response_format: de Stream enthält Kommentar-Zeilen : thinking, wärend de Modell reasonéiert, dann d'Chunke vun der Äntwert. /v1/messages, gestreamt: e thinking-Block virum Text-Block.
shannon-1.6-pro, shannon-coder-1 An gestreamten Äntwerten an an Äntwerten op Ufroen, déi tools enthalen, ëmmer wann de Modell Reasoning-Text produzéiert huet.

Op /v1/responses enthält eng Äntwert, déi net gestreamt gëtt, dat reasoning-Item fir d'Shannon-3-Famill an d'Hosted Open-Weight-Modeller.

E Stream liesen

An engem Stream kënnt de Reasoning-Text als éischt, an eegenen Deltaen, an d'Äntwert follegt. Dréckt oder späichert déi zwee getrennt:

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

Deen éischte Chunk vun engem Hosted Open-Weight-Modell, Reasoning oder Äntwert, enthält och delta.role: "assistant". Streaming

Reasoning-Tokens a Facturatioun

Bei den Hosted Open-Weight-Modeller sinn Reasoning-Tokens Output-Tokens: si ginn zum Output-Präis vum Modell berechent, an d'Output-Zuel enthält se schonn. usage weist hei den Undeel vun der Reasoning:

Endpoint Feld Notiz
/v1/chat/completions usage.completion_tokens_details.reasoning_tokens Schonn an completion_tokens abegraff.
/v1/responses usage.output_tokens_details.reasoning_tokens Schonn an output_tokens abegraff.
/v1/messages usage.output_tokens Reasoning an Äntwert zesummen. Dëst Format huet keng separat Zuel.
  • Bei den Hosted Open-Weight-Modeller begrenzt max_tokens den Äntwert-Text. Reasoning-Tokens zielen net derbäi.
  • Well d'Reasoning als Output berechent gëtt, ass den Effort-Niveau och eng Käschten-Astellung: off produzéiert keng Reasoning-Tokens.
  • D'Shannon-Modeller mellen prompt_tokens, completion_tokens an total_tokens (input_tokens an output_tokens op /v1/messages) ouni Reasoning-Undeel a berechnen een eenheetleche Präis pro Token. Modeller a Präisser

D'Reasoning an der nächster Ufro

Dir musst d'Reasoning net zréckschécken. E thinking-Block oder e reasoning-Item an der Konversatioun, déi Dir schéckt, gëtt net un de Modell weiderginn, sou datt en Assistent-Tour mat oder ouni et zréckgoe kann. E thinking-Block huet déi zwee Felder type an thinking; en huet keng signature.

Feeler

Status Typ Message Wéini
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high En Hosted Open-Weight-Modell huet e Wäert baussent der Lëscht kritt, zum Beispill xhigh. Et gëtt näischt aus Ärem Solde ofgezunn.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … reasoning_effort ass kee String.

Authentifikatioun, Solde a Serverfeeler sinn déi selwecht wéi bei all Ufro. Feelerbehandlung