Arrazonamendu-esfortzua
BerriaArrazoitzen duen modelo batek bere arrazonamendu-testua erantzunaren ondoan itzultzen du, eremu propio batean. Pisu irekiko modelo ostatatuetan eskaera-eremu batek ezartzen du modeloak erantzun aurretik zein sakonki arrazoitzen duen.
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?"}
]
}' Erantzunak arrazonamendu-testua reasoning_content-en darama, erantzuna content-en, eta arrazonamendu-tokenak usage-n:
{
"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}
}
} Zein modelok arrazoitzen duten
| Modeloa | Arrazonamendu-testua itzultzen du | Esfortzu-eremua aplikatzen du |
|---|---|---|
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 | Bai | — |
| Pisu irekiko modelo ostatatu guztiak | Bai | Bai |
Hauek dira GET /v1/models-ek id bakoitzeko jakinarazten dituen capabilities.reasoning eta capabilities.reasoning_effort flag-ak. Erantzun batek arrazonamendu-testua darama modeloak sortu duenean bakarrik. Modeloak eta prezioak
Esfortzua ezartzea
Endpoint bakoitzak bere idazkera du esfortzurako. Guztiek lau maila berberetako bat hautatzen dute.
| Eremua | Mota | Lehenetsia | Deskribapena | Aplikatzen duena |
|---|---|---|---|---|
reasoning_effort | string | high | /v1/chat/completions. Modeloak erantzun aurretik zein sakonki arrazoitzen duen: off, low, medium edo high. | Pisu irekiko modelo ostatatuak |
reasoning | object | string | /v1/chat/completions. Balio bera {"effort": "low"} gisa edo kate huts gisa. Bi eremuak bidaltzen direnean, reasoning_effort hartzen da kontuan. | Pisu irekiko modelo ostatatuak | |
reasoning.effort | string | high | /v1/responses. {"effort": "low"} objektu gisa idatzia. | Pisu irekiko modelo ostatatuak |
thinking | object | /v1/messages. {"type": "enabled", "budget_tokens": n} edo {"type": "disabled"}. Aurrekontuak mailetako bat hautatzen du; ikus beheko taula. | Pisu irekiko modelo ostatatuak |
{
"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?"}]
} | Balioa | Onartzen dira ere | Eragina |
|---|---|---|
off | none, minimal | Arrazonamendurik ez. Erantzunak ez du arrazonamendu-testurik. |
low | Arrazonamendu laburra. | |
medium | default | Sakonera ertaina. |
high | max | Maila sakonena. Baliorik bidaltzen ez duen eskaeraren maila da hau. |
- Balioak maiuskulak eta minuskulak bereizi gabe irakurtzen dira.
defaultbalioakmediumesan nahi du. Eremua kanpoan uzteakhighesan nahi du.- Shannon modeloek (
shannon-*) eskaera bakoitzean ezartzen dute beren sakonera;GET /v1/models-ekreasoning_effort: falsejakinarazten du haientzat.
Pentsamendu-aurrekontua /v1/messages endpoint-ean
/v1/messages endpoint-ean thinking eremuak maila hautatzen du. budget_tokens-ek goiko mailetako bat aukeratzen du; ez da token-muga propio bat. adaptive enabled bezala irakurtzen da.
| Zuk bidaltzen duzu | Maila |
|---|---|
{"type": "disabled"} | off |
{"type": "enabled", "budget_tokens": n} non n 2,048 arte den | low |
n 2,049tik 8,192ra | medium |
n handiago bat, edo enabled budget_tokens gabe | high |
thinking eremurik ez | high |
Arrazonamendu-testua non iristen den
Arrazonamendu-testua beti erantzunetik bereizita dago. Formatu bakoitzak bere lekua du horretarako:
| Endpoint-a | Streamik gabe | Stream bidez |
|---|---|---|
/v1/chat/completions | choices[0].message.reasoning_content: kate bat, edo null modeloak ezer sortu ez duenean. | choices[0].delta.reasoning_content duten chunk-ak, delta.content duten chunk-en aurretik. |
/v1/responses | {"type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]} output elementu bat message elementuaren aurretik. Elementurik ez arrazonamendurik ez dagoenean. | response.output_item.added reasoning elementu batekin, gero response.reasoning_summary_text.delta gertaerak eta response.reasoning_summary_text.done bat. |
/v1/messages | {"type": "thinking", "thinking": "…"} lehen eduki-bloke gisa, gero text blokea. thinking blokerik ez arrazonamendurik ez dagoenean. | thinking eduki-bloke bat: content_block_start, thinking_delta duten content_block_delta gertaerak, content_block_stop. Testu-blokea ondoren dator. |
{
"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
}
} Non begiratu, modelo bakoitzeko:
| Modeloak | Testua non iristen den |
|---|---|
| Pisu irekiko modelo ostatatuak | Endpoint guztietan, stream bidez edo gabe. off esfortzua duen eskaerari, edo response_format / text.format duenari, arrazonamendu-testurik gabe erantzuten zaio. |
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro | Endpoint guztietan, stream bidez edo gabe, modeloak arrazonamendu-testua sortu duenean. |
shannon-2-lite, shannon-2-pro | /v1/chat/completions, stream gabe: message.reasoning_content-en. Stream bidez, tools edo response_format gabeko eskaeran: streamak : thinking iruzkin-lerroak darama modeloak arrazoitzen duen bitartean, gero erantzun-chunk-ak. /v1/messages, stream bidez: thinking bloke bat testu-blokearen aurretik. |
shannon-1.6-pro, shannon-coder-1 | Stream bidezko erantzunetan eta tools duten eskaeren erantzunetan, modeloak arrazonamendu-testua sortu duenean. |
/v1/responses endpoint-ean, stream gabeko erantzun batek reasoning elementua darama Shannon 3 familiarentzat eta pisu irekiko modelo ostatatuentzat.
Stream bat irakurtzea
Stream batean arrazonamendu-testua lehenik dator, delta propioetan, eta erantzuna ondoren. Inprimatu edo gorde biak bereizita:
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?"}
]
}' Pisu irekiko modelo ostatatu baten lehen chunk-ak, arrazonamenduarenak edo erantzunarenak, delta.role: "assistant" ere badu. Streaminga
Arrazonamendu-tokenak eta fakturazioa
Pisu irekiko modelo ostatatuetan, arrazonamendu-tokenak irteera-tokenak dira: modeloaren irteera-prezioan fakturatzen dira, eta irteera-kopuruak barne hartzen ditu jada. usage-k arrazonamenduaren zatia erakusten du hemen:
| Endpoint-a | Eremua | Oharra |
|---|---|---|
/v1/chat/completions | usage.completion_tokens_details.reasoning_tokens | completion_tokens-en barne dago jada. |
/v1/responses | usage.output_tokens_details.reasoning_tokens | output_tokens-en barne dago jada. |
/v1/messages | usage.output_tokens | Arrazonamendua eta erantzuna batera. Formatu honek ez du kontaketa bereizirik. |
- Pisu irekiko modelo ostatatuetan
max_tokens-ek erantzun-testua mugatzen du. Arrazonamendu-tokenak ez dira kontatzen. - Arrazonamendua irteera gisa fakturatzen denez, esfortzu-maila kostu-ezarpen bat ere bada:
off-ek ez du arrazonamendu-tokenik sortzen. - Shannon modeloek
prompt_tokens,completion_tokensetatotal_tokensjakinarazten dituzte (input_tokensetaoutput_tokens/v1/messagesendpoint-ean) arrazonamendu-zatirik gabe, eta prezio finko bakarra fakturatzen dute tokeneko. Modeloak eta prezioak
Arrazonamendua hurrengo eskaeran
Ez duzu arrazonamendua berriro bidali behar. Bidaltzen duzun elkarrizketako thinking bloke bat edo reasoning elementu bat ez zaio modeloari pasatzen, beraz assistant txanda batek harekin edo gabe itzul daiteke. thinking blokeak bi eremu ditu, type eta thinking; ez du signature-rik.
Erroreak
| Egoera | Mota | Mezua | Noiz |
|---|---|---|---|
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | Pisu irekiko modelo ostatatu batek zerrendatik kanpoko balio bat jaso du, adibidez xhigh. Ez da ezer kentzen zure saldotik. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | reasoning_effort ez da kate bat. |
Autentifikazio-, saldo- eta zerbitzari-erroreak eskaera guztietan bezalakoak dira. Errore‑kudeaketa