მსჯელობის effort
ახალიმოდელი, რომელიც მსჯელობს, თავის მსჯელობის ტექსტს პასუხის გვერდით, ცალკე ველში აბრუნებს. hosted open-weight მოდელებზე ერთი მოთხოვნის ველი განსაზღვრავს, რამდენად ღრმად მსჯელობს მოდელი პასუხამდე.
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}
}
} რომელი მოდელები მსჯელობენ
| მოდელი | აბრუნებს მსჯელობის ტექსტს | იყენებს 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 | დიახ | — |
| ყველა hosted open-weight მოდელი | დიახ | დიახ |
ეს არის ნიშნულები capabilities.reasoning და capabilities.reasoning_effort, რომლებსაც GET /v1/models ყოველი id-ისთვის აბრუნებს. პასუხი მსჯელობის ტექსტს შეიცავს მხოლოდ მაშინ, როცა მოდელმა ის შექმნა. მოდელები და ფასები
Effort-ის დაყენება
თითოეულ endpoint-ს effort-ის საკუთარი დაწერილობა აქვს. ყველა მათგანი ერთსა და იმავე ოთხ დონეს შორის ირჩევს.
| ველი | ტიპი | ნაგულისხმევი | აღწერა | მოქმედებს |
|---|---|---|---|---|
reasoning_effort | string | high | /v1/chat/completions. რამდენად ღრმად მსჯელობს მოდელი პასუხამდე: off, low, medium ან high. | Hosted open-weight მოდელები |
reasoning | object | string | /v1/chat/completions. იგივე მნიშვნელობა, როგორც {"effort": "low"}, ან უბრალო სტრიქონის სახით. თუ ორივე ველი გაიგზავნა, ძალაშია reasoning_effort. | Hosted open-weight მოდელები | |
reasoning.effort | string | high | /v1/responses. იწერება ობიექტის სახით {"effort": "low"}. | Hosted open-weight მოდელები |
thinking | object | /v1/messages. {"type": "enabled", "budget_tokens": n} ან {"type": "disabled"}. ბიუჯეტი ერთ-ერთ დონეს ირჩევს; იხილეთ ქვემოთ მოცემული ცხრილი. | Hosted open-weight მოდელები |
{
"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.
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 |
სად მოდის მსჯელობის ტექსტი
მსჯელობის ტექსტი პასუხისგან ყოველთვის გამოყოფილია. თითოეულ ფორმატს მისთვის საკუთარი ადგილი აქვს:
| Endpoint | სტრიმის გარეშე | სტრიმით |
|---|---|---|
/v1/chat/completions | choices[0].message.reasoning_content: სტრიქონი, ან null, თუ მოდელმა არაფერი შექმნა. | ნაწილები choices[0].delta.reasoning_content-ით, delta.content-იანი ნაწილებამდე. |
/v1/responses | output ელემენტი {"type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]} message ელემენტამდე. მსჯელობის არარსებობისას ელემენტი არ არის. | response.output_item.added reasoning ელემენტით, შემდეგ response.reasoning_summary_text.delta მოვლენები და ერთი response.reasoning_summary_text.done. |
/v1/messages | პირველი content ბლოკი {"type": "thinking", "thinking": "…"}, შემდეგ text ბლოკი. მსჯელობის არარსებობისას thinking ბლოკი არ არის. | thinking content ბლოკი: content_block_start, content_block_delta მოვლენები thinking_delta-ით, content_block_stop. შემდეგ მოდის text ბლოკი. |
{
"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
}
} სად ვეძებოთ, მოდელების მიხედვით:
| მოდელები | სად მოდის ტექსტი |
|---|---|
| Hosted open-weight მოდელები | ყველა endpoint-ზე, სტრიმით თუ სტრიმის გარეშე. მოთხოვნას effort-ით off, ან response_format / text.format-ით, პასუხი მსჯელობის ტექსტის გარეშე მოდის. |
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro | ყველა endpoint-ზე, სტრიმით თუ სტრიმის გარეშე, როცა მოდელმა მსჯელობის ტექსტი შექმნა. |
shannon-2-lite, shannon-2-pro | /v1/chat/completions, სტრიმის გარეშე: message.reasoning_content-ში. სტრიმით, მოთხოვნაში tools-ისა და response_format-ის გარეშე: სანამ მოდელი მსჯელობს, სტრიმი კომენტარის ხაზებს : thinking შეიცავს, შემდეგ მოდის პასუხის ნაწილები. /v1/messages, სტრიმით: thinking ბლოკი text ბლოკამდე. |
shannon-1.6-pro, shannon-coder-1 | სტრიმით მიღებულ პასუხებში და იმ მოთხოვნების პასუხებში, რომლებიც tools-ს შეიცავენ, როცა მოდელმა მსჯელობის ტექსტი შექმნა. |
/v1/responses-ზე სტრიმის გარეშე მიღებული პასუხი Shannon 3-ის ოჯახისა და hosted open-weight მოდელებისთვის 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?"}
]
}' hosted open-weight მოდელის პირველი ნაწილი, მსჯელობისა იქნება თუ პასუხის, ასევე შეიცავს delta.role: "assistant". სტრიმინგი
მსჯელობის ტოკენები და ბილინგი
hosted open-weight მოდელებზე მსჯელობის ტოკენები გამოტანის ტოკენებია: ისინი მოდელის გამოტანის ფასით იანგარიშება და გამოტანის რაოდენობა მათ უკვე შეიცავს. usage აქ მსჯელობის წილს აჩვენებს:
| Endpoint | ველი | შენიშვნა |
|---|---|---|
/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 | მსჯელობა და პასუხი ერთად. ამ ფორმატში ცალკე რაოდენობა არ არის. |
- hosted open-weight მოდელებზე
max_tokensპასუხის ტექსტს ზღუდავს. მსჯელობის ტოკენები მასში არ ითვლება. - რადგან მსჯელობა გამოტანის სახით იანგარიშება, effort-ის დონე ასევე ღირებულების პარამეტრია:
offმსჯელობის ტოკენებს არ ქმნის. - Shannon მოდელები აბრუნებენ
prompt_tokens-ს,completion_tokens-სა დაtotal_tokens-ს (/v1/messages-ზეinput_tokens-სა დაoutput_tokens-ს) მსჯელობის წილის გარეშე და ერთ ერთგვაროვან ფასს იანგარიშებენ თითო ტოკენზე. მოდელები და ფასები
მსჯელობა შემდეგ მოთხოვნაში
მსჯელობის უკან გაგზავნა საჭირო არ არის. თქვენ მიერ გაგზავნილ საუბარში thinking ბლოკი ან reasoning ელემენტი მოდელს არ გადაეცემა, ამიტომ assistant-ის ბიჯის დაბრუნება შეიძლება მასთან ერთადაც და მის გარეშეც. thinking ბლოკს ორი ველი აქვს: type და thinking; signature არ აქვს.
შეცდომები
| სტატუსი | ტიპი | შეტყობინება | როდის |
|---|---|---|---|
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | Hosted open-weight მოდელმა მიიღო სიის გარეთ მყოფი მნიშვნელობა, მაგალითად xhigh. თქვენი ბალანსიდან არაფერი იკრიფება. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | reasoning_effort სტრიქონი არ არის. |
ავთენტიკაციის, ბალანსისა და სერვერის შეცდომები იგივეა, რაც ყველა მოთხოვნისთვის. შეცდომების დამუშავება