Naar de inhoud
Reasoning effort

Reasoning effort

Nieuw

Een model dat redeneert, geeft zijn redeneertekst naast het antwoord terug, in een eigen veld. Bij de gehoste open-weight modellen bepaalt één aanvraagveld hoe diep het model redeneert voordat het antwoordt.

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)

Het antwoord bevat de redeneertekst in reasoning_content, het antwoord in content en de redeneertokens in 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}
  }
}

Welke modellen redeneren

Model Geeft redeneertekst terug Past het effortveld toe
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 Ja —
Elk gehost open-weight model Ja Ja

Dit zijn de vlaggen capabilities.reasoning en capabilities.reasoning_effort die GET /v1/models bij elke id meldt. Een antwoord bevat alleen redeneertekst als het model die heeft geproduceerd. Modellen en prijzen

De effort instellen

Elk endpoint heeft zijn eigen schrijfwijze voor de effort. Ze kiezen allemaal een van dezelfde vier niveaus.

Veld Type Standaard Beschrijving Toegepast door
reasoning_effort string high /v1/chat/completions. Hoe diep het model redeneert voordat het antwoordt: off, low, medium of high. Gehoste open-weight modellen
reasoning object | string /v1/chat/completions. Dezelfde waarde als {"effort": "low"} of als kale string. Als beide velden worden verstuurd, geldt reasoning_effort. Gehoste open-weight modellen
reasoning.effort string high /v1/responses. Geschreven als het object {"effort": "low"}. Gehoste open-weight modellen
thinking object /v1/messages. {"type": "enabled", "budget_tokens": n} of {"type": "disabled"}. Het budget kiest een van de niveaus; zie de tabel verderop. Gehoste open-weight modellen
{
  "model": "Kimi-K3-3BIT-REAP",
  "reasoning_effort": "low",
  "messages": [{"role": "user", "content": "Is 221 a prime number?"}]
}
Waarde Ook geaccepteerd Effect
off none, minimal Geen redenering. Het antwoord bevat geen redeneertekst.
low Beknopt redeneren.
medium default Gemiddelde diepte.
high max Het diepste niveau. Dit is het niveau van een aanvraag die geen waarde meestuurt.
  • Waarden worden gelezen zonder onderscheid tussen hoofdletters en kleine letters.
  • De waarde default betekent medium. Het veld weglaten betekent high.
  • De Shannon-modellen (shannon-*) bepalen in elke aanvraag zelf hun diepte; GET /v1/models meldt voor hen reasoning_effort: false.

Het thinking-budget op /v1/messages

Op /v1/messages kiest het veld thinking het niveau. budget_tokens kiest een van de niveaus hierboven; het is geen eigen tokenlimiet. adaptive wordt gelezen als enabled.

Jij verstuurt Niveau
{"type": "disabled"} off
{"type": "enabled", "budget_tokens": n} met n tot 2,048 low
n van 2,049 tot 8,192 medium
Een grotere n, of enabled zonder budget_tokens high
Geen thinking-veld high

Waar de redeneertekst aankomt

Redeneertekst staat altijd los van het antwoord. Elk formaat heeft er zijn eigen plek voor:

Endpoint Zonder streaming Met streaming
/v1/chat/completions choices[0].message.reasoning_content: een string, of null als het model er geen heeft geproduceerd. Chunks met choices[0].delta.reasoning_content, vóór de chunks met delta.content.
/v1/responses Een output-item {"type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]} vóór het message-item. Geen item als er geen redenering is. response.output_item.added met een reasoning-item, daarna response.reasoning_summary_text.delta-events en één response.reasoning_summary_text.done.
/v1/messages Een eerste contentblok {"type": "thinking", "thinking": "…"}, daarna het text-blok. Geen thinking-blok als er geen redenering is. Een thinking-contentblok: content_block_start, content_block_delta-events met thinking_delta, content_block_stop. Het tekstblok volgt.
{
  "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}
  }
}

Waar je moet kijken, per model:

Modellen Waar de tekst aankomt
Gehoste open-weight modellen Op elk endpoint, met of zonder streaming. Een aanvraag met effort off, of met response_format / text.format, wordt beantwoord zonder redeneertekst.
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro Op elk endpoint, met of zonder streaming, telkens wanneer het model redeneertekst heeft geproduceerd.
shannon-2-lite, shannon-2-pro /v1/chat/completions, zonder streaming: in message.reasoning_content. Met streaming, in een aanvraag zonder tools of response_format: de stream bevat opmerkingsregels : thinking terwijl het model redeneert, daarna de antwoordchunks. /v1/messages, met streaming: een thinking-blok vóór het tekstblok.
shannon-1.6-pro, shannon-coder-1 In antwoorden met streaming en in antwoorden op aanvragen met tools, telkens wanneer het model redeneertekst heeft geproduceerd.

Op /v1/responses bevat een antwoord zonder streaming het reasoning-item voor de Shannon 3-familie en de gehoste open-weight modellen.

Een stream lezen

In een stream komt de redeneertekst eerst, in eigen delta's, en daarna het antwoord. Druk de twee gescheiden af of sla ze gescheiden op:

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

De eerste chunk van een gehost open-weight model, redenering of antwoord, bevat ook delta.role: "assistant". Streaming

Redeneertokens en facturering

Bij de gehoste open-weight modellen zijn redeneertokens outputtokens: ze worden tegen de outputprijs van het model gefactureerd, en de outputtelling bevat ze al. usage toont hier het aandeel redenering:

Endpoint Veld Opmerking
/v1/chat/completions usage.completion_tokens_details.reasoning_tokens Zit al in completion_tokens.
/v1/responses usage.output_tokens_details.reasoning_tokens Zit al in output_tokens.
/v1/messages usage.output_tokens Redenering en antwoord samen. Dit formaat heeft geen aparte telling.
  • Bij de gehoste open-weight modellen begrenst max_tokens de antwoordtekst. Redeneertokens tellen er niet in mee.
  • Omdat redenering als output wordt gefactureerd, is het effortniveau ook een kosteninstelling: off levert geen redeneertokens op.
  • De Shannon-modellen melden prompt_tokens, completion_tokens en total_tokens (input_tokens en output_tokens op /v1/messages) zonder aandeel redenering, en factureren één vaste prijs per token. Modellen en prijzen

Redenering in de volgende aanvraag

Je hoeft redenering niet terug te sturen. Een thinking-blok of een reasoning-item in het gesprek dat je verstuurt, wordt niet doorgegeven aan het model, dus een assistentbeurt kan met of zonder terug. Een thinking-blok heeft de twee velden type en thinking; het heeft geen signature.

Fouten

Status Type Melding Wanneer
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high Een gehost open-weight model kreeg een waarde buiten de lijst, bijvoorbeeld xhigh. Er wordt niets van je saldo afgeschreven.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … reasoning_effort is geen string.

Fouten bij authenticatie, saldo en server zijn dezelfde als bij elke aanvraag. Foutafhandeling