Resonneringsinnsats
NyEn modell som resonnerer, returnerer resonneringsteksten ved siden av svaret, i et eget felt. På de hostede åpne vektmodellene bestemmer ett forespørselsfelt hvor grundig modellen resonnerer før den svarer.
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?"}
]
}' Svaret har resonneringsteksten i reasoning_content, svaret i content og resonnerings-tokens i 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}
}
} Hvilke modeller som resonnerer
| Modell | Returnerer resonneringstekst | Bruker innsatsfeltet |
|---|---|---|
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 | — |
| Alle hostede åpne vektmodeller | Ja | Ja |
Dette er flaggene capabilities.reasoning og capabilities.reasoning_effort som GET /v1/models rapporterer for hver id. Et svar har bare resonneringstekst når modellen har produsert noe. Modeller og priser
Sette innsatsen
Hvert endepunkt har sin egen skrivemåte for innsatsen. Alle velger ett av de samme fire nivåene.
| Felt | Type | Standard | Beskrivelse | Brukes av |
|---|---|---|---|---|
reasoning_effort | string | high | /v1/chat/completions. Hvor grundig modellen resonnerer før den svarer: off, low, medium eller high. | Hostede åpne vektmodeller |
reasoning | object | string | /v1/chat/completions. Den samme verdien som {"effort": "low"} eller som en ren streng. Når begge feltene sendes, gjelder reasoning_effort. | Hostede åpne vektmodeller | |
reasoning.effort | string | high | /v1/responses. Skrives som objektet {"effort": "low"}. | Hostede åpne vektmodeller |
thinking | object | /v1/messages. {"type": "enabled", "budget_tokens": n} eller {"type": "disabled"}. Budsjettet velger ett av nivåene; se tabellen lenger ned. | Hostede åpne vektmodeller |
{
"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?"}]
} | Verdi | Godtas også | Effekt |
|---|---|---|
off | none, minimal | Ingen resonnering. Svaret har ingen resonneringstekst. |
low | Kort resonnering. | |
medium | default | Middels dybde. |
high | max | Det dypeste nivået. Dette er nivået for en forespørsel som ikke sender noen verdi. |
- Verdiene leses uten hensyn til store og små bokstaver.
- Verdien
defaultbetyrmedium. Å utelate feltet betyrhigh. - Shannon-modellene (
shannon-*) setter sin egen dybde i hver forespørsel;GET /v1/modelsrapportererreasoning_effort: falsefor dem.
Thinking-budsjettet på /v1/messages
På /v1/messages velger feltet thinking nivået. budget_tokens velger ett av nivåene over; det er ikke en egen tokengrense. adaptive leses som enabled.
| Du sender | Nivå |
|---|---|
{"type": "disabled"} | off |
{"type": "enabled", "budget_tokens": n} med n opptil 2,048 | low |
n fra 2,049 til 8,192 | medium |
Et større n, eller enabled uten budget_tokens | high |
Ikke noe thinking-felt | high |
Hvor resonneringsteksten kommer
Resonneringsteksten er alltid atskilt fra svaret. Hvert format har sitt eget sted for den:
| Endepunkt | Uten streaming | Med streaming |
|---|---|---|
/v1/chat/completions | choices[0].message.reasoning_content: en streng, eller null når modellen ikke produserte noe. | Chunks med choices[0].delta.reasoning_content, før chunkene med delta.content. |
/v1/responses | Et output-element {"type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]} før message-elementet. Ingen element når det ikke er noen resonnering. | response.output_item.added med et reasoning-element, deretter response.reasoning_summary_text.delta-hendelser og én response.reasoning_summary_text.done. |
/v1/messages | En første innholdsblokk {"type": "thinking", "thinking": "…"}, deretter text-blokken. Ingen thinking-blokk når det ikke er noen resonnering. | En innholdsblokk av typen thinking: content_block_start, content_block_delta-hendelser med thinking_delta, content_block_stop. Tekstblokken følger. |
{
"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
}
} Hvor du ser etter, per modell:
| Modeller | Hvor teksten kommer |
|---|---|
| Hostede åpne vektmodeller | På alle endepunkter, med eller uten streaming. En forespørsel med innsats off, eller med response_format / text.format, besvares uten resonneringstekst. |
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro | På alle endepunkter, med eller uten streaming, når modellen har produsert resonneringstekst. |
shannon-2-lite, shannon-2-pro | /v1/chat/completions, uten streaming: i message.reasoning_content. Med streaming, i en forespørsel uten tools eller response_format: strømmen har kommentarlinjer : thinking mens modellen resonnerer, deretter svar-chunkene. /v1/messages, med streaming: en thinking-blokk før tekstblokken. |
shannon-1.6-pro, shannon-coder-1 | I svar med streaming og i svar på forespørsler som har tools, når modellen har produsert resonneringstekst. |
På /v1/responses har et svar uten streaming reasoning-elementet for Shannon 3-familien og de hostede åpne vektmodellene.
Lese en strøm
I en strøm kommer resonneringsteksten først, i egne deltaer, og svaret følger. Skriv ut eller lagre de to hver for seg:
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?"}
]
}' Den første chunken fra en hostet åpen vektmodell, resonnering eller svar, har også delta.role: "assistant". Strømming
Resonnerings-tokens og fakturering
På de hostede åpne vektmodellene er resonnerings-tokens output-tokens: de faktureres til outputprisen for modellen, og outputtellingen inkluderer dem allerede. usage viser resonneringsandelen her:
| Endepunkt | Felt | Merknad |
|---|---|---|
/v1/chat/completions | usage.completion_tokens_details.reasoning_tokens | Allerede inkludert i completion_tokens. |
/v1/responses | usage.output_tokens_details.reasoning_tokens | Allerede inkludert i output_tokens. |
/v1/messages | usage.output_tokens | Resonnering og svar sammen. Dette formatet har ikke noen egen telling. |
- På de hostede åpne vektmodellene begrenser
max_tokenssvarteksten. Resonnerings-tokens telles ikke mot den. - Fordi resonnering faktureres som output, er innsatsnivået også en kostnadsinnstilling:
offgir ingen resonnerings-tokens. - Shannon-modellene rapporterer
prompt_tokens,completion_tokensogtotal_tokens(input_tokensogoutput_tokenspå/v1/messages) uten resonneringsandel, og fakturerer én flat pris per token. Modeller og priser
Resonnering i neste forespørsel
Du trenger ikke sende resonneringen tilbake. En thinking-blokk eller et reasoning-element i samtalen du sender, videresendes ikke til modellen, så en assistentrunde kan sendes tilbake med eller uten den. En thinking-blokk har de to feltene type og thinking; den har ingen signature.
Feil
| Status | Type | Melding | Når |
|---|---|---|---|
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | En hostet åpen vektmodell mottok en verdi utenfor listen, for eksempel xhigh. Ingenting trekkes fra saldoen din. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | reasoning_effort er ikke en streng. |
Feil ved autentisering, saldo og server er de samme som for alle forespørsler. Feilhåndtering