Přeskočit na obsah
Úsilí uvažování

Úsilí uvažování

Nové

Model, který uvažuje, vrací text uvažování vedle odpovědi, ve vlastním poli. U hostovaných modelů s otevřenými váhami jedno pole požadavku určuje, jak hluboce model před odpovědí uvažuje.

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)

Odpověď nese text uvažování v reasoning_content, odpověď v content a tokeny uvažování 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}
  }
}

Které modely uvažují

Model Vrací text uvažování Uplatňuje pole úsilí
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 Ano —
Každý hostovaný model s otevřenými váhami Ano Ano

Jsou to příznaky capabilities.reasoning a capabilities.reasoning_effort, které GET /v1/models hlásí u každého id. Odpověď nese text uvažování, jen když ho model vytvořil. Modely a ceny

Nastavení úsilí

Každý endpoint má vlastní zápis úsilí. Všechny vybírají jednu ze stejných čtyř úrovní.

Pole Typ Výchozí Popis Uplatňují
reasoning_effort string high /v1/chat/completions. Jak hluboce model uvažuje, než odpoví: off, low, medium nebo high. Hostované modely s otevřenými váhami
reasoning object | string /v1/chat/completions. Stejná hodnota jako {"effort": "low"} nebo jako holý řetězec. Když se pošlou obě pole, platí reasoning_effort. Hostované modely s otevřenými váhami
reasoning.effort string high /v1/responses. Zapisuje se jako objekt {"effort": "low"}. Hostované modely s otevřenými váhami
thinking object /v1/messages. {"type": "enabled", "budget_tokens": n} nebo {"type": "disabled"}. Rozpočet vybírá jednu z úrovní; viz tabulka níže. Hostované modely s otevřenými váhami
{
  "model": "Kimi-K3-3BIT-REAP",
  "reasoning_effort": "low",
  "messages": [{"role": "user", "content": "Is 221 a prime number?"}]
}
Hodnota Přijímá se také Účinek
off none, minimal Žádné uvažování. Odpověď nenese žádný text uvažování.
low Stručné uvažování.
medium default Střední hloubka.
high max Nejhlubší úroveň. Je to úroveň požadavku, který neposílá žádnou hodnotu.
  • Hodnoty se čtou bez ohledu na velikost písmen.
  • Hodnota default znamená medium. Vynechání pole znamená high.
  • Modely Shannon (shannon-*) si hloubku nastavují samy v každém požadavku; GET /v1/models pro ně hlásí reasoning_effort: false.

Rozpočet thinking na /v1/messages

Na /v1/messages úroveň vybírá pole thinking. budget_tokens vybírá jednu z úrovní výše; není to vlastní limit tokenů. adaptive se čte jako enabled.

Posíláte Úroveň
{"type": "disabled"} off
{"type": "enabled", "budget_tokens": n} s n do 2,048 low
n od 2,049 do 8,192 medium
Větší n, nebo enabled bez budget_tokens high
Bez pole thinking high

Kde text uvažování přichází

Text uvažování je vždy oddělen od odpovědi. Každý formát pro něj má své místo:

Endpoint Bez streamování Se streamováním
/v1/chat/completions choices[0].message.reasoning_content: řetězec, nebo null, když model žádné uvažování nevytvořil. Chunky s choices[0].delta.reasoning_content, před chunky s delta.content.
/v1/responses Položka output {"type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]} před položkou message. Když uvažování není, položka chybí. response.output_item.added s položkou reasoning, potom události response.reasoning_summary_text.delta a jedna response.reasoning_summary_text.done.
/v1/messages První blok obsahu {"type": "thinking", "thinking": "…"}, potom blok text. Když uvažování není, blok thinking chybí. Blok obsahu thinking: content_block_start, události content_block_delta s thinking_delta, content_block_stop. Následuje 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 hledat, podle modelu:

Modely Kde text přichází
Hostované modely s otevřenými váhami Na každém endpointu, se streamováním i bez něj. Požadavek s úsilím off nebo s response_format / text.format dostane odpověď bez textu uvažování.
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro Na každém endpointu, se streamováním i bez něj, kdykoli model text uvažování vytvořil.
shannon-2-lite, shannon-2-pro /v1/chat/completions, bez streamování: v message.reasoning_content. Se streamováním, v požadavku bez tools nebo response_format: stream nese komentářové řádky : thinking, dokud model uvažuje, potom chunky odpovědi. /v1/messages, se streamováním: blok thinking před blokem textu.
shannon-1.6-pro, shannon-coder-1 Ve streamovaných odpovědích a v odpovědích na požadavky, které nesou tools, kdykoli model text uvažování vytvořil.

Na /v1/responses nese nestreamovaná odpověď položku reasoning u rodiny Shannon 3 a u hostovaných modelů s otevřenými váhami.

Čtení streamu

Ve streamu přichází text uvažování první, ve vlastních deltách, a odpověď následuje. Vypisujte nebo ukládejte obojí zvlášť:

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

První chunk hostovaného modelu s otevřenými váhami, uvažování nebo odpověď, nese také delta.role: "assistant". Streamování

Tokeny uvažování a účtování

U hostovaných modelů s otevřenými váhami jsou tokeny uvažování výstupní tokeny: účtují se za výstupní cenu modelu a počet výstupu je už zahrnuje. Podíl uvažování zde ukazuje usage:

Endpoint Pole Poznámka
/v1/chat/completions usage.completion_tokens_details.reasoning_tokens Už zahrnuto v completion_tokens.
/v1/responses usage.output_tokens_details.reasoning_tokens Už zahrnuto v output_tokens.
/v1/messages usage.output_tokens Uvažování a odpověď dohromady. Tento formát nemá samostatný počet.
  • U hostovaných modelů s otevřenými váhami max_tokens omezuje text odpovědi. Tokeny uvažování se do něj nepočítají.
  • Protože se uvažování účtuje jako výstup, je úroveň úsilí také nastavením nákladů: off nevytváří žádné tokeny uvažování.
  • Modely Shannon hlásí prompt_tokens, completion_tokens a total_tokens (input_tokens a output_tokens na /v1/messages) bez podílu uvažování a účtují jednu jednotnou cenu za token. Modely a ceny

Uvažování v dalším požadavku

Uvažování nemusíte posílat zpět. Blok thinking nebo položka reasoning v konverzaci, kterou posíláte, se modelu nepředává, takže kolo asistenta může jít zpět s nimi i bez nich. Blok thinking má dvě pole, type a thinking; signature nemá.

Chyby

Stav Typ Zpráva Kdy
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high Hostovaný model s otevřenými váhami dostal hodnotu mimo seznam, například xhigh. Ze zůstatku se nic nestrhne.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … reasoning_effort není řetězec.

Chyby ověření, zůstatku a serveru jsou stejné jako u každého požadavku. Zpracování chyb