រំលងទៅមាតិកា
កម្រិត reasoning

កម្រិត 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)

ចម្លើយមានអត្ថបទ reasoning ក្នុង reasoning_content ចម្លើយក្នុង content និង token reasoning ក្នុង usage៖

200 JSON
{
  "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?"}]
}
តម្លៃ ក៏ទទួលយកដែរ ឥទ្ធិពល
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}
  }
}

កន្លែងត្រូវមើល តាមម៉ូដែល៖

ម៉ូដែល កន្លែងដែលអត្ថបទមកដល់
ម៉ូដែល 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

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។ ការគ្រប់គ្រងកំហុស