Reasoning effort
MpyaModel inayofikiri hurudisha maandishi yake ya reasoning kando ya jibu, kwenye field yake yenyewe. Kwenye model za open-weight zinazopangishwa field moja ya ombi huweka kina cha model kufikiri kabla ya kujibu.
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) import OpenAI from "openai";
const client = new OpenAI({ apiKey: "YOUR_API_KEY", baseURL: "https://api.shannon-ai.com/v1" });
const response = await client.chat.completions.create({
model: "Kimi-K3-3BIT-REAP",
reasoning_effort: "low",
messages: [{ role: "user", content: "Is 221 a prime number?" }],
});
const message = response.choices[0].message;
console.log("Reasoning:", message.reasoning_content);
console.log("Answer:", message.content);
console.log("Reasoning tokens:", response.usage.completion_tokens_details.reasoning_tokens); curl https://api.shannon-ai.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "Kimi-K3-3BIT-REAP",
"reasoning_effort": "low",
"messages": [
{"role": "user", "content": "Is 221 a prime number?"}
]
}' Jibu hubeba maandishi ya reasoning kwenye reasoning_content, jibu kwenye content, na tokens za reasoning kwenye usage:
{
"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}
}
} Model zipi zinafikiri
| Model | Hurudisha maandishi ya reasoning | Inatumia field ya 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 | Ndiyo | — |
| Kila model ya open-weight inayopangishwa | Ndiyo | Ndiyo |
Hizi ni flags capabilities.reasoning na capabilities.reasoning_effort ambazo GET /v1/models huripoti kwa kila id. Jibu hubeba maandishi ya reasoning tu wakati model ilitoa. Model na bei
Kuweka effort
Kila endpoint ina namna yake ya kuandika effort. Zote huchagua mojawapo ya viwango vinne vile vile.
| Field | Aina | Chaguo-msingi | Maelezo | Inatumiwa na |
|---|---|---|---|---|
reasoning_effort | string | high | /v1/chat/completions. Kina ambacho model hufikiri kabla ya kujibu: off, low, medium au high. | Model za open-weight zinazopangishwa |
reasoning | object | string | /v1/chat/completions. Thamani ile ile kama {"effort": "low"} au kama string pekee. Fields zote mbili zikitumwa, reasoning_effort ndiyo inayohesabiwa. | Model za open-weight zinazopangishwa | |
reasoning.effort | string | high | /v1/responses. Huandikwa kama kitu {"effort": "low"}. | Model za open-weight zinazopangishwa |
thinking | object | /v1/messages. {"type": "enabled", "budget_tokens": n} au {"type": "disabled"}. Bajeti huchagua mojawapo ya viwango; tazama jedwali lililo chini zaidi. | Model za open-weight zinazopangishwa |
{
"model": "Kimi-K3-3BIT-REAP",
"reasoning_effort": "low",
"messages": [{"role": "user", "content": "Is 221 a prime number?"}]
} {
"model": "Kimi-K3-3BIT-REAP",
"reasoning": {"effort": "low"},
"input": "Is 221 a prime number?"
} {
"model": "Kimi-K3-3BIT-REAP",
"max_tokens": 1024,
"thinking": {"type": "enabled", "budget_tokens": 2048},
"messages": [{"role": "user", "content": "Is 221 a prime number?"}]
} | Thamani | Pia inakubaliwa | Athari |
|---|---|---|
off | none, minimal | Hakuna reasoning. Jibu halibebi maandishi ya reasoning. |
low | Reasoning fupi. | |
medium | default | Kina cha wastani. |
high | max | Kiwango cha kina zaidi. Hiki ni kiwango cha ombi lisilotuma thamani. |
- Thamani husomwa bila kujali herufi kubwa au ndogo.
- Thamani
defaultinamaanishamedium. Kuacha field nje kunamaanishahigh. - Model za Shannon (
shannon-*) huweka kina chao wenyewe kwenye kila ombi;GET /v1/modelshuripotireasoning_effort: falsekwa hizo.
Bajeti ya thinking kwenye /v1/messages
Kwenye /v1/messages field ya thinking huchagua kiwango. budget_tokens huchagua mojawapo ya viwango vya juu; si kikomo chake cha tokens. adaptive husomwa kama enabled.
| Unatuma | Kiwango |
|---|---|
{"type": "disabled"} | off |
{"type": "enabled", "budget_tokens": n} na n hadi 2,048 | low |
n kutoka 2,049 hadi 8,192 | medium |
n kubwa zaidi, au enabled bila budget_tokens | high |
Hakuna field ya thinking | high |
Maandishi ya reasoning yanafika wapi
Maandishi ya reasoning daima ni tofauti na jibu. Kila umbizo lina mahali pake pa kuyaweka:
| Endpoint | Bila stream | Kwa stream |
|---|---|---|
/v1/chat/completions | choices[0].message.reasoning_content: string, au null wakati model haikutoa yoyote. | Chunks zenye choices[0].delta.reasoning_content, kabla ya chunks zenye delta.content. |
/v1/responses | Item ya output {"type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]} kabla ya item ya message. Hakuna item wakati hakuna reasoning. | response.output_item.added yenye item ya reasoning, kisha matukio ya response.reasoning_summary_text.delta na response.reasoning_summary_text.done moja. |
/v1/messages | Content block ya kwanza {"type": "thinking", "thinking": "…"}, kisha block ya text. Hakuna block ya thinking wakati hakuna reasoning. | Content block ya thinking: content_block_start, matukio ya content_block_delta yenye thinking_delta, content_block_stop. Block ya maandishi inafuata. |
{
"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}
}
} {
"output": [
{
"id": "rs_6f0a2c4e8b1d4f3a9c7e5b3d1f8a6c4e",
"type": "reasoning",
"summary": [
{
"type": "summary_text",
"text": "Try small primes. 221 / 13 = 17, so 221 = 13 x 17."
}
]
},
{
"id": "msg_1b3d5f7a9c2e4b6d8f0a2c4e6b8d0f1a",
"type": "message",
"role": "assistant",
"status": "completed",
"content": [
{
"type": "output_text",
"text": "No. 221 = 13 x 17, so it is not prime.",
"annotations": []
}
]
}
],
"usage": {
"input_tokens": 14,
"input_tokens_details": {"cached_tokens": 0},
"output_tokens": 43,
"output_tokens_details": {"reasoning_tokens": 27},
"total_tokens": 57
}
} {
"content": [
{
"type": "thinking",
"thinking": "Try small primes. 221 / 13 = 17, so 221 = 13 x 17."
},
{"type": "text", "text": "No. 221 = 13 x 17, so it is not prime."}
],
"stop_reason": "end_turn",
"usage": {
"input_tokens": 14,
"cache_read_input_tokens": 0,
"cache_creation_input_tokens": 0,
"output_tokens": 43
}
} Mahali pa kuangalia, kwa kila model:
| Model | Maandishi yanafika wapi |
|---|---|
| Model za open-weight zinazopangishwa | Kwenye kila endpoint, kwa stream au bila. Ombi lenye effort off, au lenye response_format / text.format, hujibiwa bila maandishi ya reasoning. |
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro | Kwenye kila endpoint, kwa stream au bila, kila wakati model ilipotoa maandishi ya reasoning. |
shannon-2-lite, shannon-2-pro | /v1/chat/completions, bila stream: kwenye message.reasoning_content. Kwa stream, kwenye ombi lisilo na tools wala response_format: stream hubeba mistari ya maoni : thinking model inapofikiri, kisha chunks za jibu. /v1/messages, kwa stream: block ya thinking kabla ya block ya maandishi. |
shannon-1.6-pro, shannon-coder-1 | Kwenye majibu ya stream na kwenye majibu ya maombi yanayobeba tools, kila wakati model ilipotoa maandishi ya reasoning. |
Kwenye /v1/responses, jibu lisilo la stream hubeba item ya reasoning kwa familia ya Shannon 3 na model za open-weight zinazopangishwa.
Kusoma stream
Kwenye stream maandishi ya reasoning huja kwanza, kwenye deltas zake, na jibu hufuata. Yachapishe au yahifadhi kando:
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 import OpenAI from "openai";
const client = new OpenAI({ apiKey: "YOUR_API_KEY", baseURL: "https://api.shannon-ai.com/v1" });
const stream = await client.chat.completions.create({
model: "Kimi-K3-3BIT-REAP",
reasoning_effort: "medium",
stream: true,
messages: [{ role: "user", content: "Is 221 a prime number?" }],
});
for await (const chunk of stream) {
const delta = chunk.choices[0]?.delta ?? {};
if (delta.reasoning_content) process.stdout.write(delta.reasoning_content); // the reasoning text comes first
if (delta.content) process.stdout.write(delta.content); // then the answer
} curl -N https://api.shannon-ai.com/v1/chat/completions \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "Kimi-K3-3BIT-REAP",
"reasoning_effort": "medium",
"stream": true,
"messages": [
{"role": "user", "content": "Is 221 a prime number?"}
]
}' Chunk ya kwanza ya model ya open-weight inayopangishwa, ya reasoning au ya jibu, pia hubeba delta.role: "assistant". Kutiririsha
Tokens za reasoning na malipo
Kwenye model za open-weight zinazopangishwa, tokens za reasoning ni tokens za output: hutozwa kwa bei ya output ya model, na hesabu ya output tayari inazijumuisha. usage inaonyesha sehemu ya reasoning hapa:
| Endpoint | Field | Dokezo |
|---|---|---|
/v1/chat/completions | usage.completion_tokens_details.reasoning_tokens | Tayari imejumuishwa kwenye completion_tokens. |
/v1/responses | usage.output_tokens_details.reasoning_tokens | Tayari imejumuishwa kwenye output_tokens. |
/v1/messages | usage.output_tokens | Reasoning na jibu kwa pamoja. Umbizo hili halina hesabu tofauti. |
- Kwenye model za open-weight zinazopangishwa
max_tokensinapunguza maandishi ya jibu. Tokens za reasoning hazihesabiwi dhidi yake. - Kwa sababu reasoning hutozwa kama output, kiwango cha effort pia ni mpangilio wa gharama:
offhaitoi tokens za reasoning. - Model za Shannon huripoti
prompt_tokens,completion_tokensnatotal_tokens(input_tokensnaoutput_tokenskwenye/v1/messages) bila sehemu ya reasoning, na hutoza bei moja isiyobadilika kwa kila token. Model na bei
Reasoning kwenye ombi linalofuata
Huhitaji kutuma reasoning nyuma. Block ya thinking au item ya reasoning kwenye mazungumzo unayotuma haipitishwi kwa model, kwa hiyo zamu ya assistant inaweza kurudi nayo au bila. Block ya thinking ina fields mbili type na thinking; haina signature.
Makosa
| Hali | Aina | Ujumbe | Lini |
|---|---|---|---|
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | Model ya open-weight inayopangishwa ilipokea thamani iliyo nje ya orodha, kwa mfano xhigh. Hakuna kinachotolewa kwenye salio lako. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | reasoning_effort si string. |
Makosa ya uthibitishaji, salio na seva ni yale yale kama kwa kila ombi. Ushughulikiaji wa Makosa