Reasoning effort
නවතර්ක කරන model එකක් තම තර්කන පෙළ පිළිතුර අසල, ඊටම වූ field එකක ආපසු දෙයි. අපගේ සේවාදායකවල ධාවනය වන open-weight models මත, එක ඉල්ලීම් field එකක් මගින් model එක පිළිතුරු දීමට පෙර කොතරම් ගැඹුරින් තර්ක කරයිද යන්න සකසයි.
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?"}
]
}' පිළිතුරේ තර්කන පෙළ reasoning_content හි, පිළිතුර content හි, සහ තර්කන tokens 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}
}
} තර්ක කරන models මොනවාද
| Model | තර්කන පෙළ ආපසු දෙයි | effort field එක ක්රියාත්මක කරයි |
|---|---|---|
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 model එකක්ම | ඔව් | ඔව් |
මේවා GET /v1/models සෑම id එකකටම වාර්තා කරන capabilities.reasoning සහ capabilities.reasoning_effort flags ය. Model එක යමක් නිපදවූ විට පමණක් පිළිතුරක තර්කන පෙළ ඇත. Models සහ මිල ගණන්
Effort සැකසීම
සෑම endpoint එකකටම effort ලියන්නේ කෙසේද යන්න ගැන තමන්ගේම ආකාරයක් ඇත. ඒ සියල්ලම එකම මට්ටම් හතරෙන් එකක් තෝරයි.
| Field | වර්ගය | පෙරනිමිය | විස්තරය | යොදන්නේ |
|---|---|---|---|---|
reasoning_effort | string | high | /v1/chat/completions. Model එක පිළිතුරු දීමට පෙර කොතරම් ගැඹුරින් තර්ක කරයිද: off, low, medium හෝ high. | අපගේ සේවාදායකවල ධාවනය වන open-weight models |
reasoning | object | string | /v1/chat/completions. {"effort": "low"} ලෙස හෝ හුදෙක් string එකක් ලෙස එම අගයම. Fields දෙකම යවන විට reasoning_effort ගණන් ගැනේ. | අපගේ සේවාදායකවල ධාවනය වන open-weight models | |
reasoning.effort | string | high | /v1/responses. {"effort": "low"} object එක ලෙස ලියා ඇත. | අපගේ සේවාදායකවල ධාවනය වන open-weight models |
thinking | object | /v1/messages. {"type": "enabled", "budget_tokens": n} හෝ {"type": "disabled"}. අයවැය මට්ටම් වලින් එකක් තෝරයි; පහත ඇති වගුව බලන්න. | අපගේ සේවාදායකවල ධාවනය වන open-weight models |
{
"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?"}]
} | අගය | මේවා ද පිළිගනී | බලපෑම |
|---|---|---|
off | none, minimal | තර්කනයක් නැත. පිළිතුරේ තර්කන පෙළක් නැත. |
low | කෙටි තර්කනය. | |
medium | default | මධ්යම ගැඹුර. |
high | max | ගැඹුරුම මට්ටම. අගයක් නොයවන ඉල්ලීමක මට්ටම මෙයයි. |
- අගයන් ලොකු හෝ කුඩා අකුරු නොසලකා කියවයි.
defaultඅගය යනුmediumය. Field එක නොයැවීම යනුhighය.- Shannon models (
shannon-*) සෑම ඉල්ලීමකදීම තමන්ගේම ගැඹුර තීරණය කරයි;GET /v1/modelsඒවා සඳහාreasoning_effort: falseවාර්තා කරයි.
/v1/messages හි thinking සඳහා වන token අයවැය
/v1/messages හි thinking field එක මට්ටම තෝරයි. budget_tokens ඉහත මට්ටම් වලින් එකක් තෝරයි; එය token සීමාවක් නොවේ. adaptive enabled ලෙස කියවයි.
| ඔබ යවන්නේ | මට්ටම |
|---|---|
{"type": "disabled"} | off |
n 2,048 දක්වා සහිත {"type": "enabled", "budget_tokens": n} | low |
n 2,049 සිට 8,192 දක්වා | medium |
විශාල n එකක්, හෝ budget_tokens නොමැති enabled | high |
thinking field එකක් නැත | high |
තර්කන පෙළ පැමිණෙන තැන
තර්කන පෙළ සෑම විටම පිළිතුරෙන් වෙන්ව පවතී. සෑම format එකකටම ඒ සඳහා තමන්ගේම ස්ථානයක් ඇත:
| Endpoint | Stream නොකළ | Stream කළ |
|---|---|---|
/v1/chat/completions | choices[0].message.reasoning_content: string එකක්, නැතහොත් model එක කිසිවක් නිපදවා නැති විට null. | choices[0].delta.reasoning_content සහිත chunks, delta.content සහිත chunks වලට පෙර. |
/v1/responses | message item එකට පෙර output item එකක් {"type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]}. තර්කනයක් නැති විට item එකක් නැත. | reasoning item එකක් සහිත response.output_item.added, ඉන්පසු response.reasoning_summary_text.delta events සහ එක response.reasoning_summary_text.done. |
/v1/messages | පළමු content block එක {"type": "thinking", "thinking": "…"}, ඉන්පසු text block එක. තර්කනයක් නැති විට thinking block එකක් නැත. | thinking content block එකක්: content_block_start, thinking_delta සහිත content_block_delta events, content_block_stop. ඉන්පසු text block එක පැමිණේ. |
{
"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
}
} බැලිය යුතු තැන, model එකකට:
| Models | පෙළ පැමිණෙන තැන |
|---|---|
| අපගේ සේවාදායකවල ධාවනය වන open-weight models | Stream කළත් නැතත් සෑම endpoint එකකම. Effort off සහිත, හෝ response_format / text.format සහිත ඉල්ලීමකට තර්කන පෙළ නොමැතිව පිළිතුරු ලැබේ. |
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro | Model එක තර්කන පෙළ නිපදවන සෑම විටම, stream කළත් නැතත් සෑම endpoint එකකම. |
shannon-2-lite, shannon-2-pro | /v1/chat/completions, stream නොකළ: message.reasoning_content හි. tools හෝ response_format නැති ඉල්ලීමක stream කළ: model එක තර්ක කරන අතරතුර stream එකේ : thinking comment පේළි, ඉන්පසු පිළිතුරු chunks. /v1/messages, stream කළ: text block එකට පෙර thinking block එකක්. |
shannon-1.6-pro, shannon-coder-1 | Model එක තර්කන පෙළ නිපදවන සෑම විටම, stream කළ පිළිතුරුවල සහ tools රැගෙන යන ඉල්ලීම්වල පිළිතුරුවල. |
/v1/responses හි, stream නොකළ පිළිතුරක් Shannon 3 පවුල සහ අපගේ සේවාදායකවල ධාවනය වන open-weight models සඳහා reasoning item එක රැගෙන යයි.
Stream එකක් කියවීම
Stream එකක තර්කන පෙළ මුලින්ම, ඊටම වූ deltas වල පැමිණෙන අතර පිළිතුර ඊට පසුව එයි. දෙක වෙන වෙනම මුද්රණය කරන්න හෝ ගබඩා කරන්න:
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?"}
]
}' අපගේ සේවාදායකවල ධාවනය වන open-weight model එකක පළමු chunk එක, තර්කනය හෝ පිළිතුර වුවත්, delta.role: "assistant" ද රැගෙන යයි. ස්ට්රීමිං
තර්කන tokens සහ බිල්පත්
අපගේ සේවාදායකවල ධාවනය වන open-weight models මත, තර්කන tokens යනු output tokens ය: ඒවා model එකේ output මිලට බිල් කෙරෙන අතර, output ගණනට ඒවා දැනටමත් ඇතුළත් වේ. usage මෙහි තර්කන කොටස පෙන්වයි:
| Endpoint | Field | සටහන |
|---|---|---|
/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 | තර්කනය සහ පිළිතුර එකට. මෙම format එකට වෙනම ගණනක් නැත. |
- අපගේ සේවාදායකවල ධාවනය වන open-weight models මත
max_tokensපිළිතුරේ පෙළ සීමා කරයි. තර්කන tokens ඊට ගණන් නොගනී. - තර්කනය output ලෙස බිල් කෙරෙන බැවින්, effort මට්ටම පිරිවැය සැකසුමක් ද වේ:
offතර්කන tokens නිපදවන්නේ නැත. - Shannon models තර්කන කොටසක් නොමැතිව
prompt_tokens,completion_tokensසහtotal_tokens(/v1/messagesහිinput_tokensසහoutput_tokens) වාර්තා කරන අතර, token එකකට එක ස්ථාවර මිලක් බිල් කරයි. Models සහ මිල ගණන්
ඊළඟ ඉල්ලීමේ තර්කනය
ඔබට තර්කනය ආපසු යැවීම අවශ්ය නැත. ඔබ යවන සංවාදයේ ඇති thinking block එකක් හෝ reasoning item එකක් model එකට ඉදිරිපත් නොකරන බැවින්, assistant turn එකක් ඒවා සමඟ හෝ නැතිව ආපසු යැවිය හැක. thinking block එකට type සහ thinking fields දෙක ඇත; එයට signature නැත.
දෝෂ
| තත්ත්වය | වර්ගය | පණිවිඩය | කවදාද |
|---|---|---|---|
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | අපගේ සේවාදායකවල ධාවනය වන open-weight model එකකට ලැයිස්තුවෙන් පිටත අගයක් ලැබුණි, උදාහරණයක් ලෙස xhigh. ඔබේ ශේෂයෙන් කිසිවක් අඩු නොවේ. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | reasoning_effort string එකක් නොවේ. |
සත්යාපනය, ශේෂය සහ server දෝෂ සෑම ඉල්ලීමකටම මෙන්ම වේ. දෝෂ