Reasoning effort
YeniReasoning edən model cavabın yanında öz reasoning mətnini ayrıca sahədə qaytarır. Host edilən açıq çəkili modellərdə bir sorğu sahəsi modelin cavab verməzdən əvvəl nə qədər dərin reasoning etdiyini təyin edir.
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?"}
]
}' Cavab reasoning mətnini reasoning_content-də, cavabı content-də, reasoning tokenlərini isə usage-də daşıyır:
{
"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}
}
} Hansı modellər reasoning edir
| Model | Reasoning mətni qaytarır | Effort sahəsini tətbiq edir |
|---|---|---|
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 | Bəli | — |
| Hər host edilən açıq çəkili model | Bəli | Bəli |
Bunlar GET /v1/models-in hər id üçün bildirdiyi capabilities.reasoning və capabilities.reasoning_effort bayraqlarıdır. Cavab reasoning mətnini yalnız model yaratdıqda daşıyır. Modellər və qiymətlər
Effort-un təyin edilməsi
Hər endpoint-in effort üçün öz yazılışı var. Hamısı eyni dörd səviyyədən birini seçir.
| Sahə | Tip | Defolt | Təsvir | Tətbiq edən |
|---|---|---|---|---|
reasoning_effort | string | high | /v1/chat/completions. Modelin cavab verməzdən əvvəl nə qədər dərin reasoning etməsi: off, low, medium və ya high. | Host edilən açıq çəkili modellər |
reasoning | object | string | /v1/chat/completions. {"effort": "low"} ilə eyni dəyər və ya sadə sətir kimi. Hər iki sahə göndərildikdə reasoning_effort nəzərə alınır. | Host edilən açıq çəkili modellər | |
reasoning.effort | string | high | /v1/responses. {"effort": "low"} obyekti kimi yazılır. | Host edilən açıq çəkili modellər |
thinking | object | /v1/messages. {"type": "enabled", "budget_tokens": n} və ya {"type": "disabled"}. Büdcə səviyyələrdən birini seçir; aşağıdakı cədvələ baxın. | Host edilən açıq çəkili modellər |
{
"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?"}]
} | Dəyər | Həmçinin qəbul edilir | Təsir |
|---|---|---|
off | none, minimal | Reasoning yoxdur. Cavab reasoning mətni daşımır. |
low | Qısa reasoning. | |
medium | default | Orta dərinlik. |
high | max | Ən dərin səviyyə. Dəyər göndərməyən sorğunun səviyyəsi budur. |
- Dəyərlər böyük və kiçik hərfə baxılmadan oxunur.
defaultdəyərimediumdeməkdir. Sahəni buraxmaqhighdeməkdir.- Shannon modelləri (
shannon-*) hər sorğuda dərinliyi özü təyin edir;GET /v1/modelsonlar üçünreasoning_effort: falsebildirir.
/v1/messages-də thinking büdcəsi
/v1/messages-də thinking sahəsi səviyyəni seçir. budget_tokens yuxarıdakı səviyyələrdən birini seçir; o, öz token limiti deyil. adaptive enabled kimi oxunur.
| Siz göndərirsiniz | Səviyyə |
|---|---|
{"type": "disabled"} | off |
n 2,048-ə qədər olan {"type": "enabled", "budget_tokens": n} | low |
n 2,049-dan 8,192-yə qədər | medium |
Daha böyük n və ya budget_tokens-siz enabled | high |
thinking sahəsi yoxdur | high |
Reasoning mətni harada gəlir
Reasoning mətni həmişə cavabdan ayrıdır. Hər formatın bunun üçün öz yeri var:
| Endpoint | Axınsız | Axınla |
|---|---|---|
/v1/chat/completions | choices[0].message.reasoning_content: sətir, model heç nə yaratmadıqda isə null. | choices[0].delta.reasoning_content olan chunk-lar, delta.content olan chunk-lardan əvvəl. |
/v1/responses | message elementindən əvvəl output elementi {"type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]}. Reasoning olmadıqda element olmur. | reasoning elementi ilə response.output_item.added, sonra response.reasoning_summary_text.delta hadisələri və bir response.reasoning_summary_text.done. |
/v1/messages | İlk məzmun bloku {"type": "thinking", "thinking": "…"}, sonra text bloku. Reasoning olmadıqda thinking bloku olmur. | thinking məzmun bloku: content_block_start, thinking_delta ilə content_block_delta hadisələri, content_block_stop. Mətn bloku ardınca gəlir. |
{
"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
}
} Hara baxmaq, model üzrə:
| Modellər | Mətn harada gəlir |
|---|---|
| Host edilən açıq çəkili modellər | Hər endpoint-də, axınla və ya axınsız. Effort-u off olan, response_format / text.format daşıyan sorğu reasoning mətni olmadan cavablandırılır. |
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro | Hər endpoint-də, axınla və ya axınsız, model reasoning mətni yaratdıqda. |
shannon-2-lite, shannon-2-pro | /v1/chat/completions, axınsız: message.reasoning_content-də. Axınla, tools və ya response_format olmayan sorğuda: model reasoning edərkən axın : thinking şərh sətirləri, sonra cavab chunk-ları daşıyır. /v1/messages, axınla: mətn blokundan əvvəl thinking bloku. |
shannon-1.6-pro, shannon-coder-1 | Axınlı cavablarda və tools daşıyan sorğuların cavablarında, model reasoning mətni yaratdıqda. |
/v1/responses-da axınsız cavab Shannon 3 ailəsi və host edilən açıq çəkili modellər üçün reasoning elementini daşıyır.
Axının oxunması
Axında reasoning mətni əvvəl, öz delta-larında gəlir, cavab ardınca. İkisini ayrıca çap edin və ya saxlayın:
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?"}
]
}' Host edilən açıq çəkili modelin ilk chunk-ı, reasoning və ya cavab, həmçinin delta.role: "assistant" daşıyır. Axın
Reasoning tokenləri və ödəniş
Host edilən açıq çəkili modellərdə reasoning tokenləri çıxış tokenləridir: onlar modelin çıxış qiyməti ilə hesablanır və çıxış sayı onları artıq daxil edir. usage reasoning payını burada göstərir:
| Endpoint | Sahə | Qeyd |
|---|---|---|
/v1/chat/completions | usage.completion_tokens_details.reasoning_tokens | Artıq completion_tokens-ə daxildir. |
/v1/responses | usage.output_tokens_details.reasoning_tokens | Artıq output_tokens-ə daxildir. |
/v1/messages | usage.output_tokens | Reasoning və cavab birlikdə. Bu formatda ayrıca say yoxdur. |
- Host edilən açıq çəkili modellərdə
max_tokenscavab mətnini məhdudlaşdırır. Reasoning tokenləri ona daxil edilmir. - Reasoning çıxış kimi hesablandığı üçün effort səviyyəsi eyni zamanda xərc parametridir:
offreasoning tokenləri yaratmır. - Shannon modelləri
prompt_tokens,completion_tokensvətotal_tokens-i (/v1/messages-dəinput_tokensvəoutput_tokens) reasoning payı olmadan bildirir və hər token üçün vahid qiymətlə hesablayır. Modellər və qiymətlər
Növbəti sorğuda reasoning
Reasoning-i geri göndərmək məcburi deyil. Göndərdiyiniz söhbətdəki thinking bloku və ya reasoning elementi modelə ötürülmür, ona görə assistant növbəsi onunla da, onsuz da geri göndərilə bilər. thinking blokunun type və thinking iki sahəsi var; signature-i yoxdur.
Xətalar
| Status | Tip | Mesaj | Nə vaxt |
|---|---|---|---|
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | Host edilən açıq çəkili model siyahıdan kənar dəyər aldı, məsələn xhigh. Balansınızdan heç nə çıxılmır. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | reasoning_effort sətir deyil. |
Doğrulama, balans və server xətaları hər sorğu üçün olduğu kimidir. Xəta idarəetməsi