Прескокни до содржината
Напор на reasoning

Напор на reasoning

Ново

Модел што прави reasoning го враќа текстот на reasoning-от покрај одговорот, во посебно поле. На хостираните open-weight модели едно поле на барањето одредува колку длабоко моделот прави reasoning пред да одговори.

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)

Одговорот го носи текстот на reasoning-от во reasoning_content, одговорот во content, а токените за reasoning во 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}
  }
}

Кои модели прават reasoning

Модел Враќа текст на reasoning Го применува полето за напор
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 Да —
Секој хостиран open-weight модел Да Да

Ова се знамињата capabilities.reasoning и capabilities.reasoning_effort што GET /v1/models ги пријавува за секој ид. Одговорот носи текст на reasoning само кога моделот создал некој. Модели и цени

Поставување на напорот

Секој ендпоинт има свој запис на напорот. Сите избираат едно од истите четири нивоа.

Поле Тип Стандардно Опис Го применуваат
reasoning_effort string high /v1/chat/completions. Колку длабоко моделот прави reasoning пред да одговори: off, low, medium или high. Хостирани open-weight модели
reasoning object | string /v1/chat/completions. Истата вредност како {"effort": "low"} или како обичен стринг. Кога се испратени двете полиња, важи reasoning_effort. Хостирани open-weight модели
reasoning.effort string high /v1/responses. Се пишува како објект {"effort": "low"}. Хостирани open-weight модели
thinking object /v1/messages. {"type": "enabled", "budget_tokens": n} или {"type": "disabled"}. Буџетот избира едно од нивоата; видете ја табелата подолу. Хостирани open-weight модели
{
  "model": "Kimi-K3-3BIT-REAP",
  "reasoning_effort": "low",
  "messages": [{"role": "user", "content": "Is 221 a prime number?"}]
}
Вредност Се прифаќа и Ефект
off none, minimal Без reasoning. Одговорот не носи текст на reasoning.
low Кратко reasoning.
medium default Средна длабочина.
high max Најдлабокото ниво. Тоа е нивото на барање што не испраќа вредност.
  • Вредностите се читаат без разлика на големи или мали букви.
  • Вредноста default значи medium. Ако полето се изостави, значи high.
  • Моделите Shannon (shannon-*) сами ја одредуваат длабочината во секое барање; GET /v1/models пријавува reasoning_effort: false за нив.

Буџетот за thinking на /v1/messages

На /v1/messages полето thinking го избира нивото. budget_tokens избира едно од горните нивоа; не е сопствено ограничување на токени. adaptive се чита како enabled.

Вие испраќате Ниво
{"type": "disabled"} off
{"type": "enabled", "budget_tokens": n} со n до 2,048 low
n од 2,049 до 8,192 medium
Поголемо n, или enabled без budget_tokens high
Без поле thinking high

Каде пристигнува текстот на reasoning-от

Текстот на reasoning-от е секогаш одвоен од одговорот. Секој формат има свое место за него:

Ендпоинт Без streaming Со streaming
/v1/chat/completions choices[0].message.reasoning_content: стринг, или null кога моделот не создал ништо. Chunk-ови со choices[0].delta.reasoning_content, пред chunk-овите со delta.content.
/v1/responses Ставка во output {"type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]} пред ставката message. Нема ставка кога нема reasoning. response.output_item.added со ставка reasoning, потоа настани response.reasoning_summary_text.delta и еден response.reasoning_summary_text.done.
/v1/messages Прв блок содржина {"type": "thinking", "thinking": "…"}, потоа блокот text. Нема блок thinking кога нема reasoning. Блок содржина thinking: content_block_start, настани content_block_delta со thinking_delta, content_block_stop. Следува текстуалниот блок.
{
  "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}
  }
}

Каде да барате, по модел:

Модели Каде пристигнува текстот
Хостирани open-weight модели На секој ендпоинт, со или без streaming. Барање со напор off, или со response_format / text.format, се одговара без текст на reasoning.
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro На секој ендпоинт, со или без streaming, секогаш кога моделот создал текст на reasoning.
shannon-2-lite, shannon-2-pro /v1/chat/completions, без streaming: во message.reasoning_content. Со streaming, во барање без tools или response_format: streaming-от носи редови-коментари : thinking додека моделот прави reasoning, потоа chunk-ови со одговорот. /v1/messages, со streaming: блок thinking пред текстуалниот блок.
shannon-1.6-pro, shannon-coder-1 Во одговори со streaming и во одговори на барања што носат tools, секогаш кога моделот создал текст на reasoning.

На /v1/responses, одговор без streaming ја носи ставката reasoning за фамилијата Shannon 3 и хостираните open-weight модели.

Читање на streaming

Во streaming текстот на reasoning-от доаѓа прв, во посебни delta-и, а одговорот следува. Испечатете или зачувајте ги двата одделно:

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

Првиот chunk на хостиран open-weight модел, reasoning или одговор, носи и delta.role: "assistant". Стриминг

Токени за reasoning и наплата

На хостираните open-weight модели, токените за reasoning се излезни токени: се наплатуваат по излезната цена на моделот, а излезната бројка веќе ги содржи. usage овде го прикажува уделот на reasoning-от:

Ендпоинт Поле Забелешка
/v1/chat/completions usage.completion_tokens_details.reasoning_tokens Веќе вклучено во completion_tokens.
/v1/responses usage.output_tokens_details.reasoning_tokens Веќе вклучено во output_tokens.
/v1/messages usage.output_tokens Reasoning и одговор заедно. Овој формат нема посебна бројка.
  • На хостираните open-weight модели max_tokens го ограничува текстот на одговорот. Токените за reasoning не се бројат во него.
  • Бидејќи reasoning-от се наплатува како излез, нивото на напор е и поставка за трошок: off не создава токени за reasoning.
  • Моделите Shannon ги пријавуваат prompt_tokens, completion_tokens и total_tokens (input_tokens и output_tokens на /v1/messages) без дел за reasoning и наплатуваат една рамна цена по токен. Модели и цени

Reasoning во следното барање

Не мора да го испраќате reasoning-от назад. Блок thinking или ставка reasoning во разговорот што го испраќате не се проследува до моделот, па чекорот на assistant може да се врати со или без нив. Блокот thinking ги има двете полиња type и thinking; нема signature.

Грешки

Статус Тип Порака Кога
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high Хостиран open-weight модел примил вредност надвор од листата, на пример xhigh. Ништо не се наплатува од вашето салдо.
422 invalid_request_error Failed to deserialize the JSON body into the target type: … reasoning_effort не е стринг.

Грешките при автентикација, салдо и сервер се исти како за секое барање. Ракување со грешки