റീസണിംഗ് എഫർട്ട്
പുതിയത്റീസൺ ചെയ്യുന്ന മോഡൽ ഉത്തരത്തിനൊപ്പം, സ്വന്തം ഫീൽഡിൽ, റീസണിംഗ് ടെക്സ്റ്റ് തിരികെ നൽകുന്നു. ഹോസ്റ്റ് ചെയ്ത ഓപ്പൺ-വെയിറ്റ് മോഡലുകളിൽ, ഉത്തരം നൽകുന്നതിന് മുമ്പ് മോഡൽ എത്ര ആഴത്തിൽ റീസൺ ചെയ്യണമെന്ന് ഒരു റിക്വസ്റ്റ് ഫീൽഡ് നിശ്ചയിക്കുന്നു.
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-ലും റീസണിംഗ് ടോക്കണുകൾ 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}
}
} ഏതൊക്കെ മോഡലുകൾ റീസൺ ചെയ്യുന്നു
| മോഡൽ | റീസണിംഗ് ടെക്സ്റ്റ് തിരികെ നൽകുന്നു | എഫർട്ട് ഫീൽഡ് പ്രയോഗിക്കുന്നു |
|---|---|---|
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 | അതെ | — |
| ഹോസ്റ്റ് ചെയ്ത എല്ലാ ഓപ്പൺ-വെയിറ്റ് മോഡലും | അതെ | അതെ |
GET /v1/models ഓരോ ഐഡിക്കും റിപ്പോർട്ട് ചെയ്യുന്ന capabilities.reasoning, capabilities.reasoning_effort ഫ്ലാഗുകളാണ് ഇവ. മോഡൽ റീസണിംഗ് ടെക്സ്റ്റ് ഉണ്ടാക്കിയാൽ മാത്രമേ മറുപടിയിൽ അത് ഉണ്ടാകൂ. മോഡലുകളും വിലയും
എഫർട്ട് സജ്ജമാക്കൽ
ഓരോ എൻഡ്പോയിന്റിനും എഫർട്ട് എഴുതാൻ സ്വന്തം രീതിയുണ്ട്. എല്ലാം ഒരേ നാല് നിലകളിൽ ഒന്ന് തിരഞ്ഞെടുക്കുന്നു.
| ഫീൽഡ് | ടൈപ്പ് | ഡിഫോൾട്ട് | വിവരണം | ബാധകമാക്കുന്നത് |
|---|---|---|---|---|
reasoning_effort | string | high | /v1/chat/completions. ഉത്തരം നൽകുന്നതിന് മുമ്പ് മോഡൽ എത്ര ആഴത്തിൽ റീസൺ ചെയ്യുന്നു: off, low, medium അല്ലെങ്കിൽ high. | ഹോസ്റ്റ് ചെയ്ത ഓപ്പൺ-വെയിറ്റ് മോഡലുകൾ |
reasoning | object | string | /v1/chat/completions. {"effort": "low"} ആയോ വെറും സ്ട്രിംഗ് ആയോ അതേ മൂല്യം. രണ്ട് ഫീൽഡുകളും അയച്ചാൽ reasoning_effort പരിഗണിക്കും. | ഹോസ്റ്റ് ചെയ്ത ഓപ്പൺ-വെയിറ്റ് മോഡലുകൾ | |
reasoning.effort | string | high | /v1/responses. {"effort": "low"} ഒബ്ജക്റ്റ് ആയി എഴുതുന്നു. | ഹോസ്റ്റ് ചെയ്ത ഓപ്പൺ-വെയിറ്റ് മോഡലുകൾ |
thinking | object | /v1/messages. {"type": "enabled", "budget_tokens": n} അല്ലെങ്കിൽ {"type": "disabled"}. ബജറ്റ് നിലകളിൽ ഒന്ന് തിരഞ്ഞെടുക്കുന്നു; താഴെയുള്ള പട്ടിക കാണുക. | ഹോസ്റ്റ് ചെയ്ത ഓപ്പൺ-വെയിറ്റ് മോഡലുകൾ |
{
"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എന്നാണ് അർത്ഥമാക്കുന്നത്. ഫീൽഡ് ഒഴിവാക്കിയാൽhighഎന്നാണ് അർത്ഥം.- Shannon മോഡലുകൾ (
shannon-*) ഓരോ റിക്വസ്റ്റിലും സ്വന്തം ആഴം സജ്ജമാക്കുന്നു;GET /v1/modelsഅവയ്ക്ക്reasoning_effort: falseറിപ്പോർട്ട് ചെയ്യുന്നു.
/v1/messages-ലെ തിങ്കിംഗ് ബജറ്റ്
/v1/messages-ൽ thinking ഫീൽഡ് നില തിരഞ്ഞെടുക്കുന്നു. budget_tokens മുകളിലെ നിലകളിൽ ഒന്ന് തിരഞ്ഞെടുക്കുന്നു; അത് സ്വന്തമായ ടോക്കൺ പരിധിയല്ല. 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 ഫീൽഡ് ഇല്ല | high |
റീസണിംഗ് ടെക്സ്റ്റ് എവിടെ എത്തുന്നു
റീസണിംഗ് ടെക്സ്റ്റ് എപ്പോഴും ഉത്തരത്തിൽ നിന്ന് വേറിട്ടതാണ്. ഓരോ ഫോർമാറ്റിനും അതിനായി സ്വന്തം സ്ഥാനമുണ്ട്:
| എൻഡ്പോയിന്റ് | സ്ട്രീം ചെയ്യാത്തത് | സ്ട്രീം ചെയ്തത് |
|---|---|---|
/v1/chat/completions | choices[0].message.reasoning_content: ഒരു സ്ട്രിംഗ്, മോഡൽ ഒന്നും ഉണ്ടാക്കിയില്ലെങ്കിൽ null. | delta.content ഉള്ള ചങ്കുകൾക്ക് മുമ്പ്, choices[0].delta.reasoning_content ഉള്ള ചങ്കുകൾ. |
/v1/responses | message ഇനത്തിന് മുമ്പ് output ഇനം {"type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]}. റീസണിംഗ് ഇല്ലെങ്കിൽ ഇനമില്ല. | reasoning ഇനത്തോടെ response.output_item.added, തുടർന്ന് response.reasoning_summary_text.delta ഇവന്റുകളും ഒരു response.reasoning_summary_text.done-ഉം. |
/v1/messages | ആദ്യ കണ്ടന്റ് ബ്ലോക്ക് {"type": "thinking", "thinking": "…"}, തുടർന്ന് text ബ്ലോക്ക്. റീസണിംഗ് ഇല്ലെങ്കിൽ thinking ബ്ലോക്ക് ഇല്ല. | ഒരു thinking കണ്ടന്റ് ബ്ലോക്ക്: content_block_start, thinking_delta ഉള്ള content_block_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}
}
} {
"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
}
} എവിടെ നോക്കണം, ഓരോ മോഡലിനും:
| മോഡലുകൾ | ടെക്സ്റ്റ് എവിടെ എത്തുന്നു |
|---|---|
| ഹോസ്റ്റ് ചെയ്ത ഓപ്പൺ-വെയിറ്റ് മോഡലുകൾ | എല്ലാ എൻഡ്പോയിന്റിലും, സ്ട്രീം ചെയ്താലും ഇല്ലെങ്കിലും. എഫർട്ട് off ഉള്ളതോ response_format / text.format ഉള്ളതോ ആയ റിക്വസ്റ്റിന് റീസണിംഗ് ടെക്സ്റ്റ് ഇല്ലാതെ ഉത്തരം ലഭിക്കും. |
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro | എല്ലാ എൻഡ്പോയിന്റിലും, സ്ട്രീം ചെയ്താലും ഇല്ലെങ്കിലും, മോഡൽ റീസണിംഗ് ടെക്സ്റ്റ് ഉണ്ടാക്കുമ്പോഴെല്ലാം. |
shannon-2-lite, shannon-2-pro | /v1/chat/completions, സ്ട്രീം ചെയ്യാത്തത്: message.reasoning_content-ൽ. സ്ട്രീം ചെയ്തത്, tools അല്ലെങ്കിൽ response_format ഇല്ലാത്ത റിക്വസ്റ്റിൽ: മോഡൽ റീസൺ ചെയ്യുമ്പോൾ സ്ട്രീം : thinking എന്ന കമന്റ് വരികൾ വഹിക്കുന്നു, പിന്നെ ഉത്തര ചങ്കുകൾ. /v1/messages, സ്ട്രീം ചെയ്തത്: ടെക്സ്റ്റ് ബ്ലോക്കിന് മുമ്പ് ഒരു thinking ബ്ലോക്ക്. |
shannon-1.6-pro, shannon-coder-1 | സ്ട്രീം ചെയ്ത മറുപടികളിലും tools ഉള്ള റിക്വസ്റ്റുകളുടെ മറുപടികളിലും, മോഡൽ റീസണിംഗ് ടെക്സ്റ്റ് ഉണ്ടാക്കുമ്പോഴെല്ലാം. |
/v1/responses-ൽ സ്ട്രീം ചെയ്യാത്ത മറുപടി Shannon 3 കുടുംബത്തിനും ഹോസ്റ്റ് ചെയ്ത ഓപ്പൺ-വെയിറ്റ് മോഡലുകൾക്കും reasoning ഇനം വഹിക്കുന്നു.
സ്ട്രീം വായിക്കൽ
സ്ട്രീമിൽ റീസണിംഗ് ടെക്സ്റ്റ് ആദ്യം, സ്വന്തം ഡെൽറ്റകളിൽ, വരുന്നു, ഉത്തരം പിന്നാലെ. ഇവ രണ്ടും പ്രത്യേകം പ്രിന്റ് ചെയ്യുകയോ സൂക്ഷിക്കുകയോ ചെയ്യുക:
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?"}
]
}' ഹോസ്റ്റ് ചെയ്ത ഓപ്പൺ-വെയിറ്റ് മോഡലിന്റെ ആദ്യ ചങ്കിൽ, റീസണിംഗ് ആയാലും ഉത്തരം ആയാലും, delta.role: "assistant"-ഉം ഉണ്ടാകും. സ്റ്റ്രീമിംഗ്
റീസണിംഗ് ടോക്കണുകളും ബില്ലിംഗും
ഹോസ്റ്റ് ചെയ്ത ഓപ്പൺ-വെയിറ്റ് മോഡലുകളിൽ റീസണിംഗ് ടോക്കണുകൾ ഔട്ട്പുട്ട് ടോക്കണുകളാണ്: അവ മോഡലിന്റെ ഔട്ട്പുട്ട് വിലയിൽ ബിൽ ചെയ്യുന്നു, ഔട്ട്പുട്ട് എണ്ണത്തിൽ അവ ഇതിനകം ഉൾപ്പെടുന്നു. usage ഇവിടെ റീസണിംഗ് വിഹിതം കാണിക്കുന്നു:
| എൻഡ്പോയിന്റ് | ഫീൽഡ് | കുറിപ്പ് |
|---|---|---|
/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 | റീസണിംഗും ഉത്തരവും ചേർന്നത്. ഈ ഫോർമാറ്റിൽ പ്രത്യേക എണ്ണം ഇല്ല. |
- ഹോസ്റ്റ് ചെയ്ത ഓപ്പൺ-വെയിറ്റ് മോഡലുകളിൽ
max_tokensഉത്തര ടെക്സ്റ്റിനെ പരിമിതപ്പെടുത്തുന്നു. റീസണിംഗ് ടോക്കണുകൾ ഇതിൽ കണക്കാക്കില്ല. - റീസണിംഗ് ഔട്ട്പുട്ടായി ബിൽ ചെയ്യപ്പെടുന്നതിനാൽ, എഫർട്ട് നില ഒരു ചെലവ് സെറ്റിംഗ് കൂടിയാണ്:
offറീസണിംഗ് ടോക്കണുകൾ ഉണ്ടാക്കുന്നില്ല. - Shannon മോഡലുകൾ റീസണിംഗ് വിഹിതമില്ലാതെ
prompt_tokens,completion_tokens,total_tokens(/v1/messages-ൽinput_tokens,output_tokens) റിപ്പോർട്ട് ചെയ്യുകയും ഓരോ ടോക്കണിനും ഒരു സ്ഥിര വില ബിൽ ചെയ്യുകയും ചെയ്യുന്നു. മോഡലുകളും വിലയും
അടുത്ത റിക്വസ്റ്റിലെ റീസണിംഗ്
റീസണിംഗ് തിരികെ അയയ്ക്കേണ്ടതില്ല. നിങ്ങൾ അയയ്ക്കുന്ന സംഭാഷണത്തിലെ thinking ബ്ലോക്കോ reasoning ഇനമോ മോഡലിലേക്ക് കൈമാറില്ല, അതിനാൽ അസിസ്റ്റന്റ് ടേൺ അതോടെയോ അതില്ലാതെയോ തിരികെ അയയ്ക്കാം. thinking ബ്ലോക്കിന് type, thinking എന്നീ രണ്ട് ഫീൽഡുകളുണ്ട്; അതിന് signature ഇല്ല.
പിശകുകൾ
| സ്റ്റാറ്റസ് | ടൈപ്പ് | സന്ദേശം | എപ്പോൾ |
|---|---|---|---|
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | ഹോസ്റ്റ് ചെയ്ത ഓപ്പൺ-വെയിറ്റ് മോഡലിന് ലിസ്റ്റിന് പുറത്തുള്ള മൂല്യം ലഭിച്ചു, ഉദാഹരണത്തിന് xhigh. നിങ്ങളുടെ ബാലൻസിൽ നിന്ന് ഒന്നും എടുക്കില്ല. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | reasoning_effort ഒരു സ്ട്രിംഗ് അല്ല. |
ഓതന്റിക്കേഷൻ, ബാലൻസ്, സെർവർ പിശകുകൾ എല്ലാ റിക്വസ്റ്റുകൾക്കും ഉള്ളതുപോലെ തന്നെയാണ്. എറർ ഹാൻഡ്ലിംഗ്