مواد پر جائیں
Reasoning effort

Reasoning effort

نیا

جو ماڈل reasoning کرتا ہے وہ اپنا reasoning متن جواب کے ساتھ، اپنے الگ فیلڈ میں لوٹاتا ہے۔ ہوسٹڈ اوپن ویٹ ماڈلز پر درخواست کا ایک فیلڈ طے کرتا ہے کہ جواب دینے سے پہلے ماڈل کتنی گہرائی سے reasoning کرے۔

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 ٹوکنز 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 کرتے ہیں

ماڈل 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 ہاں —
ہر ہوسٹڈ اوپن ویٹ ماڈل ہاں ہاں

یہ وہ فلیگز capabilities.reasoning اور capabilities.reasoning_effort ہیں جو GET /v1/models ہر id کے لیے بتاتا ہے۔ جواب میں reasoning متن صرف تب ہوتا ہے جب ماڈل نے کچھ پیدا کیا ہو۔ ماڈلز اور قیمتیں

effort سیٹ کرنا

ہر endpoint میں effort لکھنے کا اپنا طریقہ ہے۔ وہ سب انہی چار درجوں میں سے ایک چنتے ہیں۔

فیلڈ قسم ڈیفالٹ تفصیل لاگو کرنے والے
reasoning_effort string high /v1/chat/completions۔ جواب دینے سے پہلے ماڈل کتنی گہرائی سے reasoning کرتا ہے: off، low، medium یا high۔ ہوسٹڈ اوپن ویٹ ماڈلز
reasoning object | string /v1/chat/completions۔ وہی قدر {"effort": "low"} کے طور پر یا سادہ سٹرنگ کے طور پر۔ جب دونوں فیلڈز بھیجے جائیں تو reasoning_effort معتبر ہے۔ ہوسٹڈ اوپن ویٹ ماڈلز
reasoning.effort string high /v1/responses۔ آبجیکٹ {"effort": "low"} کے طور پر لکھا جاتا ہے۔ ہوسٹڈ اوپن ویٹ ماڈلز
thinking object /v1/messages۔ {"type": "enabled", "budget_tokens": n} یا {"type": "disabled"}۔ بجٹ درجوں میں سے ایک چنتا ہے؛ نیچے کا جدول دیکھیں۔ ہوسٹڈ اوپن ویٹ ماڈلز
{
  "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 ہے۔
  • Shannon ماڈلز (shannon-*) ہر درخواست میں اپنی گہرائی خود طے کرتے ہیں؛ GET /v1/models ان کے لیے reasoning_effort: false بتاتا ہے۔

سوچنے (thinking) کا بجٹ، /v1/messages پر

/v1/messages پر thinking فیلڈ درجہ چنتا ہے۔ budget_tokens اوپر کے درجوں میں سے ایک چنتا ہے؛ یہ ٹوکنز کی کوئی الگ حد نہیں۔ adaptive کو enabled کی طرح پڑھا جاتا ہے۔

آپ بھیجتے ہیں درجہ
{"type": "disabled"} off
{"type": "enabled", "budget_tokens": n} جس میں n زیادہ سے زیادہ 2,048 low
n 2,049 سے 8,192 تک medium
بڑا n، یا budget_tokens کے بغیر enabled high
کوئی thinking فیلڈ نہیں high

reasoning متن کہاں آتا ہے

reasoning متن ہمیشہ جواب سے الگ ہوتا ہے۔ ہر فارمیٹ میں اس کی اپنی جگہ ہے:

Endpoint غیر سٹریم سٹریم
/v1/chat/completions choices[0].message.reasoning_content: ایک سٹرنگ، یا null جب ماڈل نے کچھ پیدا نہ کیا ہو۔ choices[0].delta.reasoning_content والے chunks، delta.content والے chunks سے پہلے۔
/v1/responses message آئٹم سے پہلے ایک output آئٹم {"type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]}۔ reasoning نہ ہو تو کوئی آئٹم نہیں ہوتا۔ reasoning آئٹم کے ساتھ response.output_item.added، پھر response.reasoning_summary_text.delta ایونٹس اور ایک response.reasoning_summary_text.done۔
/v1/messages پہلا مواد کا بلاک {"type": "thinking", "thinking": "…"}، پھر text بلاک۔ reasoning نہ ہو تو thinking بلاک نہیں ہوتا۔ ایک thinking مواد کا بلاک: content_block_start، thinking_delta والے content_block_delta ایونٹس، content_block_stop۔ اس کے بعد ٹیکسٹ بلاک آتا ہے۔
{
  "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}
  }
}

کہاں دیکھنا ہے، فی ماڈل:

ماڈلز متن کہاں آتا ہے
ہوسٹڈ اوپن ویٹ ماڈلز ہر endpoint پر، سٹریم ہو یا نہ ہو۔ جس درخواست میں effort off ہو، یا response_format / text.format ہو، اس کا جواب reasoning متن کے بغیر دیا جاتا ہے۔
shannon-3، shannon-3-pro، shannon-3.1، shannon-3.1-pro ہر endpoint پر، سٹریم ہو یا نہ ہو، جب بھی ماڈل نے reasoning متن پیدا کیا ہو۔
shannon-2-lite، shannon-2-pro /v1/chat/completions، غیر سٹریم: message.reasoning_content میں۔ سٹریم، tools یا response_format کے بغیر درخواست میں: ماڈل کے reasoning کے دوران سٹریم تبصرے کی لائنیں : thinking لاتی ہے، پھر جواب کے chunks۔ /v1/messages، سٹریم: ٹیکسٹ بلاک سے پہلے thinking بلاک۔
shannon-1.6-pro، shannon-coder-1 سٹریم کیے گئے جوابات میں اور ان درخواستوں کے جوابات میں جن میں tools ہوں، جب بھی ماڈل نے reasoning متن پیدا کیا ہو۔

/v1/responses پر غیر سٹریم جواب Shannon 3 فیملی اور ہوسٹڈ اوپن ویٹ ماڈلز کے لیے reasoning آئٹم رکھتا ہے۔

سٹریم پڑھنا

سٹریم میں reasoning متن پہلے آتا ہے، اپنے الگ ڈیلٹاز میں، اور جواب اس کے بعد۔ دونوں کو الگ الگ پرنٹ یا محفوظ کریں:

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، reasoning ہو یا جواب، delta.role: "assistant" بھی رکھتا ہے۔ اسٹریمنگ

reasoning ٹوکنز اور بلنگ

ہوسٹڈ اوپن ویٹ ماڈلز پر reasoning ٹوکنز آؤٹ پٹ ٹوکنز ہیں: ان کا بل ماڈل کی آؤٹ پٹ قیمت پر بنتا ہے، اور آؤٹ پٹ کی گنتی میں وہ پہلے ہی شامل ہیں۔ 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 اور جواب ملا کر۔ اس فارمیٹ میں الگ گنتی نہیں۔
  • ہوسٹڈ اوپن ویٹ ماڈلز پر max_tokens جواب کے متن کو محدود کرتا ہے۔ reasoning ٹوکنز اس میں شمار نہیں ہوتے۔
  • چونکہ reasoning کا بل آؤٹ پٹ کے طور پر بنتا ہے، effort کا درجہ لاگت کی سیٹنگ بھی ہے: off کوئی reasoning ٹوکنز پیدا نہیں کرتا۔
  • Shannon ماڈلز prompt_tokens، completion_tokens اور total_tokens (/v1/messages پر input_tokens اور output_tokens) reasoning کے حصے کے بغیر رپورٹ کرتے ہیں، اور فی ٹوکن ایک یکساں قیمت کا بل بناتے ہیں۔ ماڈلز اور قیمتیں

اگلی درخواست میں reasoning

آپ کو reasoning واپس بھیجنے کی ضرورت نہیں۔ آپ کی بھیجی ہوئی گفتگو میں thinking بلاک یا reasoning آئٹم ماڈل کو آگے نہیں دیا جاتا، اس لیے assistant ٹرن اس کے ساتھ یا اس کے بغیر واپس بھیجا جا سکتا ہے۔ thinking بلاک میں دو فیلڈز type اور thinking ہوتے ہیں؛ اس میں signature نہیں ہوتا۔

ایررز

اسٹیٹس قسم پیغام کب
400 invalid_request_error unknown reasoning effort '<value>'; expected off, low, medium or high ہوسٹڈ اوپن ویٹ ماڈل کو فہرست سے باہر کی قدر ملی، مثلاً xhigh۔ آپ کے بیلنس سے کچھ نہیں نکالا جاتا۔
422 invalid_request_error Failed to deserialize the JSON body into the target type: … reasoning_effort سٹرنگ نہیں ہے۔

توثیق، بیلنس اور سرور کے ایررز ہر درخواست کی طرح ہی ہیں۔ غلطیاں