កម្រិត reasoning
ថ្មីម៉ូដែលដែលវែកញែកត្រឡប់អត្ថបទ reasoning របស់វាក្បែរចម្លើយ ក្នុង field ផ្ទាល់ខ្លួន។ លើម៉ូដែល open-weight ដែលបង្ហោះ field មួយក្នុង request កំណត់ថាម៉ូដែលវែកញែកជ្រៅប៉ុនណាមុនពេលវាឆ្លើយ។
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 និង token reasoning ក្នុង 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}
}
} ម៉ូដែលណាវែកញែក
| ម៉ូដែល | ត្រឡប់អត្ថបទ reasoning | អនុវត្ត field 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 | បាទ/ចាស | — |
| រាល់ម៉ូដែល open-weight ដែលបង្ហោះ | បាទ/ចាស | បាទ/ចាស |
ទាំងនេះគឺជា flag capabilities.reasoning និង capabilities.reasoning_effort ដែល GET /v1/models រាយការណ៍សម្រាប់ id នីមួយៗ។ ចម្លើយមានអត្ថបទ reasoning ក្នុងករណីតែម៉ូដែលបានបង្កើតវាប៉ុណ្ណោះ។ ម៉ូដែល និងតម្លៃ
ការកំណត់ effort
endpoint នីមួយៗមានការសរសេរ effort ផ្ទាល់ខ្លួន។ ទាំងអស់ជ្រើសកម្រិតមួយក្នុងចំណោមកម្រិតទាំងបួនដូចគ្នា។
| Field | ប្រភេទ | លំនាំដើម | ការពិពណ៌នា | អនុវត្តដោយ |
|---|---|---|---|---|
reasoning_effort | string | high | /v1/chat/completions។ ម៉ូដែលវែកញែកជ្រៅប៉ុនណាមុនពេលវាឆ្លើយ៖ off, low, medium ឬ high។ | ម៉ូដែល open-weight ដែលបង្ហោះ |
reasoning | object | string | /v1/chat/completions។ តម្លៃដូចគ្នាជា {"effort": "low"} ឬជា string ទទេ។ នៅពេលផ្ញើទាំងពីរ field reasoning_effort មានអានុភាព។ | ម៉ូដែល open-weight ដែលបង្ហោះ | |
reasoning.effort | string | high | /v1/responses។ សរសេរជា object {"effort": "low"}។ | ម៉ូដែល open-weight ដែលបង្ហោះ |
thinking | object | /v1/messages។ {"type": "enabled", "budget_tokens": n} ឬ {"type": "disabled"}។ budget ជ្រើសកម្រិតមួយ៖ សូមមើលតារាងខាងក្រោម។ | ម៉ូដែល open-weight ដែលបង្ហោះ |
{
"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 | កម្រិតជ្រៅបំផុត។ នេះជាកម្រិតរបស់ request ដែលមិនផ្ញើតម្លៃ។ |
- តម្លៃត្រូវបានអានដោយមិនគិតពីអក្សរធំ ឬអក្សរតូច។
- តម្លៃ
defaultមានន័យថាmedium។ ការទុក field ចោលមានន័យថាhigh។ - ម៉ូដែល Shannon (
shannon-*) កំណត់ជម្រៅផ្ទាល់ខ្លួនក្នុងរាល់ request៖GET /v1/modelsរាយការណ៍reasoning_effort: falseសម្រាប់ពួកវា។
ថវិកាសម្រាប់ការគិតនៅលើ /v1/messages
លើ /v1/messages field 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 |
គ្មាន field thinking | high |
កន្លែងដែលអត្ថបទ reasoning មកដល់
អត្ថបទ reasoning តែងតែដាច់ពីចម្លើយ។ ទ្រង់ទ្រាយនីមួយៗមានកន្លែងផ្ទាល់ខ្លួនសម្រាប់វា៖
| Endpoint | មិន stream | Stream |
|---|---|---|
/v1/chat/completions | choices[0].message.reasoning_content៖ string ឬ null នៅពេលម៉ូដែលមិនបានបង្កើត។ | 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៖ content_block_start event 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
}
} កន្លែងត្រូវមើល តាមម៉ូដែល៖
| ម៉ូដែល | កន្លែងដែលអត្ថបទមកដល់ |
|---|---|
| ម៉ូដែល open-weight ដែលបង្ហោះ | លើគ្រប់ endpoint ទោះ stream ឬមិន stream។ request ដែលមាន effort off ឬមាន response_format / text.format ត្រូវបានឆ្លើយដោយគ្មានអត្ថបទ reasoning។ |
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro | លើគ្រប់ endpoint ទោះ stream ឬមិន stream នៅពេលណាម៉ូដែលបង្កើតអត្ថបទ reasoning។ |
shannon-2-lite, shannon-2-pro | /v1/chat/completions មិន stream៖ ក្នុង message.reasoning_content។ Stream ក្នុង request ដែលគ្មាន tools ឬ response_format៖ stream មានបន្ទាត់ comment : thinking ខណៈពេលម៉ូដែលវែកញែក បន្ទាប់មកជា chunk នៃចម្លើយ។ /v1/messages stream៖ block thinking មុន block អត្ថបទ។ |
shannon-1.6-pro, shannon-coder-1 | ក្នុងចម្លើយដែល stream និងក្នុងចម្លើយចំពោះ request ដែលមាន tools នៅពេលណាម៉ូដែលបង្កើតអត្ថបទ reasoning។ |
លើ /v1/responses ចម្លើយដែលមិន stream មានធាតុ reasoning សម្រាប់ក្រុម Shannon 3 និងម៉ូដែល open-weight ដែលបង្ហោះ។
ការអាន 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 ដំបូងនៃម៉ូដែល open-weight ដែលបង្ហោះ ទោះ reasoning ឬចម្លើយ ក៏មាន delta.role: "assistant" ដែរ។ ស្ទ្រីម
Token reasoning និងការគិតថ្លៃ
លើម៉ូដែល open-weight ដែលបង្ហោះ token reasoning គឺជា output token៖ ពួកវាត្រូវបានគិតថ្លៃតាមតម្លៃ output របស់ម៉ូដែល ហើយចំនួន output រួមបញ្ចូលពួកវារួចហើយ។ usage បង្ហាញចំណែក reasoning នៅទីនេះ៖
| Endpoint | Field | កំណត់សម្គាល់ |
|---|---|---|
/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 និងចម្លើយរួមគ្នា។ ទ្រង់ទ្រាយនេះគ្មានចំនួនដាច់ដោយឡែកទេ។ |
- លើម៉ូដែល open-weight ដែលបង្ហោះ
max_tokensកំណត់អត្ថបទចម្លើយ។ token reasoning មិនត្រូវបានរាប់ក្នុងនោះទេ។ - ដោយសារ reasoning ត្រូវបានគិតថ្លៃជា output កម្រិត effort ក៏ជាការកំណត់តម្លៃផងដែរ៖
offមិនបង្កើត token reasoning ទេ។ - ម៉ូដែល Shannon រាយការណ៍
prompt_tokens,completion_tokensនិងtotal_tokens(input_tokensនិងoutput_tokensលើ/v1/messages) ដោយគ្មានចំណែក reasoning ហើយគិតថ្លៃតម្លៃថេរមួយក្នុងមួយ token។ ម៉ូដែល និងតម្លៃ
Reasoning ក្នុង request បន្ទាប់
អ្នកមិនចាំបាច់ផ្ញើ reasoning មកវិញទេ។ block thinking ឬធាតុ reasoning ក្នុងការសន្ទនាដែលអ្នកផ្ញើមិនត្រូវបានបញ្ជូនបន្តទៅម៉ូដែលទេ ដូច្នេះវេនរបស់ assistant អាចត្រឡប់ទៅវិញមានវា ឬគ្មានវា។ block thinking មាន field ពីរ type និង thinking៖ វាគ្មាន signature ទេ។
កំហុស
| ស្ថានភាព | ប្រភេទ | សារ | ពេលណា |
|---|---|---|---|
400 | invalid_request_error | unknown reasoning effort '<value>'; expected off, low, medium or high | ម៉ូដែល open-weight ដែលបង្ហោះបានទទួលតម្លៃក្រៅបញ្ជី ឧទាហរណ៍ xhigh។ គ្មានអ្វីត្រូវបានដកពីសមតុល្យរបស់អ្នកទេ។ |
422 | invalid_request_error | Failed to deserialize the JSON body into the target type: … | reasoning_effort មិនមែនជា string ទេ។ |
កំហុសនៃការផ្ទៀងផ្ទាត់ សមតុល្យ និង server ដូចគ្នាសម្រាប់រាល់ request។ ការគ្រប់គ្រងកំហុស