Akıl yürütme çabası
YeniAkıl yürüten bir model, akıl yürütme metnini yanıtın yanında kendi alanında döndürür. Host edilen açık ağırlıklı modellerde bir istek alanı, modelin yanıt vermeden önce ne kadar derin akıl yürüteceğini belirler.
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?"}
]
}' Yanıt, akıl yürütme metnini reasoning_content içinde, yanıtı content içinde ve akıl yürütme token'larını usage içinde taşı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}
}
} Hangi modeller akıl yürütür
| Model | Akıl yürütme metni döndürür | Effort alanını uygular |
|---|---|---|
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 | Evet | — |
| Host edilen her açık ağırlıklı model | Evet | Evet |
Bunlar GET /v1/models yanıtının her kimlik için bildirdiği capabilities.reasoning ve capabilities.reasoning_effort bayraklarıdır. Bir yanıt, akıl yürütme metnini yalnızca model ürettiyse taşır. Modeller ve fiyatlandırma
Effort'u ayarlama
Her uç noktanın effort için kendi yazımı vardır. Hepsi aynı dört düzeyden birini seçer.
| Alan | Tür | Varsayılan | Açıklama | Uygulayan |
|---|---|---|---|---|
reasoning_effort | string | high | /v1/chat/completions. Modelin yanıt vermeden önce ne kadar derin akıl yürüttüğü: off, low, medium veya high. | Host edilen açık ağırlıklı modeller |
reasoning | object | string | /v1/chat/completions. {"effort": "low"} ya da çıplak bir dize olarak aynı değer. İki alan da gönderilirse reasoning_effort geçerlidir. | Host edilen açık ağırlıklı modeller | |
reasoning.effort | string | high | /v1/responses. {"effort": "low"} nesnesi olarak yazılır. | Host edilen açık ağırlıklı modeller |
thinking | object | /v1/messages. {"type": "enabled", "budget_tokens": n} veya {"type": "disabled"}. Bütçe düzeylerden birini seçer; aşağıdaki tabloya bakın. | Host edilen açık ağırlıklı modeller |
{
"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?"}]
} | Değer | Ayrıca kabul edilen | Etki |
|---|---|---|
off | none, minimal | Akıl yürütme yok. Yanıt akıl yürütme metni taşımaz. |
low | Kısa akıl yürütme. | |
medium | default | Orta derinlik. |
high | max | En derin düzey. Hiçbir değer göndermeyen bir isteğin düzeyi budur. |
- Değerler büyük ve küçük harf ayrımı yapılmadan okunur.
defaultdeğerimediumanlamına gelir. Alanı hiç göndermemekhighanlamına gelir.- Shannon modelleri (
shannon-*) derinliklerini her istekte kendileri belirler;GET /v1/modelsbunlar içinreasoning_effort: falsebildirir.
/v1/messages üzerinde thinking bütçesi
/v1/messages üzerinde düzeyi thinking alanı seçer. budget_tokens yukarıdaki düzeylerden birini seçer; kendi başına bir token sınırı değildir. adaptive, enabled gibi okunur.
| Gönderdiğiniz | Düzey |
|---|---|
{"type": "disabled"} | off |
n en fazla 2,048 olan {"type": "enabled", "budget_tokens": n} | low |
n 2,049 ile 8,192 arası | medium |
Daha büyük bir n ya da budget_tokens olmadan enabled | high |
thinking alanı yok | high |
Akıl yürütme metninin geldiği yer
Akıl yürütme metni her zaman yanıttan ayrıdır. Her biçimin onun için kendi yeri vardır:
| Uç nokta | Stream edilmeyen | Stream edilen |
|---|---|---|
/v1/chat/completions | choices[0].message.reasoning_content: bir dize ya da model hiç üretmediyse null. | delta.content içeren chunk'lardan önce gelen, choices[0].delta.reasoning_content içeren chunk'lar. |
/v1/responses | message öğesinden önce bir output öğesi {"type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]}. Akıl yürütme yoksa öğe olmaz. | Bir reasoning öğesiyle response.output_item.added, ardından response.reasoning_summary_text.delta olayları ve bir response.reasoning_summary_text.done. |
/v1/messages | İlk içerik bloğu {"type": "thinking", "thinking": "…"}, ardından text bloğu. Akıl yürütme yoksa thinking bloğu olmaz. | Bir thinking içerik bloğu: content_block_start, thinking_delta içeren content_block_delta olayları, content_block_stop. Metin bloğu onu izler. |
{
"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 başına nereye bakılacağı:
| Modeller | Metnin geldiği yer |
|---|---|
| Host edilen açık ağırlıklı modeller | Her uç noktada, stream edilsin ya da edilmesin. Effort değeri off olan ya da response_format / text.format içeren bir istek akıl yürütme metni olmadan yanıtlanır. |
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro | Model akıl yürütme metni ürettiğinde, her uç noktada, stream edilsin ya da edilmesin. |
shannon-2-lite, shannon-2-pro | /v1/chat/completions, stream edilmeyen: message.reasoning_content içinde. tools veya response_format içermeyen bir istekte stream edilen: model akıl yürütürken stream : thinking yorum satırlarını, sonra yanıt chunk'larını taşır. /v1/messages, stream edilen: metin bloğundan önce bir thinking bloğu. |
shannon-1.6-pro, shannon-coder-1 | Model akıl yürütme metni ürettiğinde, stream edilen yanıtlarda ve tools taşıyan isteklerin yanıtlarında. |
/v1/responses üzerinde, stream edilmeyen bir yanıt Shannon 3 ailesi ve host edilen açık ağırlıklı modeller için reasoning öğesini taşır.
Bir stream'i okuma
Bir stream'de akıl yürütme metni önce, kendi delta'larında gelir ve yanıt onu izler. İkisini ayrı ayrı yazdırın ya da saklayı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 edilen açık ağırlıklı bir modelin ilk chunk'ı, akıl yürütme ya da yanıt olsun, ayrıca delta.role: "assistant" taşır. Akış
Akıl yürütme token'ları ve faturalandırma
Host edilen açık ağırlıklı modellerde akıl yürütme token'ları çıktı token'ıdır: modelin çıktı fiyatından faturalandırılırlar ve çıktı sayısı onları zaten içerir. usage burada akıl yürütme payını gösterir:
| Uç nokta | Alan | Not |
|---|---|---|
/v1/chat/completions | usage.completion_tokens_details.reasoning_tokens | completion_tokens içinde zaten dahildir. |
/v1/responses | usage.output_tokens_details.reasoning_tokens | output_tokens içinde zaten dahildir. |
/v1/messages | usage.output_tokens | Akıl yürütme ve yanıt birlikte. Bu biçimde ayrı bir sayı yoktur. |
- Host edilen açık ağırlıklı modellerde
max_tokensyanıt metnini sınırlar. Akıl yürütme token'ları buna sayılmaz. - Akıl yürütme çıktı olarak faturalandırıldığı için effort düzeyi aynı zamanda bir maliyet ayarıdır:
offhiç akıl yürütme token'ı üretmez. - Shannon modelleri
prompt_tokens,completion_tokensvetotal_tokensdeğerlerini (/v1/messagesüzerindeinput_tokensveoutput_tokens) akıl yürütme payı olmadan bildirir ve token başına tek bir sabit fiyat uygular. Modeller ve fiyatlandırma
Sonraki istekte akıl yürütme
Akıl yürütmeyi geri göndermeniz gerekmez. Gönderdiğiniz konuşmadaki bir thinking bloğu veya reasoning öğesi modele iletilmez; bu yüzden bir asistan turu onunla ya da onsuz geri gönderilebilir. Bir thinking bloğunun type ve thinking olmak üzere iki alanı vardır; signature alanı yoktur.
Hatalar
| Durum | Tür | Mesaj | Ne zaman |
|---|---|---|---|
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | Host edilen açık ağırlıklı bir model, listenin dışında bir değer aldı, örneğin xhigh. Bakiyenizden hiçbir şey düşülmez. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | reasoning_effort bir dize değil. |
Kimlik doğrulama, bakiye ve sunucu hataları her istekteki gibidir. Hata yönetimi