Hopp til innholdet
Resonneringsinnsats

Resonneringsinnsats

Ny

En modell som resonnerer, returnerer resonneringsteksten ved siden av svaret, i et eget felt. På de hostede åpne vektmodellene bestemmer ett forespørselsfelt hvor grundig modellen resonnerer før den svarer.

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)

Svaret har resonneringsteksten i reasoning_content, svaret i content og resonnerings-tokens i 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}
  }
}

Hvilke modeller som resonnerer

Modell Returnerer resonneringstekst Bruker innsatsfeltet
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 —
Alle hostede åpne vektmodeller Ja Ja

Dette er flaggene capabilities.reasoning og capabilities.reasoning_effort som GET /v1/models rapporterer for hver id. Et svar har bare resonneringstekst når modellen har produsert noe. Modeller og priser

Sette innsatsen

Hvert endepunkt har sin egen skrivemåte for innsatsen. Alle velger ett av de samme fire nivåene.

Felt Type Standard Beskrivelse Brukes av
reasoning_effort string high /v1/chat/completions. Hvor grundig modellen resonnerer før den svarer: off, low, medium eller high. Hostede åpne vektmodeller
reasoning object | string /v1/chat/completions. Den samme verdien som {"effort": "low"} eller som en ren streng. Når begge feltene sendes, gjelder reasoning_effort. Hostede åpne vektmodeller
reasoning.effort string high /v1/responses. Skrives som objektet {"effort": "low"}. Hostede åpne vektmodeller
thinking object /v1/messages. {"type": "enabled", "budget_tokens": n} eller {"type": "disabled"}. Budsjettet velger ett av nivåene; se tabellen lenger ned. Hostede åpne vektmodeller
{
  "model": "Kimi-K3-3BIT-REAP",
  "reasoning_effort": "low",
  "messages": [{"role": "user", "content": "Is 221 a prime number?"}]
}
Verdi Godtas også Effekt
off none, minimal Ingen resonnering. Svaret har ingen resonneringstekst.
low Kort resonnering.
medium default Middels dybde.
high max Det dypeste nivået. Dette er nivået for en forespørsel som ikke sender noen verdi.
  • Verdiene leses uten hensyn til store og små bokstaver.
  • Verdien default betyr medium. Å utelate feltet betyr high.
  • Shannon-modellene (shannon-*) setter sin egen dybde i hver forespørsel; GET /v1/models rapporterer reasoning_effort: false for dem.

Thinking-budsjettet på /v1/messages

På /v1/messages velger feltet thinking nivået. budget_tokens velger ett av nivåene over; det er ikke en egen tokengrense. adaptive leses som enabled.

Du sender Nivå
{"type": "disabled"} off
{"type": "enabled", "budget_tokens": n} med n opptil 2,048 low
n fra 2,049 til 8,192 medium
Et større n, eller enabled uten budget_tokens high
Ikke noe thinking-felt high

Hvor resonneringsteksten kommer

Resonneringsteksten er alltid atskilt fra svaret. Hvert format har sitt eget sted for den:

Endepunkt Uten streaming Med streaming
/v1/chat/completions choices[0].message.reasoning_content: en streng, eller null når modellen ikke produserte noe. Chunks med choices[0].delta.reasoning_content, før chunkene med delta.content.
/v1/responses Et output-element {"type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]} før message-elementet. Ingen element når det ikke er noen resonnering. response.output_item.added med et reasoning-element, deretter response.reasoning_summary_text.delta-hendelser og én response.reasoning_summary_text.done.
/v1/messages En første innholdsblokk {"type": "thinking", "thinking": "…"}, deretter text-blokken. Ingen thinking-blokk når det ikke er noen resonnering. En innholdsblokk av typen thinking: content_block_start, content_block_delta-hendelser med thinking_delta, content_block_stop. Tekstblokken følger.
{
  "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}
  }
}

Hvor du ser etter, per modell:

Modeller Hvor teksten kommer
Hostede åpne vektmodeller På alle endepunkter, med eller uten streaming. En forespørsel med innsats off, eller med response_format / text.format, besvares uten resonneringstekst.
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro På alle endepunkter, med eller uten streaming, når modellen har produsert resonneringstekst.
shannon-2-lite, shannon-2-pro /v1/chat/completions, uten streaming: i message.reasoning_content. Med streaming, i en forespørsel uten tools eller response_format: strømmen har kommentarlinjer : thinking mens modellen resonnerer, deretter svar-chunkene. /v1/messages, med streaming: en thinking-blokk før tekstblokken.
shannon-1.6-pro, shannon-coder-1 I svar med streaming og i svar på forespørsler som har tools, når modellen har produsert resonneringstekst.

På /v1/responses har et svar uten streaming reasoning-elementet for Shannon 3-familien og de hostede åpne vektmodellene.

Lese en strøm

I en strøm kommer resonneringsteksten først, i egne deltaer, og svaret følger. Skriv ut eller lagre de to hver for seg:

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

Den første chunken fra en hostet åpen vektmodell, resonnering eller svar, har også delta.role: "assistant". Strømming

Resonnerings-tokens og fakturering

På de hostede åpne vektmodellene er resonnerings-tokens output-tokens: de faktureres til outputprisen for modellen, og outputtellingen inkluderer dem allerede. usage viser resonneringsandelen her:

Endepunkt Felt Merknad
/v1/chat/completions usage.completion_tokens_details.reasoning_tokens Allerede inkludert i completion_tokens.
/v1/responses usage.output_tokens_details.reasoning_tokens Allerede inkludert i output_tokens.
/v1/messages usage.output_tokens Resonnering og svar sammen. Dette formatet har ikke noen egen telling.
  • På de hostede åpne vektmodellene begrenser max_tokens svarteksten. Resonnerings-tokens telles ikke mot den.
  • Fordi resonnering faktureres som output, er innsatsnivået også en kostnadsinnstilling: off gir ingen resonnerings-tokens.
  • Shannon-modellene rapporterer prompt_tokens, completion_tokens og total_tokens (input_tokens og output_tokens på /v1/messages) uten resonneringsandel, og fakturerer én flat pris per token. Modeller og priser

Resonnering i neste forespørsel

Du trenger ikke sende resonneringen tilbake. En thinking-blokk eller et reasoning-element i samtalen du sender, videresendes ikke til modellen, så en assistentrunde kan sendes tilbake med eller uten den. En thinking-blokk har de to feltene type og thinking; den har ingen signature.

Feil

Status Type Melding Når
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high En hostet åpen vektmodell mottok en verdi utenfor listen, for eksempel xhigh. Ingenting trekkes fra saldoen din.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … reasoning_effort er ikke en streng.

Feil ved autentisering, saldo og server er de samme som for alle forespørsler. Feilhåndtering