Redeneringspoging
Nuut'n Model wat redeneer, gee sy redeneerteks langs die antwoord terug, in 'n veld van sy eie. Op die gehuisveste oopgewig-modelle stel een versoekveld hoe diep die model redeneer voordat dit antwoord.
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?"}
]
}' Die antwoord dra die redeneerteks in reasoning_content, die antwoord in content, en die redeneertokens in 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}
}
} Watter modelle redeneer
| Model | Gee redeneerteks terug | Pas die poging-veld toe |
|---|---|---|
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 | Ja | — |
| Elke gehuisveste oopgewig-model | Ja | Ja |
Dit is die vlae capabilities.reasoning en capabilities.reasoning_effort wat GET /v1/models vir elke id meld. 'n Antwoord dra net redeneerteks wanneer die model iets gelewer het. Modelle en pryse
Die poging stel
Elke eindpunt het sy eie skryfwyse vir die poging. Almal kies een van dieselfde vier vlakke.
| Veld | Tipe | Verstek | Beskrywing | Toegepas deur |
|---|---|---|---|---|
reasoning_effort | string | high | /v1/chat/completions. Hoe diep die model redeneer voordat dit antwoord: off, low, medium of high. | Gehuisveste oopgewig-modelle |
reasoning | object | string | /v1/chat/completions. Dieselfde waarde as {"effort": "low"} of as 'n kaal string. Wanneer albei velde gestuur word, tel reasoning_effort. | Gehuisveste oopgewig-modelle | |
reasoning.effort | string | high | /v1/responses. Geskryf as die objek {"effort": "low"}. | Gehuisveste oopgewig-modelle |
thinking | object | /v1/messages. {"type": "enabled", "budget_tokens": n} of {"type": "disabled"}. Die begroting kies een van die vlakke; sien die tabel verderaan. | Gehuisveste oopgewig-modelle |
{
"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?"}]
} | Waarde | Ook aanvaar | Effek |
|---|---|---|
off | none, minimal | Geen redenering nie. Die antwoord dra geen redeneerteks nie. |
low | Kort redenering. | |
medium | default | Gemiddelde diepte. |
high | max | Die diepste vlak. Dit is die vlak van 'n versoek wat geen waarde stuur nie. |
- Waardes word gelees sonder om op hoof- of kleinletters te let.
- Die waarde
defaultbetekenmedium. Om die veld uit te laat betekenhigh. - Die Shannon-modelle (
shannon-*) stel hul eie diepte in elke versoek;GET /v1/modelsmeldreasoning_effort: falsevir hulle.
Die denkbegroting op /v1/messages
Op /v1/messages kies die thinking-veld die vlak. budget_tokens kies een van die vlakke hierbo; dit is nie 'n tokenperk van sy eie nie. adaptive word soos enabled gelees.
| Jy stuur | Vlak |
|---|---|
{"type": "disabled"} | off |
{"type": "enabled", "budget_tokens": n} met n tot 2,048 | low |
n van 2,049 tot 8,192 | medium |
'n Groter n, of enabled sonder budget_tokens | high |
Geen thinking-veld | high |
Waar die redeneerteks aankom
Redeneerteks is altyd apart van die antwoord. Elke formaat het sy eie plek daarvoor:
| Eindpunt | Nie gestroom nie | Gestroom |
|---|---|---|
/v1/chat/completions | choices[0].message.reasoning_content: 'n string, of null wanneer die model niks gelewer het nie. | Chunks met choices[0].delta.reasoning_content, voor die chunks met delta.content. |
/v1/responses | 'n output-item {"type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]} voor die message-item. Geen item wanneer daar geen redenering is nie. | response.output_item.added met 'n reasoning-item, dan response.reasoning_summary_text.delta-gebeure en een response.reasoning_summary_text.done. |
/v1/messages | 'n Eerste inhoudblok {"type": "thinking", "thinking": "…"}, dan die text-blok. Geen thinking-blok wanneer daar geen redenering is nie. | 'n thinking-inhoudblok: content_block_start, content_block_delta-gebeure met thinking_delta, content_block_stop. Die teksblok volg. |
{
"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
}
} Waar om te kyk, per model:
| Modelle | Waar die teks aankom |
|---|---|
| Gehuisveste oopgewig-modelle | Op elke eindpunt, gestroom of nie. 'n Versoek met poging off, of met response_format / text.format, word sonder redeneerteks beantwoord. |
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro | Op elke eindpunt, gestroom of nie, wanneer die model ook al redeneerteks gelewer het. |
shannon-2-lite, shannon-2-pro | /v1/chat/completions, nie gestroom nie: in message.reasoning_content. Gestroom, in 'n versoek sonder tools of response_format: die stroom dra kommentaarreëls : thinking terwyl die model redeneer, dan die antwoord-chunks. /v1/messages, gestroom: 'n thinking-blok voor die teksblok. |
shannon-1.6-pro, shannon-coder-1 | In gestroomde antwoorde en in antwoorde op versoeke wat tools dra, wanneer die model ook al redeneerteks gelewer het. |
Op /v1/responses dra 'n antwoord wat nie gestroom is nie die reasoning-item vir die Shannon 3-familie en die gehuisveste oopgewig-modelle.
'n Stroom lees
In 'n stroom kom die redeneerteks eerste, in deltas van sy eie, en die antwoord volg. Druk of stoor die twee afsonderlik:
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?"}
]
}' Die eerste chunk van 'n gehuisveste oopgewig-model, redenering of antwoord, dra ook delta.role: "assistant". Stroming
Redeneertokens en fakturering
Op die gehuisveste oopgewig-modelle is redeneertokens uitsettokens: hulle word teen die uitsetprys van die model gefaktureer, en die uitsettelling sluit hulle reeds in. usage wys die redeneeraandeel hier:
| Eindpunt | Veld | Nota |
|---|---|---|
/v1/chat/completions | usage.completion_tokens_details.reasoning_tokens | Reeds by completion_tokens ingesluit. |
/v1/responses | usage.output_tokens_details.reasoning_tokens | Reeds by output_tokens ingesluit. |
/v1/messages | usage.output_tokens | Redenering en antwoord saam. Hierdie formaat het geen aparte telling nie. |
- Op die gehuisveste oopgewig-modelle beperk
max_tokensdie antwoordteks. Redeneertokens tel nie daarteen nie. - Omdat redenering as uitset gefaktureer word, is die pogingvlak ook 'n koste-instelling:
offlewer geen redeneertokens nie. - Die Shannon-modelle meld
prompt_tokens,completion_tokensentotal_tokens(input_tokensenoutput_tokensop/v1/messages) sonder 'n redeneeraandeel, en faktureer een vaste prys per token. Modelle en pryse
Redenering in die volgende versoek
Jy hoef nie redenering terug te stuur nie. 'n thinking-blok of 'n reasoning-item in die gesprek wat jy stuur, word nie aan die model deurgegee nie, so 'n assistent-beurt kan met of sonder dit teruggaan. 'n thinking-blok het die twee velde type en thinking; dit het geen signature nie.
Foute
| Status | Tipe | Boodskap | Wanneer |
|---|---|---|---|
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | 'n Gehuisveste oopgewig-model het 'n waarde buite die lys ontvang, byvoorbeeld xhigh. Niks word van jou balans afgetrek nie. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | reasoning_effort is nie 'n string nie. |
Verifikasie-, balans- en bedienerfoute is dieselfde as vir elke versoek. Fouthantering