ຂ້າມໄປຫາເນື້ອຫາ
Reasoning effort

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)

ຄຳຕອບມີຂໍ້ຄວາມ reasoning ໃນ reasoning_content, ຄຳຕອບໃນ content, ແລະ reasoning tokens ໃນ 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}
  }
}

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?"}]
}
ຄ່າ ຍັງຮັບອີກ ຜົນ
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}
  }
}

ຄວນເບິ່ງບ່ອນໃດ, ຕໍ່ 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

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 ແມ່ນຄືກັນກັບທຸກຄຳຮ້ອງຂໍ. ການຈັດການຂໍ້ຜິດພາດ