Preskočiť na obsah
Úsilie pri uvažovaní

Úsilie pri uvažovaní

Nové

Model, ktorý uvažuje, vracia text uvažovania vedľa odpovede, vo vlastnom poli. Na hostovaných open-weight modeloch jedno pole requestu určuje, ako hlboko model uvažuje, než odpovie.

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)

Odpoveď nesie text uvažovania v reasoning_content, odpoveď v content a tokeny uvažovania 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}
  }
}

Ktoré modely uvažujú

Model Vracia text uvažovania Uplatňuje pole úsilia
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 Áno —
Každý hostovaný open-weight model Áno Áno

Sú to príznaky capabilities.reasoning a capabilities.reasoning_effort, ktoré GET /v1/models hlási pri každom id. Odpoveď nesie text uvažovania, len ak ho model vytvoril. Modely a ceny

Nastavenie úsilia

Každý endpoint má vlastný zápis úsilia. Všetky vyberajú jednu zo štyroch rovnakých úrovní.

Pole Typ Predvolené Popis Uplatňuje
reasoning_effort string high /v1/chat/completions. Ako hlboko model uvažuje, než odpovie: off, low, medium alebo high. Hostované open-weight modely
reasoning object | string /v1/chat/completions. Rovnaká hodnota ako {"effort": "low"} alebo ako holý reťazec. Keď sa pošlú obe polia, platí reasoning_effort. Hostované open-weight modely
reasoning.effort string high /v1/responses. Zapisuje sa ako objekt {"effort": "low"}. Hostované open-weight modely
thinking object /v1/messages. {"type": "enabled", "budget_tokens": n} alebo {"type": "disabled"}. Rozpočet vyberá jednu z úrovní; pozri tabuľku nižšie. Hostované open-weight modely
{
  "model": "Kimi-K3-3BIT-REAP",
  "reasoning_effort": "low",
  "messages": [{"role": "user", "content": "Is 221 a prime number?"}]
}
Hodnota Prijíma sa aj Účinok
off none, minimal Bez uvažovania. Odpoveď nenesie žiadny text uvažovania.
low Stručné uvažovanie.
medium default Stredná hĺbka.
high max Najhlbšia úroveň. Toto je úroveň requestu, ktorý neposiela žiadnu hodnotu.
  • Hodnoty sa čítajú bez ohľadu na veľké a malé písmená.
  • Hodnota default znamená medium. Vynechanie poľa znamená high.
  • Modely Shannon (shannon-*) nastavujú svoju hĺbku sami v každom requeste; GET /v1/models pre ne hlási reasoning_effort: false.

Rozpočet thinking na /v1/messages

Na /v1/messages úroveň vyberá pole thinking. budget_tokens vyberá jednu z úrovní vyššie; nie je to samostatný limit tokenov. adaptive sa číta ako enabled.

Posielate Úroveň
{"type": "disabled"} off
{"type": "enabled", "budget_tokens": n} s n do 2,048 low
n od 2,049 do 8,192 medium
Väčšie n, alebo enabled bez budget_tokens high
Bez poľa thinking high

Kde text uvažovania prichádza

Text uvažovania je vždy oddelený od odpovede. Každý formát má preň vlastné miesto:

Endpoint Bez streamovania Streamované
/v1/chat/completions choices[0].message.reasoning_content: reťazec, alebo null, keď model žiadne nevytvoril. Chunky s choices[0].delta.reasoning_content, pred chunkmi s delta.content.
/v1/responses Položka output {"type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]} pred položkou message. Bez položky, keď neexistuje uvažovanie. response.output_item.added s položkou reasoning, potom udalosti response.reasoning_summary_text.delta a jedna response.reasoning_summary_text.done.
/v1/messages Prvý blok obsahu {"type": "thinking", "thinking": "…"}, potom blok text. Bez bloku thinking, keď neexistuje uvažovanie. Blok obsahu thinking: content_block_start, udalosti content_block_delta s thinking_delta, content_block_stop. Nasleduje blok textu.
{
  "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}
  }
}

Kde hľadať, podľa modelu:

Modely Kde text prichádza
Hostované open-weight modely Na každom endpointe, streamovane aj nie. Request s úsilím off alebo s response_format / text.format dostane odpoveď bez textu uvažovania.
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro Na každom endpointe, streamovane aj nie, kedykoľvek model vytvoril text uvažovania.
shannon-2-lite, shannon-2-pro /v1/chat/completions, bez streamovania: v message.reasoning_content. Streamovane, v requeste bez tools alebo response_format: stream nesie komentárové riadky : thinking, kým model uvažuje, potom chunky odpovede. /v1/messages, streamovane: blok thinking pred blokom textu.
shannon-1.6-pro, shannon-coder-1 V streamovaných odpovediach a v odpovediach na requesty, ktoré nesú tools, kedykoľvek model vytvoril text uvažovania.

Na /v1/responses odpoveď bez streamovania nesie položku reasoning pre rodinu Shannon 3 a hostované open-weight modely.

Čítanie streamu

V streame prichádza text uvažovania ako prvý, vo vlastných deltách, a nasleduje odpoveď. Vypisujte alebo ukladajte obe samostatne:

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

Prvý chunk hostovaného open-weight modelu, uvažovanie alebo odpoveď, nesie aj delta.role: "assistant". Streamovanie

Tokeny uvažovania a fakturácia

Na hostovaných open-weight modeloch sú tokeny uvažovania výstupné tokeny: fakturujú sa za výstupnú cenu modelu a počet výstupu ich už zahŕňa. usage tu ukazuje podiel uvažovania:

Endpoint Pole Poznámka
/v1/chat/completions usage.completion_tokens_details.reasoning_tokens Už zahrnuté v completion_tokens.
/v1/responses usage.output_tokens_details.reasoning_tokens Už zahrnuté v output_tokens.
/v1/messages usage.output_tokens Uvažovanie a odpoveď spolu. Tento formát nemá samostatný počet.
  • Na hostovaných open-weight modeloch max_tokens obmedzuje text odpovede. Tokeny uvažovania sa doň nezapočítavajú.
  • Keďže sa uvažovanie fakturuje ako výstup, úroveň úsilia je aj nastavením nákladov: off nevytvára žiadne tokeny uvažovania.
  • Modely Shannon hlásia prompt_tokens, completion_tokens a total_tokens (input_tokens a output_tokens na /v1/messages) bez podielu uvažovania a fakturujú jednu rovnú cenu za token. Modely a ceny

Uvažovanie v ďalšom requeste

Uvažovanie nemusíte posielať späť. Blok thinking alebo položka reasoning v konverzácii, ktorú pošlete, sa modelu nepodáva, takže krok asistenta sa môže vrátiť s ním aj bez neho. Blok thinking má dve polia type a thinking; nemá signature.

Chyby

Stav Typ Správa Kedy
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high Hostovaný open-weight model dostal hodnotu mimo zoznamu, napríklad xhigh. Zo zostatku sa nič neberie.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … reasoning_effort nie je reťazec.

Chyby overenia, zostatku a servera sú rovnaké ako pri každom requeste. Spracovanie chýb