Përpjekja e arsyetimit
E reNjë model që arsyeton e kthen tekstin e arsyetimit pranë përgjigjes, në një fushë më vete. Te modelet open-weight të hostuara një fushë kërkese cakton sa thellë arsyeton modeli para se të përgjigjet.
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?"}
]
}' Përgjigjja e mban tekstin e arsyetimit te reasoning_content, përgjigjen te content, dhe tokens-at e arsyetimit te 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}
}
} Cilët modele arsyetojnë
| Modeli | Kthen tekst arsyetimi | Zbaton fushën e përpjekjes |
|---|---|---|
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 | Po | — |
| Çdo model open-weight i hostuar | Po | Po |
Këto janë flag-et capabilities.reasoning dhe capabilities.reasoning_effort që GET /v1/models i raporton për çdo id. Një përgjigje mban tekst arsyetimi vetëm kur modeli ka prodhuar ndonjë. Modelet dhe çmimet
Caktimi i përpjekjes
Çdo endpoint ka shkrimin e vet të përpjekjes. Të gjitha zgjedhin një nga të njëjtat katër nivele.
| Fusha | Lloji | Parazgjedhja | Përshkrimi | Zbatohet nga |
|---|---|---|---|---|
reasoning_effort | string | high | /v1/chat/completions. Sa thellë arsyeton modeli para se të përgjigjet: off, low, medium ose high. | Modele open-weight të hostuara |
reasoning | object | string | /v1/chat/completions. E njëjta vlerë si {"effort": "low"} ose si string i zhveshur. Kur dërgohen të dyja fushat, vlen reasoning_effort. | Modele open-weight të hostuara | |
reasoning.effort | string | high | /v1/responses. Shkruhet si objekti {"effort": "low"}. | Modele open-weight të hostuara |
thinking | object | /v1/messages. {"type": "enabled", "budget_tokens": n} ose {"type": "disabled"}. Buxheti zgjedh një nga nivelet; shihni tabelën më poshtë. | Modele open-weight të hostuara |
{
"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?"}]
} | Vlera | Pranohet edhe | Efekti |
|---|---|---|
off | none, minimal | Pa arsyetim. Përgjigjja nuk mban tekst arsyetimi. |
low | Arsyetim i shkurtër. | |
medium | default | Thellësi mesatare. |
high | max | Niveli më i thellë. Ky është niveli i një kërkese që nuk dërgon vlerë. |
- Vlerat lexohen pa marrë parasysh shkronjat e mëdha ose të vogla.
- Vlera
defaultnënkuptonmedium. Heqja e fushës nënkuptonhigh. - Modelet Shannon (
shannon-*) e caktojnë vetë thellësinë në çdo kërkesë;GET /v1/modelsraportonreasoning_effort: falsepër to.
Buxheti thinking në /v1/messages
Në /v1/messages fusha thinking zgjedh nivelin. budget_tokens zgjedh një nga nivelet më sipër; nuk është kufi tokens-ash më vete. adaptive lexohet si enabled.
| Ju dërgoni | Niveli |
|---|---|
{"type": "disabled"} | off |
{"type": "enabled", "budget_tokens": n} me n deri në 2,048 | low |
n nga 2,049 deri 8,192 | medium |
Një n më i madh, ose enabled pa budget_tokens | high |
Pa fushë thinking | high |
Ku arrin teksti i arsyetimit
Teksti i arsyetimit është gjithmonë i ndarë nga përgjigjja. Çdo format ka vendin e vet për të:
| Endpoint | Pa stream | Me stream |
|---|---|---|
/v1/chat/completions | choices[0].message.reasoning_content: një string, ose null kur modeli nuk prodhoi asnjë. | Pjesë me choices[0].delta.reasoning_content, para pjesëve me delta.content. |
/v1/responses | Një element output {"type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]} para elementit message. Pa element kur nuk ka arsyetim. | response.output_item.added me një element reasoning, pastaj ngjarje response.reasoning_summary_text.delta dhe një response.reasoning_summary_text.done. |
/v1/messages | Një bllok i parë përmbajtjeje {"type": "thinking", "thinking": "…"}, pastaj blloku text. Pa bllok thinking kur nuk ka arsyetim. | Një bllok përmbajtjeje thinking: content_block_start, ngjarje content_block_delta me thinking_delta, content_block_stop. Blloku i tekstit vijon. |
{
"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
}
} Ku të shikoni, për model:
| Modelet | Ku arrin teksti |
|---|---|
| Modele open-weight të hostuara | Në çdo endpoint, me stream ose pa. Një kërkesë me përpjekje off, ose me response_format / text.format, merr përgjigje pa tekst arsyetimi. |
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro | Në çdo endpoint, me stream ose pa, sa herë që modeli prodhoi tekst arsyetimi. |
shannon-2-lite, shannon-2-pro | /v1/chat/completions, pa stream: te message.reasoning_content. Me stream, në një kërkesë pa tools ose response_format: stream-i mban rreshta komenti : thinking ndërsa modeli arsyeton, pastaj pjesët e përgjigjes. /v1/messages, me stream: një bllok thinking para bllokut të tekstit. |
shannon-1.6-pro, shannon-coder-1 | Në përgjigjet me stream dhe në përgjigjet ndaj kërkesave që mbajnë tools, sa herë që modeli prodhoi tekst arsyetimi. |
Në /v1/responses, një përgjigje pa stream e mban elementin reasoning për familjen Shannon 3 dhe modelet open-weight të hostuara.
Leximi i një stream-i
Në një stream teksti i arsyetimit vjen i pari, në delta më vete, dhe përgjigjja vijon. Printojini ose ruajini të dyja veçmas:
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?"}
]
}' Pjesa e parë e një modeli open-weight të hostuar, arsyetim ose përgjigje, mban edhe delta.role: "assistant". Transmetim
Tokens-at e arsyetimit dhe faturimi
Te modelet open-weight të hostuara, tokens-at e arsyetimit janë tokens dalje: faturohen me çmimin e daljes së modelit, dhe numri i daljes i përfshin tashmë. usage e tregon këtu pjesën e arsyetimit:
| Endpoint | Fusha | Shënim |
|---|---|---|
/v1/chat/completions | usage.completion_tokens_details.reasoning_tokens | I përfshirë tashmë te completion_tokens. |
/v1/responses | usage.output_tokens_details.reasoning_tokens | I përfshirë tashmë te output_tokens. |
/v1/messages | usage.output_tokens | Arsyetimi dhe përgjigjja së bashku. Ky format nuk ka numërim të veçantë. |
- Te modelet open-weight të hostuara
max_tokenskufizon tekstin e përgjigjes. Tokens-at e arsyetimit nuk numërohen kundër tij. - Meqë arsyetimi faturohet si dalje, niveli i përpjekjes është edhe një cilësim kostoje:
offnuk prodhon tokens arsyetimi. - Modelet Shannon raportojnë
prompt_tokens,completion_tokensdhetotal_tokens(input_tokensdheoutput_tokensnë/v1/messages) pa pjesë arsyetimi, dhe faturojnë një çmim fiks për token. Modelet dhe çmimet
Arsyetimi në kërkesën tjetër
Nuk keni nevojë ta dërgoni arsyetimin mbrapsht. Një bllok thinking ose një element reasoning në bisedën që dërgoni nuk i kalohet modelit, kështu që një radhë e assistant mund të kthehet me ose pa të. Një bllok thinking ka dy fushat type dhe thinking; nuk ka signature.
Gabimet
| Statusi | Lloji | Mesazhi | Kur |
|---|---|---|---|
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | Një model open-weight i hostuar mori një vlerë jashtë listës, për shembull xhigh. Nga bilanci juaj nuk tërhiqet asgjë. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | reasoning_effort nuk është string. |
Gabimet e autentikimit, bilancit dhe serverit janë të njëjta si për çdo kërkesë. Trajtimi i gabimeve