Preskoči na sadržaj
Reasoning effort

Reasoning effort

Novo

Model koji razmišlja vraća tekst svog razmišljanja pored odgovora, u zasebnom polju. Na hostiranim open-weight modelima jedno polje zahtjeva određuje koliko duboko model razmišlja prije nego što 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 tekst razmišljanja u reasoning_content, odgovor u content, a tokene razmišljanja u 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}
  }
}

Koji modeli razmišljaju

Model Vraća tekst razmišljanja Primjenjuje 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 —
Svaki hostirani open-weight model Da Da

To su oznake capabilities.reasoning i capabilities.reasoning_effort koje GET /v1/models prijavljuje za svaki id. Odgovor nosi tekst razmišljanja samo kada ga je model proizveo. Modeli i cijene

Postavljanje jačine razmišljanja

Svaki endpoint ima svoj zapis jačine razmišljanja. Svi biraju jedan od istih četiri nivoa.

Polje Tip Zadano Opis Primjenjuje
reasoning_effort string high /v1/chat/completions. Koliko duboko model razmišlja prije nego što odgovori: off, low, medium ili high. Hostirani open-weight modeli
reasoning object | string /v1/chat/completions. Ista vrijednost kao {"effort": "low"} ili kao goli string. Kada se pošalju oba polja, vrijedi reasoning_effort. Hostirani open-weight modeli
reasoning.effort string high /v1/responses. Piše se kao objekat {"effort": "low"}. Hostirani open-weight modeli
thinking object /v1/messages. {"type": "enabled", "budget_tokens": n} ili {"type": "disabled"}. Budžet bira jedan od nivoa; pogledajte tabelu niže. Hostirani open-weight modeli
{
  "model": "Kimi-K3-3BIT-REAP",
  "reasoning_effort": "low",
  "messages": [{"role": "user", "content": "Is 221 a prime number?"}]
}
Vrijednost Prihvata se i Učinak
off none, minimal Bez razmišljanja. Odgovor ne nosi tekst razmišljanja.
low Kratko razmišljanje.
medium default Srednja dubina.
high max Najdublji nivo. To je nivo zahtjeva koji ne šalje vrijednost.
  • Vrijednosti se čitaju bez obzira na velika i mala slova.
  • Vrijednost default znači medium. Izostavljanje polja znači high.
  • Shannon modeli (shannon-*) sami određuju dubinu u svakom zahtjevu; GET /v1/models za njih prijavljuje reasoning_effort: false.

Budžet razmišljanja na /v1/messages

Na /v1/messages polje thinking bira nivo. budget_tokens bira jedan od gornjih nivoa; nije vlastito ograničenje tokena. adaptive se čita kao enabled.

Vi šaljete Nivo
{"type": "disabled"} off
{"type": "enabled", "budget_tokens": n} s n do 2,048 low
n od 2,049 do 8,192 medium
Veći n, ili enabled bez budget_tokens high
Bez polja thinking high

Gdje tekst razmišljanja stiže

Tekst razmišljanja uvijek je odvojen od odgovora. Svaki format ima svoje mjesto za njega:

Endpoint Bez streaminga Sa streamingom
/v1/chat/completions choices[0].message.reasoning_content: string, ili null kada model nije proizveo ništa. Chunkovi s choices[0].delta.reasoning_content, prije chunkova s delta.content.
/v1/responses Stavka output {"type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]} prije stavke message. Nema stavke kada nema razmišljanja. response.output_item.added sa stavkom reasoning, zatim događaji response.reasoning_summary_text.delta i jedan response.reasoning_summary_text.done.
/v1/messages Prvi blok sadržaja {"type": "thinking", "thinking": "…"}, zatim blok text. Nema bloka thinking kada nema razmišljanja. Blok sadržaja thinking: content_block_start, događaji content_block_delta s thinking_delta, content_block_stop. Slijedi blok teksta.
{
  "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}
  }
}

Gdje gledati, po modelu:

Modeli Gdje tekst stiže
Hostirani open-weight modeli Na svakom endpointu, sa streamingom ili bez. Na zahtjev s jačinom off, ili s response_format / text.format, odgovara se bez teksta razmišljanja.
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro Na svakom endpointu, sa streamingom ili bez, kad god je model proizveo tekst razmišljanja.
shannon-2-lite, shannon-2-pro /v1/chat/completions, bez streaminga: u message.reasoning_content. Sa streamingom, u zahtjevu bez tools ili response_format: stream nosi linije komentara : thinking dok model razmišlja, zatim chunkove odgovora. /v1/messages, sa streamingom: blok thinking prije bloka teksta.
shannon-1.6-pro, shannon-coder-1 U streamovanim odgovorima i u odgovorima na zahtjeve koji nose tools, kad god je model proizveo tekst razmišljanja.

Na /v1/responses, odgovor bez streaminga nosi stavku reasoning za porodicu Shannon 3 i hostirane open-weight modele.

Čitanje streama

U streamu tekst razmišljanja dolazi prvi, u zasebnim deltama, a odgovor slijedi. Ispišite ili spremite to dvoje odvojeno:

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 chunk hostiranog open-weight modela, razmišljanja ili odgovora, nosi i delta.role: "assistant". Streaming

Tokeni razmišljanja i naplata

Na hostiranim open-weight modelima tokeni razmišljanja su izlazni tokeni: naplaćuju se po izlaznoj cijeni modela, a izlazni broj ih već uključuje. usage ovdje prikazuje udio razmišljanja:

Endpoint Polje Napomena
/v1/chat/completions usage.completion_tokens_details.reasoning_tokens Već uključeno u completion_tokens.
/v1/responses usage.output_tokens_details.reasoning_tokens Već uključeno u output_tokens.
/v1/messages usage.output_tokens Razmišljanje i odgovor zajedno. Ovaj format nema zasebno brojanje.
  • Na hostiranim open-weight modelima max_tokens ograničava tekst odgovora. Tokeni razmišljanja ne računaju se u njega.
  • Zato što se razmišljanje naplaćuje kao izlaz, nivo jačine je i postavka troška: off ne proizvodi tokene razmišljanja.
  • Shannon modeli prijavljuju prompt_tokens, completion_tokens i total_tokens (input_tokens i output_tokens na /v1/messages) bez udjela razmišljanja, i naplaćuju jednu paušalnu cijenu po tokenu. Modeli i cijene

Razmišljanje u sljedećem zahtjevu

Ne morate slati razmišljanje nazad. Blok thinking ili stavka reasoning u razgovoru koji šaljete ne prosljeđuje se modelu, pa krug asistenta može ići nazad sa njim ili bez njega. Blok thinking ima dva polja, type i thinking; nema signature.

Greške

Status Tip Poruka Kada
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high Hostirani open-weight model primio je vrijednost izvan liste, na primjer xhigh. Ništa se ne skida s vašeg stanja.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … reasoning_effort nije string.

Greške autentikacije, stanja i servera iste su kao za svaki zahtjev. Upravljanje greškama