Preskoči na vsebino
Napor razmišljanja

Napor razmišljanja

Novo

Model, ki razmišlja, vrne besedilo razmišljanja ob odgovoru, v lastnem polju. Pri gostovanih modelih z odprtimi utežmi eno polje zahtevka določa, kako globoko model razmišlja, preden odgovori.

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)

Odgovor nosi besedilo razmišljanja v reasoning_content, odgovor v content in tokene razmišljanja v 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}
  }
}

Kateri modeli razmišljajo

Model Vrne besedilo razmišljanja Upošteva polje effort
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 Da —
Vsak gostovani model z odprtimi utežmi Da Da

To sta zastavici capabilities.reasoning in capabilities.reasoning_effort, ki ju GET /v1/models sporoča za vsak id. Odgovor vsebuje besedilo razmišljanja samo, kadar ga je model ustvaril. Modeli in cene

Nastavitev napora

Vsaka končna točka ima svoj zapis napora. Vsi izberejo eno od istih štirih ravni.

Polje Tip Privzeto Opis Uporabljajo
reasoning_effort string high /v1/chat/completions. Kako globoko model razmišlja, preden odgovori: off, low, medium ali high. Gostovani modeli z odprtimi utežmi
reasoning object | string /v1/chat/completions. Ista vrednost kot {"effort": "low"} ali kot goli niz. Kadar sta poslani obe polji, velja reasoning_effort. Gostovani modeli z odprtimi utežmi
reasoning.effort string high /v1/responses. Zapisano kot objekt {"effort": "low"}. Gostovani modeli z odprtimi utežmi
thinking object /v1/messages. {"type": "enabled", "budget_tokens": n} ali {"type": "disabled"}. Proračun izbere eno od ravni; glejte tabelo nižje. Gostovani modeli z odprtimi utežmi
{
  "model": "Kimi-K3-3BIT-REAP",
  "reasoning_effort": "low",
  "messages": [{"role": "user", "content": "Is 221 a prime number?"}]
}
Vrednost Sprejeto tudi Učinek
off none, minimal Brez razmišljanja. Odgovor ne vsebuje besedila razmišljanja.
low Kratko razmišljanje.
medium default Srednja globina.
high max Najgloblja raven. To je raven zahtevka, ki ne pošlje vrednosti.
  • Vrednosti se preberejo ne glede na velike ali male črke.
  • Vrednost default pomeni medium. Izpustitev polja pomeni high.
  • Modeli Shannon (shannon-*) globino nastavijo sami pri vsakem zahtevku; GET /v1/models za njih sporoča reasoning_effort: false.

Proračun razmišljanja na /v1/messages

Na /v1/messages raven izbere polje thinking. budget_tokens izbere eno od zgornjih ravni; ni lastna omejitev tokenov. adaptive se bere kot enabled.

Vi pošljete Raven
{"type": "disabled"} off
{"type": "enabled", "budget_tokens": n} z n do 2,048 low
n od 2,049 do 8,192 medium
Večji n ali enabled brez budget_tokens high
Brez polja thinking high

Kje prispe besedilo razmišljanja

Besedilo razmišljanja je vedno ločeno od odgovora. Vsak format ima zanj svoje mesto:

Končna točka Brez pretakanja S pretakanjem
/v1/chat/completions choices[0].message.reasoning_content: niz ali null, kadar model ni ustvaril nič. Kosi z choices[0].delta.reasoning_content, pred kosi z delta.content.
/v1/responses Element output {"type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]} pred elementom message. Brez elementa, kadar razmišljanja ni. response.output_item.added z elementom reasoning, nato dogodki response.reasoning_summary_text.delta in en response.reasoning_summary_text.done.
/v1/messages Prvi blok vsebine {"type": "thinking", "thinking": "…"}, nato blok text. Brez bloka thinking, kadar razmišljanja ni. Blok vsebine thinking: content_block_start, dogodki content_block_delta z thinking_delta, content_block_stop. Sledi blok z besedilom.
{
  "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}
  }
}

Kje iskati, po modelih:

Modeli Kje besedilo prispe
Gostovani modeli z odprtimi utežmi Na vsaki končni točki, s pretakanjem ali brez. Na zahtevek z naporom off ali z response_format / text.format se odgovori brez besedila razmišljanja.
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro Na vsaki končni točki, s pretakanjem ali brez, kadar je model ustvaril besedilo razmišljanja.
shannon-2-lite, shannon-2-pro /v1/chat/completions, brez pretakanja: v message.reasoning_content. S pretakanjem, v zahtevku brez tools ali response_format: tok nosi komentarne vrstice : thinking, medtem ko model razmišlja, nato kose odgovora. /v1/messages, s pretakanjem: blok thinking pred blokom z besedilom.
shannon-1.6-pro, shannon-coder-1 V odgovorih s pretakanjem in v odgovorih na zahtevke, ki vsebujejo tools, kadar je model ustvaril besedilo razmišljanja.

Na /v1/responses odgovor brez pretakanja za družino Shannon 3 in gostovane modele z odprtimi utežmi vsebuje element reasoning.

Branje toka

V toku pride besedilo razmišljanja prvo, v lastnih delta kosih, odgovor sledi. Obe izpišite ali shranite ločeno:

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

Prvi kos gostovanega modela z odprtimi utežmi, razmišljanje ali odgovor, nosi tudi delta.role: "assistant". Pretakanje

Tokeni razmišljanja in obračun

Pri gostovanih modelih z odprtimi utežmi so tokeni razmišljanja izhodni tokeni: obračunajo se po izhodni ceni modela, število izhoda pa jih že vključuje. usage tukaj prikazuje delež razmišljanja:

Končna točka Polje Opomba
/v1/chat/completions usage.completion_tokens_details.reasoning_tokens Že vključeno v completion_tokens.
/v1/responses usage.output_tokens_details.reasoning_tokens Že vključeno v output_tokens.
/v1/messages usage.output_tokens Razmišljanje in odgovor skupaj. Ta format nima ločenega števila.
  • Pri gostovanih modelih z odprtimi utežmi max_tokens omejuje besedilo odgovora. Tokeni razmišljanja se vanj ne štejejo.
  • Ker se razmišljanje obračuna kot izhod, je raven napora tudi nastavitev stroška: off ne ustvari tokenov razmišljanja.
  • Modeli Shannon sporočajo prompt_tokens, completion_tokens in total_tokens (input_tokens in output_tokens na /v1/messages) brez deleža razmišljanja ter obračunajo eno enotno ceno na token. Modeli in cene

Razmišljanje v naslednjem zahtevku

Razmišljanja vam ni treba pošiljati nazaj. Blok thinking ali element reasoning v pogovoru, ki ga pošljete, se modelu ne posreduje, zato se lahko obrat asistenta vrne z njim ali brez njega. Blok thinking ima dve polji, type in thinking; nima signature.

Napake

Stanje Vrsta Sporočilo Kdaj
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high Gostovani model z odprtimi utežmi je prejel vrednost zunaj seznama, na primer xhigh. Z vašega stanja se ne odšteje nič.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … reasoning_effort ni niz.

Napake pri avtentikaciji, stanju in strežniku so enake kot pri vsakem zahtevku. Obravnava napak