Slaan oor na inhoud
Redeneringspoging

Redeneringspoging

Nuut

'n Model wat redeneer, gee sy redeneerteks langs die antwoord terug, in 'n veld van sy eie. Op die gehuisveste oopgewig-modelle stel een versoekveld hoe diep die model redeneer voordat dit antwoord.

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)

Die antwoord dra die redeneerteks in reasoning_content, die antwoord in content, en die 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}
  }
}

Watter modelle redeneer

Model Gee redeneerteks terug Pas die poging-veld 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 —
Elke gehuisveste oopgewig-model Ja Ja

Dit is die vlae capabilities.reasoning en capabilities.reasoning_effort wat GET /v1/models vir elke id meld. 'n Antwoord dra net redeneerteks wanneer die model iets gelewer het. Modelle en pryse

Die poging stel

Elke eindpunt het sy eie skryfwyse vir die poging. Almal kies een van dieselfde vier vlakke.

Veld Tipe Verstek Beskrywing Toegepas deur
reasoning_effort string high /v1/chat/completions. Hoe diep die model redeneer voordat dit antwoord: off, low, medium of high. Gehuisveste oopgewig-modelle
reasoning object | string /v1/chat/completions. Dieselfde waarde as {"effort": "low"} of as 'n kaal string. Wanneer albei velde gestuur word, tel reasoning_effort. Gehuisveste oopgewig-modelle
reasoning.effort string high /v1/responses. Geskryf as die objek {"effort": "low"}. Gehuisveste oopgewig-modelle
thinking object /v1/messages. {"type": "enabled", "budget_tokens": n} of {"type": "disabled"}. Die begroting kies een van die vlakke; sien die tabel verderaan. Gehuisveste oopgewig-modelle
{
  "model": "Kimi-K3-3BIT-REAP",
  "reasoning_effort": "low",
  "messages": [{"role": "user", "content": "Is 221 a prime number?"}]
}
Waarde Ook aanvaar Effek
off none, minimal Geen redenering nie. Die antwoord dra geen redeneerteks nie.
low Kort redenering.
medium default Gemiddelde diepte.
high max Die diepste vlak. Dit is die vlak van 'n versoek wat geen waarde stuur nie.
  • Waardes word gelees sonder om op hoof- of kleinletters te let.
  • Die waarde default beteken medium. Om die veld uit te laat beteken high.
  • Die Shannon-modelle (shannon-*) stel hul eie diepte in elke versoek; GET /v1/models meld reasoning_effort: false vir hulle.

Die denkbegroting op /v1/messages

Op /v1/messages kies die thinking-veld die vlak. budget_tokens kies een van die vlakke hierbo; dit is nie 'n tokenperk van sy eie nie. adaptive word soos enabled gelees.

Jy stuur Vlak
{"type": "disabled"} off
{"type": "enabled", "budget_tokens": n} met n tot 2,048 low
n van 2,049 tot 8,192 medium
'n Groter n, of enabled sonder budget_tokens high
Geen thinking-veld high

Waar die redeneerteks aankom

Redeneerteks is altyd apart van die antwoord. Elke formaat het sy eie plek daarvoor:

Eindpunt Nie gestroom nie Gestroom
/v1/chat/completions choices[0].message.reasoning_content: 'n string, of null wanneer die model niks gelewer het nie. Chunks met choices[0].delta.reasoning_content, voor die chunks met delta.content.
/v1/responses 'n output-item {"type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]} voor die message-item. Geen item wanneer daar geen redenering is nie. response.output_item.added met 'n reasoning-item, dan response.reasoning_summary_text.delta-gebeure en een response.reasoning_summary_text.done.
/v1/messages 'n Eerste inhoudblok {"type": "thinking", "thinking": "…"}, dan die text-blok. Geen thinking-blok wanneer daar geen redenering is nie. 'n thinking-inhoudblok: content_block_start, content_block_delta-gebeure met thinking_delta, content_block_stop. Die teksblok volg.
{
  "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 om te kyk, per model:

Modelle Waar die teks aankom
Gehuisveste oopgewig-modelle Op elke eindpunt, gestroom of nie. 'n Versoek met poging off, of met response_format / text.format, word sonder redeneerteks beantwoord.
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro Op elke eindpunt, gestroom of nie, wanneer die model ook al redeneerteks gelewer het.
shannon-2-lite, shannon-2-pro /v1/chat/completions, nie gestroom nie: in message.reasoning_content. Gestroom, in 'n versoek sonder tools of response_format: die stroom dra kommentaarreëls : thinking terwyl die model redeneer, dan die antwoord-chunks. /v1/messages, gestroom: 'n thinking-blok voor die teksblok.
shannon-1.6-pro, shannon-coder-1 In gestroomde antwoorde en in antwoorde op versoeke wat tools dra, wanneer die model ook al redeneerteks gelewer het.

Op /v1/responses dra 'n antwoord wat nie gestroom is nie die reasoning-item vir die Shannon 3-familie en die gehuisveste oopgewig-modelle.

'n Stroom lees

In 'n stroom kom die redeneerteks eerste, in deltas van sy eie, en die antwoord volg. Druk of stoor die twee afsonderlik:

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

Die eerste chunk van 'n gehuisveste oopgewig-model, redenering of antwoord, dra ook delta.role: "assistant". Stroming

Redeneertokens en fakturering

Op die gehuisveste oopgewig-modelle is redeneertokens uitsettokens: hulle word teen die uitsetprys van die model gefaktureer, en die uitsettelling sluit hulle reeds in. usage wys die redeneeraandeel hier:

Eindpunt Veld Nota
/v1/chat/completions usage.completion_tokens_details.reasoning_tokens Reeds by completion_tokens ingesluit.
/v1/responses usage.output_tokens_details.reasoning_tokens Reeds by output_tokens ingesluit.
/v1/messages usage.output_tokens Redenering en antwoord saam. Hierdie formaat het geen aparte telling nie.
  • Op die gehuisveste oopgewig-modelle beperk max_tokens die antwoordteks. Redeneertokens tel nie daarteen nie.
  • Omdat redenering as uitset gefaktureer word, is die pogingvlak ook 'n koste-instelling: off lewer geen redeneertokens nie.
  • Die Shannon-modelle meld prompt_tokens, completion_tokens en total_tokens (input_tokens en output_tokens op /v1/messages) sonder 'n redeneeraandeel, en faktureer een vaste prys per token. Modelle en pryse

Redenering in die volgende versoek

Jy hoef nie redenering terug te stuur nie. 'n thinking-blok of 'n reasoning-item in die gesprek wat jy stuur, word nie aan die model deurgegee nie, so 'n assistent-beurt kan met of sonder dit teruggaan. 'n thinking-blok het die twee velde type en thinking; dit het geen signature nie.

Foute

Status Tipe Boodskap Wanneer
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high 'n Gehuisveste oopgewig-model het 'n waarde buite die lys ontvang, byvoorbeeld xhigh. Niks word van jou balans afgetrek nie.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … reasoning_effort is nie 'n string nie.

Verifikasie-, balans- en bedienerfoute is dieselfde as vir elke versoek. Fouthantering