কনটেন্টে যান
রিজনিং effort

রিজনিং effort

নতুন

যে মডেল রিজনিং করে সে উত্তরের পাশে নিজস্ব একটি ফিল্ডে তার রিজনিং টেক্সট ফেরত দেয়। হোস্টেড ওপেন-ওয়েট মডেলে একটি রিকোয়েস্ট ফিল্ড ঠিক করে উত্তর দেওয়ার আগে মডেল কত গভীরভাবে রিজনিং করবে।

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_content-এ, উত্তর content-এ, এবং রিজনিং 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}
  }
}

কোন মডেল রিজনিং করে

মডেল রিজনিং টেক্সট ফেরত দেয় এফোর্ট ফিল্ড প্রয়োগ করে
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 হ্যাঁ —
প্রতিটি হোস্টেড ওপেন-ওয়েট মডেল হ্যাঁ হ্যাঁ

GET /v1/models প্রতিটি id-র জন্য যে capabilities.reasoning ও capabilities.reasoning_effort ফ্ল্যাগ জানায়, এগুলো সেই ফ্ল্যাগ। মডেল কিছু তৈরি করলেই কেবল উত্তরে রিজনিং টেক্সট থাকে। মডেল ও মূল্য

এফোর্ট সেট করা

প্রতিটি এন্ডপয়েন্টে এফোর্ট লেখার নিজস্ব ধরন আছে। সবগুলোই একই চারটি স্তরের একটি বাছে।

ফিল্ড টাইপ ডিফল্ট বিবরণ যারা প্রয়োগ করে
reasoning_effort string high /v1/chat/completions। উত্তর দেওয়ার আগে মডেল কত গভীরভাবে রিজনিং করে: off, low, medium বা high। হোস্টেড ওপেন-ওয়েট মডেল
reasoning object | string /v1/chat/completions। একই মান {"effort": "low"} হিসেবে বা সরাসরি string হিসেবে। দুটি ফিল্ডই পাঠালে 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 রিজনিং নেই। উত্তরে কোনো রিজনিং টেক্সট থাকে না।
low সংক্ষিপ্ত রিজনিং।
medium default মাঝারি গভীরতা।
high max সবচেয়ে গভীর স্তর। কোনো মান না পাঠানো রিকোয়েস্টের স্তর এটিই।
  • মান পড়ার সময় বড়-ছোট হাতের অক্ষর বিবেচনা করা হয় না।
  • default মান মানে medium। ফিল্ড না দিলে মানে high।
  • Shannon মডেলগুলো (shannon-*) প্রতিটি রিকোয়েস্টে নিজের গভীরতা নিজে ঠিক করে; GET /v1/models তাদের জন্য reasoning_effort: false জানায়।

/v1/messages-এ থিংকিং বাজেট

/v1/messages-এ thinking ফিল্ড স্তর বাছে। budget_tokens ওপরের স্তরগুলোর একটি বাছে; এটি আলাদা কোনো token সীমা নয়। adaptive পড়া হয় enabled-এর মতো।

আপনি পাঠান স্তর
{"type": "disabled"} off
n সর্বোচ্চ 2,048 সহ {"type": "enabled", "budget_tokens": n} low
n 2,049 থেকে 8,192 medium
আরও বড় n, অথবা budget_tokens ছাড়া enabled high
thinking ফিল্ড নেই high

রিজনিং টেক্সট কোথায় আসে

রিজনিং টেক্সট সবসময় উত্তর থেকে আলাদা। প্রতিটি ফরম্যাটে এর নিজস্ব জায়গা আছে:

এন্ডপয়েন্ট স্ট্রিম ছাড়া স্ট্রিম করা
/v1/chat/completions choices[0].message.reasoning_content: একটি string, অথবা মডেল কিছু তৈরি না করলে null। choices[0].delta.reasoning_content সহ চাঙ্ক, delta.content সহ চাঙ্কের আগে।
/v1/responses message আইটেমের আগে output-এর একটি আইটেম {"type": "reasoning", "summary": [{"type": "summary_text", "text": "…"}]}। রিজনিং না থাকলে কোনো আইটেম নেই। reasoning আইটেমসহ response.output_item.added, তারপর response.reasoning_summary_text.delta ইভেন্ট এবং একটি response.reasoning_summary_text.done।
/v1/messages প্রথম কনটেন্ট ব্লক {"type": "thinking", "thinking": "…"}, তারপর text ব্লক। রিজনিং না থাকলে কোনো 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}
  }
}

মডেল অনুযায়ী কোথায় দেখবেন:

মডেল টেক্সট কোথায় আসে
হোস্টেড ওপেন-ওয়েট মডেল প্রতিটি এন্ডপয়েন্টে, স্ট্রিম করা বা না করা। এফোর্ট off সহ, অথবা response_format / text.format সহ রিকোয়েস্টের উত্তর রিজনিং টেক্সট ছাড়াই আসে।
shannon-3, shannon-3-pro, shannon-3.1, shannon-3.1-pro প্রতিটি এন্ডপয়েন্টে, স্ট্রিম করা বা না করা, যখনই মডেল রিজনিং টেক্সট তৈরি করেছে।
shannon-2-lite, shannon-2-pro /v1/chat/completions, স্ট্রিম ছাড়া: message.reasoning_content-এ। tools বা response_format ছাড়া রিকোয়েস্টে স্ট্রিম করলে: মডেল রিজনিং করার সময় স্ট্রিমে : thinking মন্তব্য লাইন আসে, তারপর উত্তরের চাঙ্ক। /v1/messages, স্ট্রিম করা: টেক্সট ব্লকের আগে একটি thinking ব্লক।
shannon-1.6-pro, shannon-coder-1 স্ট্রিম করা উত্তরে এবং tools সহ রিকোয়েস্টের উত্তরে, যখনই মডেল রিজনিং টেক্সট তৈরি করেছে।

/v1/responses-এ স্ট্রিম না করা উত্তরে Shannon 3 পরিবার ও হোস্টেড ওপেন-ওয়েট মডেলের জন্য 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

হোস্টেড ওপেন-ওয়েট মডেলের প্রথম চাঙ্ক, রিজনিং বা উত্তর যা-ই হোক, delta.role: "assistant"-ও বহন করে। স্ট্রিমিং

রিজনিং tokens ও বিলিং

হোস্টেড ওপেন-ওয়েট মডেলে রিজনিং tokens আউটপুট tokens: এগুলো মডেলের আউটপুট দামে বিল হয়, এবং আউটপুট সংখ্যায় আগে থেকেই ধরা থাকে। usage এখানে রিজনিংয়ের অংশ দেখায়:

এন্ডপয়েন্ট ফিল্ড টীকা
/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 রিজনিং ও উত্তর একসাথে। এই ফরম্যাটে আলাদা কোনো গণনা নেই।
  • হোস্টেড ওপেন-ওয়েট মডেলে max_tokens উত্তরের টেক্সট সীমিত করে। রিজনিং tokens এর হিসাবে ধরা হয় না।
  • রিজনিং আউটপুট হিসেবে বিল হয় বলে এফোর্ট স্তর একটি খরচের সেটিংও: off কোনো রিজনিং tokens তৈরি করে না।
  • Shannon মডেল রিজনিংয়ের অংশ ছাড়া prompt_tokens, completion_tokens ও total_tokens (/v1/messages-এ input_tokens ও output_tokens) জানায়, এবং প্রতি token-এ একটি সমান দামে বিল করে। মডেল ও মূল্য

পরের রিকোয়েস্টে রিজনিং

রিজনিং ফেরত পাঠাতে হয় না। আপনার পাঠানো কথোপকথনে thinking ব্লক বা reasoning আইটেম মডেলকে দেওয়া হয় না, তাই অ্যাসিস্ট্যান্ট টার্ন সেটি সহ বা ছাড়া ফেরত পাঠানো যায়। 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 কোনো string নয়।

অথেনটিকেশন, ব্যালেন্স ও সার্ভার এরর প্রতিটি রিকোয়েস্টের মতোই। এরর হ্যান্ডলিং