Reasoning effort
ໃໝ່model ທີ່ຄິດຫາເຫດຜົນສົ່ງຂໍ້ຄວາມ reasoning ຂອງມັນຄຽງຄູ່ກັບຄຳຕອບ, ໃນຟີລດ໌ຂອງມັນເອງ. ໃນ hosted open-weight models ຟີລດ໌ຄຳຮ້ອງຂໍໜຶ່ງອັນກຳນົດວ່າ model ຄິດຫາເຫດຜົນເລິກເທົ່າໃດກ່ອນຕອບ.
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?"}
]
}' ຄຳຕອບມີຂໍ້ຄວາມ reasoning ໃນ reasoning_content, ຄຳຕອບໃນ content, ແລະ reasoning tokens ໃນ 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}
}
} model ໃດທີ່ຄິດຫາເຫດຜົນ
| Model | ສົ່ງຂໍ້ຄວາມ reasoning ກັບ | ນຳໃຊ້ຟີລດ໌ effort |
|---|---|---|
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 | ແມ່ນ | — |
| ທຸກ model ທີ່ເປັນ open-weight ແລະ ຖືກ host ໄວ້ | ແມ່ນ | ແມ່ນ |
ນີ້ແມ່ນ flag capabilities.reasoning ແລະ capabilities.reasoning_effort ທີ່ GET /v1/models ລາຍງານສຳລັບແຕ່ລະ id. ຄຳຕອບມີຂໍ້ຄວາມ reasoning ສະເພາະເມື່ອ model ສ້າງມັນ. Model ແລະ ລາຄາ
ການຕັ້ງ effort
ແຕ່ລະ endpoint ມີວິທີຂຽນ effort ຂອງຕົນເອງ. ທັງໝົດເລືອກໜຶ່ງໃນສີ່ລະດັບດຽວກັນ.
| ຟີລດ໌ | ປະເພດ | ຄ່າເລີ່ມຕົ້ນ | ຄຳອະທິບາຍ | ໃຊ້ໂດຍ |
|---|---|---|---|---|
reasoning_effort | string | high | /v1/chat/completions. model ຄິດຫາເຫດຜົນເລິກເທົ່າໃດກ່ອນຕອບ: off, low, medium ຫຼື high. | Hosted open-weight models |
reasoning | object | string | /v1/chat/completions. ຄ່າດຽວກັນເປັນ {"effort": "low"} ຫຼື ເປັນ string ເປົ່າ. ເມື່ອສົ່ງທັງສອງຟີລດ໌, reasoning_effort ຖືກນຳໃຊ້. | Hosted open-weight models | |
reasoning.effort | string | high | /v1/responses. ຂຽນເປັນ object {"effort": "low"}. | Hosted open-weight models |
thinking | object | /v1/messages. {"type": "enabled", "budget_tokens": n} ຫຼື {"type": "disabled"}. budget ເລືອກໜຶ່ງໃນລະດັບ; ເບິ່ງຕາຕະລາງຂ້າງລຸ່ມ. | Hosted open-weight models |
{
"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?"}]
} | ຄ່າ | ຍັງຮັບອີກ | ຜົນ |
|---|---|---|
off | none, minimal | ບໍ່ມີ reasoning. ຄຳຕອບບໍ່ມີຂໍ້ຄວາມ reasoning. |
low | reasoning ສັ້ນໆ. | |
medium | default | ຄວາມເລິກປານກາງ. |
high | max | ລະດັບເລິກທີ່ສຸດ. ນີ້ແມ່ນລະດັບຂອງຄຳຮ້ອງຂໍທີ່ບໍ່ສົ່ງຄ່າ. |
- ຄ່າຖືກອ່ານໂດຍບໍ່ແຍກຕົວພິມນ້ອຍ-ໃຫຍ່.
- ຄ່າ
defaultໝາຍເຖິງmedium. ການບໍ່ໃສ່ຟີລດ໌ໝາຍເຖິງhigh. - model Shannon (
shannon-*) ກຳນົດຄວາມເລິກຂອງຕົນເອງໃນທຸກຄຳຮ້ອງຂໍ;GET /v1/modelsລາຍງານreasoning_effort: falseສຳລັບພວກມັນ.
ງົບປະມານການຄິດ (thinking) ຂອງ endpoint /v1/messages
ໃນ /v1/messages ຟີລດ໌ thinking ເລືອກລະດັບ. budget_tokens ເລືອກໜຶ່ງໃນລະດັບຂ້າງເທິງ; ມັນບໍ່ແມ່ນຂີດຈຳກັດ token ຂອງຕົນເອງ. adaptive ຖືກອ່ານຄືກັບ enabled.
| ທ່ານສົ່ງ | ລະດັບ |
|---|---|
{"type": "disabled"} | off |
{"type": "enabled", "budget_tokens": n} ໂດຍ n ບໍ່ເກີນ 2,048 | low |
n ຈາກ 2,049 ຫາ 8,192 | medium |
n ທີ່ໃຫຍ່ກວ່າ, ຫຼື enabled ໂດຍບໍ່ມີ budget_tokens | high |
ບໍ່ມີຟີລດ໌ thinking | high |
ຂໍ້ຄວາມ reasoning ມາຮອດບ່ອນໃດ
ຂໍ້ຄວາມ reasoning ແຍກຈາກຄຳຕອບສະເໝີ. ແຕ່ລະຮູບແບບມີບ່ອນຂອງຕົນເອງ:
| Endpoint | ບໍ່ stream | Stream |
|---|---|---|
/v1/chat/completions | choices[0].message.reasoning_content: string, ຫຼື null ເມື່ອ model ບໍ່ໄດ້ສ້າງ. | chunk ທີ່ມີ choices[0].delta.reasoning_content, ກ່ອນ chunk ທີ່ມີ delta.content. |
/v1/responses | ລາຍການ output {"type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]} ກ່ອນລາຍການ message. ບໍ່ມີລາຍການເມື່ອບໍ່ມີ reasoning. | response.output_item.added ທີ່ມີລາຍການ reasoning, ແລ້ວ event response.reasoning_summary_text.delta ແລະ response.reasoning_summary_text.done ໜຶ່ງອັນ. |
/v1/messages | content block ທຳອິດ {"type": "thinking", "thinking": "…"}, ແລ້ວຈຶ່ງເປັນ block text. ບໍ່ມີ block thinking ເມື່ອບໍ່ມີ reasoning. | content block thinking: event content_block_start, content_block_delta ທີ່ມີ thinking_delta, content_block_stop. block ຂໍ້ຄວາມຕາມມາ. |
{
"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:
| Model | ຂໍ້ຄວາມມາຮອດບ່ອນໃດ |
|---|---|
| Hosted open-weight models | ໃນທຸກ endpoint, ບໍ່ວ່າຈະ stream ຫຼືບໍ່. ຄຳຮ້ອງຂໍທີ່ມີ effort off, ຫຼື ມີ response_format / text.format, ຖືກຕອບໂດຍບໍ່ມີຂໍ້ຄວາມ reasoning. |
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro | ໃນທຸກ endpoint, ບໍ່ວ່າຈະ stream ຫຼືບໍ່, ທຸກຄັ້ງທີ່ model ສ້າງຂໍ້ຄວາມ reasoning. |
shannon-2-lite, shannon-2-pro | /v1/chat/completions, ບໍ່ stream: ໃນ message.reasoning_content. ແບບ stream, ໃນຄຳຮ້ອງຂໍທີ່ບໍ່ມີ tools ຫຼື response_format: stream ມີແຖວ comment : thinking ໃນຂະນະທີ່ model ຄິດຫາເຫດຜົນ, ແລ້ວຈຶ່ງເປັນ chunk ຂອງຄຳຕອບ. /v1/messages, ແບບ stream: block thinking ກ່ອນ block ຂໍ້ຄວາມ. |
shannon-1.6-pro, shannon-coder-1 | ໃນຄຳຕອບແບບ stream ແລະ ໃນຄຳຕອບຂອງຄຳຮ້ອງຂໍທີ່ມີ tools, ທຸກຄັ້ງທີ່ model ສ້າງຂໍ້ຄວາມ reasoning. |
ໃນ /v1/responses, ຄຳຕອບທີ່ບໍ່ stream ມີລາຍການ reasoning ສຳລັບຕະກູນ Shannon 3 ແລະ hosted open-weight models.
ການອ່ານ stream
ໃນ stream ຂໍ້ຄວາມ reasoning ມາກ່ອນ, ໃນ delta ຂອງມັນເອງ, ແລະ ຄຳຕອບຕາມມາ. ພິມ ຫຼື ເກັບທັງສອງແຍກກັນ:
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?"}
]
}' chunk ທຳອິດຂອງ hosted open-weight model, ບໍ່ວ່າຈະເປັນ reasoning ຫຼື ຄຳຕອບ, ຍັງມີ delta.role: "assistant" ນຳ. ສະຕຣີມມິ້ງ
Reasoning tokens ແລະ ການຄິດເງິນ
ໃນ hosted open-weight models, reasoning tokens ແມ່ນ output tokens: ພວກມັນຖືກຄິດເງິນໃນລາຄາ output ຂອງ model, ແລະ ຈຳນວນ output ລວມພວກມັນແລ້ວ. usage ສະແດງສ່ວນຂອງ reasoning ຢູ່ນີ້:
| Endpoint | ຟີລດ໌ | ໝາຍເຫດ |
|---|---|---|
/v1/chat/completions | usage.completion_tokens_details.reasoning_tokens | ລວມຢູ່ໃນ completion_tokens ແລ້ວ. |
/v1/responses | usage.output_tokens_details.reasoning_tokens | ລວມຢູ່ໃນ output_tokens ແລ້ວ. |
/v1/messages | usage.output_tokens | Reasoning ແລະ ຄຳຕອບລວມກັນ. ຮູບແບບນີ້ບໍ່ມີການນັບແຍກ. |
- ໃນ hosted open-weight models
max_tokensຈຳກັດຂໍ້ຄວາມຄຳຕອບ. Reasoning tokens ບໍ່ຖືກນັບລວມ. - ເນື່ອງຈາກ reasoning ຖືກຄິດເງິນເປັນ output, ລະດັບ effort ຈຶ່ງເປັນການຕັ້ງຄ່າຄ່າໃຊ້ຈ່າຍນຳ:
offບໍ່ສ້າງ reasoning tokens. - model Shannon ລາຍງານ
prompt_tokens,completion_tokensແລະtotal_tokens(input_tokensແລະoutput_tokensໃນ/v1/messages) ໂດຍບໍ່ມີສ່ວນຂອງ reasoning, ແລະ ຄິດເງິນໃນລາຄາຄົງທີ່ດຽວຕໍ່ token. Model ແລະ ລາຄາ
Reasoning ໃນຄຳຮ້ອງຂໍຖັດໄປ
ທ່ານບໍ່ຈຳເປັນຕ້ອງສົ່ງ reasoning ກັບຄືນ. block thinking ຫຼື ລາຍການ reasoning ໃນການສົນທະນາທີ່ທ່ານສົ່ງຈະບໍ່ຖືກສົ່ງຕໍ່ໃຫ້ model, ດັ່ງນັ້ນຮອບຂອງ assistant ສົ່ງກັບໄດ້ ບໍ່ວ່າຈະມີມັນຫຼືບໍ່. block thinking ມີສອງຟີລດ໌ຄື type ແລະ thinking; ມັນບໍ່ມີ signature.
ຂໍ້ຜິດພາດ
| ສະຖານະ | ປະເພດ | ຂໍ້ຄວາມ | ເມື່ອໃດ |
|---|---|---|---|
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | hosted open-weight model ໄດ້ຮັບຄ່າທີ່ຢູ່ນອກລາຍຊື່, ຕົວຢ່າງ xhigh. ບໍ່ມີຫຍັງຖືກຫັກຈາກຍອດເງິນຂອງທ່ານ. |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | reasoning_effort ບໍ່ແມ່ນ string. |
ຂໍ້ຜິດພາດດ້ານການຢືນຢັນ, ຍອດເງິນ ແລະ server ແມ່ນຄືກັນກັບທຸກຄຳຮ້ອງຂໍ. ການຈັດການຂໍ້ຜິດພາດ