Päättelyn teho
UusiPäättelevä malli palauttaa päättelytekstinsä vastauksen vieressä omassa kentässään. Hostatuilla avoimen painon malleilla yksi pyyntökenttä asettaa, kuinka syvästi malli päättelee ennen vastaamista.
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?"}
]
}' Vastauksessa päättelyteksti on kentässä reasoning_content, vastaus kentässä content ja päättelytokenit kentässä 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}
}
} Mitkä mallit päättelevät
| Malli | Palauttaa päättelytekstin | Käyttää effort-kenttää |
|---|---|---|
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 | Kyllä | — |
| Jokainen hostattu avoimen painon malli | Kyllä | Kyllä |
Nämä ovat liput capabilities.reasoning ja capabilities.reasoning_effort, jotka GET /v1/models ilmoittaa jokaiselle id:lle. Vastauksessa on päättelytekstiä vain, kun malli tuotti sitä. Mallit ja hinnoittelu
Tehon asettaminen
Jokaisella päätepisteellä on oma kirjoitusasunsa tehon asettamiselle. Kaikki valitsevat yhden samoista neljästä tasosta.
| Kenttä | Tyyppi | Oletus | Kuvaus | Käyttävät mallit |
|---|---|---|---|---|
reasoning_effort | string | high | /v1/chat/completions. Kuinka syvästi malli päättelee ennen vastaamista: off, low, medium tai high. | Hostatut avoimen painon mallit |
reasoning | object | string | /v1/chat/completions. Sama arvo muodossa {"effort": "low"} tai pelkkänä merkkijonona. Kun molemmat kentät lähetetään, reasoning_effort ratkaisee. | Hostatut avoimen painon mallit | |
reasoning.effort | string | high | /v1/responses. Kirjoitetaan objektina {"effort": "low"}. | Hostatut avoimen painon mallit |
thinking | object | /v1/messages. {"type": "enabled", "budget_tokens": n} tai {"type": "disabled"}. Budjetti valitsee yhden tasoista; katso taulukko alempana. | Hostatut avoimen painon mallit |
{
"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?"}]
} | Arvo | Hyväksytään myös | Vaikutus |
|---|---|---|
off | none, minimal | Ei päättelyä. Vastauksessa ei ole päättelytekstiä. |
low | Lyhyt päättely. | |
medium | default | Keskisyvä. |
high | max | Syvin taso. Tämä on sen pyynnön taso, joka ei lähetä arvoa. |
- Arvot luetaan ottamatta huomioon isoja ja pieniä kirjaimia.
- Arvo
defaulttarkoittaa arvoamedium. Kentän jättäminen pois tarkoittaa arvoahigh. - Shannon-mallit (
shannon-*) asettavat oman syvyytensä jokaisessa pyynnössä;GET /v1/modelsilmoittaa niillereasoning_effort: false.
Thinking-budjetti päätepisteessä /v1/messages
Päätepisteessä /v1/messages kenttä thinking valitsee tason. budget_tokens valitsee yhden yllä olevista tasoista; se ei ole oma tokenrajansa. adaptive luetaan kuten enabled.
| Lähetät | Taso |
|---|---|
{"type": "disabled"} | off |
{"type": "enabled", "budget_tokens": n}, jossa n on enintään 2,048 | low |
n väliltä 2,049–8,192 | medium |
Suurempi n, tai enabled ilman budget_tokens | high |
Ei thinking-kenttää | high |
Mihin päättelyteksti saapuu
Päättelyteksti on aina erillään vastauksesta. Jokaisella muodolla on sille oma paikkansa:
| Päätepiste | Ei striimattu | Striimattu |
|---|---|---|
/v1/chat/completions | choices[0].message.reasoning_content: merkkijono, tai null, kun malli ei tuottanut mitään. | Chunkit, joissa on choices[0].delta.reasoning_content, ennen chunkeja, joissa on delta.content. |
/v1/responses | output-alkio {"type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]} ennen message-alkiota. Ei alkiota, kun päättelyä ei ole. | response.output_item.added ja reasoning-alkio, sitten response.reasoning_summary_text.delta-tapahtumat ja yksi response.reasoning_summary_text.done. |
/v1/messages | Ensimmäinen sisältölohko {"type": "thinking", "thinking": "…"}, sitten text-lohko. Ei thinking-lohkoa, kun päättelyä ei ole. | thinking-sisältölohko: content_block_start, content_block_delta-tapahtumat arvolla thinking_delta, content_block_stop. Tekstilohko seuraa. |
{
"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
}
} Mistä katsoa, mallikohtaisesti:
| Mallit | Mihin teksti saapuu |
|---|---|
| Hostatut avoimen painon mallit | Jokaisessa päätepisteessä, striimattuna tai ei. Pyyntöön, jossa teho on off tai jossa on response_format / text.format, vastataan ilman päättelytekstiä. |
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro | Jokaisessa päätepisteessä, striimattuna tai ei, aina kun malli tuotti päättelytekstiä. |
shannon-2-lite, shannon-2-pro | /v1/chat/completions, ei striimattuna: kentässä message.reasoning_content. Striimattuna pyynnössä ilman tools tai response_format: striimi sisältää kommenttirivejä : thinking, kun malli päättelee, sitten vastauschunkit. /v1/messages, striimattuna: thinking-lohko ennen tekstilohkoa. |
shannon-1.6-pro, shannon-coder-1 | Striimatuissa vastauksissa ja vastauksissa pyyntöihin, joissa on tools, aina kun malli tuotti päättelytekstiä. |
Päätepisteessä /v1/responses ei-striimattu vastaus sisältää reasoning-alkion Shannon 3 -perheelle ja hostatuille avoimen painon malleille.
Striimin lukeminen
Striimissä päättelyteksti tulee ensin omissa deltoissaan ja vastaus seuraa. Tulosta tai tallenna nämä kaksi erikseen:
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?"}
]
}' Hostatun avoimen painon mallin ensimmäisessä chunkissa, päättelyssä tai vastauksessa, on myös delta.role: "assistant". Suoratoisto
Päättelytokenit ja laskutus
Hostatuilla avoimen painon malleilla päättelytokenit ovat tulostetokeneita: ne laskutetaan mallin tulostehinnalla, ja tulostemäärä sisältää ne jo. usage näyttää päättelyn osuuden tässä:
| Päätepiste | Kenttä | Huomautus |
|---|---|---|
/v1/chat/completions | usage.completion_tokens_details.reasoning_tokens | Sisältyy jo lukuun completion_tokens. |
/v1/responses | usage.output_tokens_details.reasoning_tokens | Sisältyy jo lukuun output_tokens. |
/v1/messages | usage.output_tokens | Päättely ja vastaus yhdessä. Tässä muodossa ei ole erillistä laskuria. |
- Hostatuilla avoimen painon malleilla
max_tokensrajaa vastauksen tekstiä. Päättelytokeneita ei lasketa siihen. - Koska päättely laskutetaan tulosteena, tehotaso on myös kustannusasetus:
offei tuota päättelytokeneita. - Shannon-mallit ilmoittavat
prompt_tokens,completion_tokensjatotal_tokens(input_tokensjaoutput_tokenspäätepisteessä/v1/messages) ilman päättelyosuutta ja laskuttavat yhden tasahinnan tokenilta. Mallit ja hinnoittelu
Päättely seuraavassa pyynnössä
Päättelyä ei tarvitse lähettää takaisin. Lähettämäsi keskustelun thinking-lohkoa tai reasoning-alkiota ei välitetä mallille, joten avustajan vuoro voi palata mukaan niiden kanssa tai ilman. thinking-lohkossa on kaksi kenttää, type ja thinking; siinä ei ole signature-kenttää.
Virheet
| Tila | Tyyppi | Viesti | Milloin |
|---|---|---|---|
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | Hostattu avoimen painon malli sai listan ulkopuolisen arvon, esimerkiksi xhigh. Saldostasi ei veloiteta mitään. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | reasoning_effort ei ole merkkijono. |
Todennus-, saldo- ja palvelinvirheet ovat samat kuin kaikissa pyynnöissä. Virheiden käsittely