ব্লগে ফিরে যান

শিক্ষানবিসদের জন্য AIগাইড

সিস্টেম প্রম্পট ও টেম্পারেচার: তারা কী করে এবং কীভাবে সেট করবেন

একটি OpenAI-সামঞ্জস্যপূর্ণ রিকোয়েস্টে সিস্টেম মেসেজ ও টেম্পারেচার কী করে, Python ও curl উদাহরণসহ যা আপনি একটি CheapTokens মডেলে পাঠাতে পারেন।

CheapTokens Team দ্বারাপ্রকাশিত হয়েছে আপডেট করা হয়েছে 11 মিনিট পড়ার সময়

চ্যাট রিকোয়েস্ট ডায়াগ্রাম: নিয়মসহ একটি সিস্টেম মেসেজ, কাজসহ একটি ইউজার মেসেজ, এবং একটি টেম্পারেচার ডায়াল
এই পৃষ্ঠায়
  1. সিস্টেম প্রম্পট কী?
  2. কীভাবে একটি উপকারী সিস্টেম প্রম্পট লিখবেন
  3. টেম্পারেচার কী করে?
  4. দুটোসহ একটি রিকোয়েস্ট পাঠান
  5. টেম্পারেচার কাজ করতে দেখুন
  6. কোন মডেলে চেষ্টা করবেন
  7. যদি কাজ না করে
  8. পরবর্তী ধাপ

একটি সিস্টেম প্রম্পট হলো system রোলের একটি মেসেজ, যা মডেলকে প্রতিটি উত্তরে কীভাবে আচরণ করতে হবে তা বলে দেয়: সে কে, কোন ফরম্যাট ব্যবহার করবে, কী এড়িয়ে চলবে। টেম্পারেচার হলো একটি সংখ্যা, সাধারণত 0 থেকে 2-এর মধ্যে (রেঞ্জ মডেলের উপর নির্ভর করে), যা ঠিক করে শব্দচয়ন কতটা পরিবর্তিত হতে পারে: কম মান ফোকাসড, পুনরাবৃত্তিযোগ্য উত্তর দেয়, বেশি মান আরও বৈচিত্র্যময় উত্তর দেয়। দুটোই একই Chat Completions রিকোয়েস্টে যায়, যা আপনি https://api.cheaptokens.dev/v1-এ পাঠান।

নিচে: প্রতিটি কী, কোন মান দিয়ে শুরু করবেন, এবং একটি রিকোয়েস্ট যা আপনি Python বা curl-এ চালাতে পারেন। যদি এখনও কোনো রিকোয়েস্ট না পাঠিয়ে থাকেন, তাহলে CheapTokens দিয়ে আপনার প্রথম API রিকোয়েস্ট দিয়ে শুরু করুন।

সিস্টেম প্রম্পট কী?#

একটি চ্যাট রিকোয়েস্ট হলো মেসেজের একটি তালিকা, এবং প্রতিটি মেসেজের একটি রোল থাকে। Chat Completions রেফারেন্সে চারটি উল্লেখ আছে: system, user, assistant এবং tool (DeepSeek API রেফারেন্স, ২২ অক্টোবর ২০২৬-এ যাচাইকৃত)। প্রথম রিকোয়েস্টের জন্য আপনার তিনটি দরকার:

  • system — আপনার, ডেভেলপারের, স্থায়ী নির্দেশনা। মডেল এগুলোকে কথোপকথনের নিয়ম হিসেবে ধরে নেয়।
  • user — এই টার্নে ব্যক্তি যা জিজ্ঞাসা করে বা প্রদান করে।
  • assistant — মডেলের আগের উত্তরগুলো। আপনি কথোপকথন চালিয়ে গেলে সেগুলো নিজেই যোগ করেন।

একটি সিস্টেম মেসেজের জন্য role-কে system এবং content-কে স্ট্রিং হিসেবে সেট করতে হয়। name ফিল্ডটি ঐচ্ছিক।

json
"messages": [
  {"role": "system", "content": "You are an editor. Rewrite the user's text to be shorter and friendlier. Return only the rewritten text."},
  {"role": "user", "content": "Send me the report by tonight or I will be upset."}
]

সিস্টেম মেসেজ প্রথমে যায়। ইউজার মেসেজ হলো আসল কাজ।

কীভাবে একটি উপকারী সিস্টেম প্রম্পট লিখবেন#

  • এক বাক্যে বলুন মডেল কী করছে: "You are an editor", "You classify support tickets"।
  • আউটপুট ফরম্যাট উল্লেখ করুন: "Return only the rewritten text", "Answer in two sentences", "Reply with valid JSON"।
  • নিয়মগুলো ছোট, সরাসরি বাক্যে দিন। একটি দীর্ঘ অনুচ্ছেদের চেয়ে কয়েকটি স্পষ্ট লাইন ভালো কাজ করে।
  • সংক্ষিপ্ত রাখুন। সিস্টেম প্রম্পট প্রতিটি রিকোয়েস্টের সাথে পাঠানো হয় এবং ইনপুট টোকেন হিসেবে গণনা করা হয়, তাই একটি দীর্ঘ প্রম্পটের জন্য প্রতিবার খরচ দিতে হয়। ইনপুট ও আউটপুট কীভাবে বিল হয় তা input vs output tokens-এ আছে।

টেম্পারেচার কী করে?#

একটি মডেল সম্ভাব্য প্রার্থীদের একটি সেট থেকে প্রতিটি পরবর্তী টোকেন বেছে নেয়। টেম্পারেচার নিয়ন্ত্রণ করে সে সবচেয়ে সম্ভাব্য টোকেনে কতটা কঠোরভাবে লেগে থাকে। DeepSeek API রেফারেন্স অনুযায়ী (২২ অক্টোবর ২০২৬-এ যাচাইকৃত), temperature 0 থেকে 2 পর্যন্ত মান গ্রহণ করে, ডিফল্ট 1: বেশি মান আরও র‍্যান্ডম আউটপুট দেয়, কম মান আরও ফোকাসড, নির্ধারক আউটপুট দেয়। রেঞ্জ মডেলভেদে ভিন্ন: DeepSeek 0 থেকে 2 নথিভুক্ত করে, Z.ai GLM-5.3-এর জন্য 0 থেকে 1 নথিভুক্ত করে (দুটোই ২২ অক্টোবর ২০২৬-এ যাচাইকৃত), তাই 0 থেকে 1 মান দুটোতেই নিরাপদ। আপনার মডেলের রেঞ্জ ডকুমেন্টেশনে দেখুন।

শুরুর মান যা বেশিরভাগ কাজে কাজ করে। এগুলো নিয়মের অনুমান, নিশ্চয়তা নয়:

কাজ যা দিয়ে শুরু করবেন
এক্সট্রাকশন, ক্লাসিফিকেশন, কোড, কঠোর ফরম্যাট 0 থেকে 0.3
প্রশ্নোত্তর, সারাংশ, পুনর্লিখন 0.3 থেকে 0.7
ব্রেইনস্টর্মিং, নাম, সৃজনশীল লেখা 0.8 থেকে 1

তিনটি বিষয় জেনে রাখুন:

  1. কম টেম্পারেচার বেশি পুনরাবৃত্তিযোগ্য, অভিন্ন নয়। বাইট-বাই-বাইট সমান উত্তরের উপর নির্ভর করবেন না।
  2. টেম্পারেচার বা top_p পরিবর্তন করুন, দুটোই নয়। এটি DeepSeek-এর সুপারিশ; top_p হলো ডিফল্ট 1 সহ একটি দ্বিতীয় স্যাম্পলিং প্যারামিটার। শেখার সময় এটি নিয়ে হাত দেবেন না।
  3. কিছু মোড টেম্পারেচার উপেক্ষা করে। DeepSeek রেফারেন্স বলে থিংকিং মোডে টেম্পারেচারের কোনো প্রভাব নেই, এবং নন-থিংকিং মোডে top_p 1.0-এ স্থির। যদি কোনো মান পরিবর্তন করে পার্থক্য না দেখেন, প্রথমে মডেলের মোড দেখুন।

দুটোসহ একটি রিকোয়েস্ট পাঠান#

কীটিকে একটি এনভায়রনমেন্ট ভেরিয়েবল হিসেবে সেট করুন, যাতে এটি কখনও কোডে না ঢোকে (what is an API key and how to store it safely দেখুন)। CheapTokens docs থেকে সঠিক মডেল আইডি নিন: ভিন্ন প্রোভাইডার একই মডেলের ভিন্ন নাম দেয়। এই উদাহরণে MiniMax-M2.7 ব্যবহার করা হয়েছে।

python
import os
from openai import OpenAI

client = OpenAI(
    base_url="https://api.cheaptokens.dev/v1",
    api_key=os.environ["CHEAPTOKENS_API_KEY"],
)

response = client.chat.completions.create(
    model="MiniMaxAI/MiniMax-M2.7",
    messages=[
        {"role": "system", "content": "You are an editor. Rewrite the user's text to be shorter and friendlier. Return only the rewritten text."},
        {"role": "user", "content": "Send me the report by tonight or I will be upset."},
    ],
    temperature=0.3,
    max_tokens=1000,
)

print(response.choices[0].message.content)
print(response.choices[0].finish_reason)

curl দিয়ে একই রিকোয়েস্ট:

bash
curl https://api.cheaptokens.dev/v1/chat/completions \
  -H "Authorization: Bearer $CHEAPTOKENS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "MiniMaxAI/MiniMax-M2.7",
    "messages": [
      {"role": "system", "content": "You are an editor. Rewrite the user'\''s text to be shorter and friendlier. Return only the rewritten text."},
      {"role": "user", "content": "Send me the report by tonight or I will be upset."}
    ],
    "temperature": 0.3,
    "max_tokens": 1000
  }'

আপনি যা দেখবেন: বাক্যটির একটি সংক্ষিপ্ত, বন্ধুত্বপূর্ণ সংস্করণ এবং finish_reason হিসেবে stop। যদি finish_reason হয় length, তাহলে উত্তর max_tokens সীমায় পৌঁছেছে; why an AI answer stops mid-sentence দেখুন।

টেম্পারেচার কাজ করতে দেখুন#

টেম্পারেচার বোঝার সেরা উপায় হলো একই প্রশ্ন কয়েকবার জিজ্ঞাসা করা। এই লুপটি উপরের উদাহরণের client ব্যবহার করে 0-এ তিনবার এবং 1-এ তিনবার একটি ছোট রিকোয়েস্ট পাঠায়:

python
for temp in (0, 1):
    print("temperature", temp)
    for _ in range(3):
        r = client.chat.completions.create(
            model="MiniMaxAI/MiniMax-M2.7",
            messages=[
                {"role": "system", "content": "Answer with one word."},
                {"role": "user", "content": "Name a fruit."},
            ],
            temperature=temp,
            max_tokens=500,
        )
        print(" ", r.choices[0].message.content)

0-এ তিনটি লাইন সাধারণত একই শব্দ হয়; 1-এ সাধারণত আরও ভিন্ন শব্দ দেখবেন। যে মডেলগুলো উত্তর দেওয়ার আগে যুক্তি করে, তারা সেই যুক্তিতে max_tokens-এর অংশ ব্যয় করতে পারে, তাই এক-শব্দের উত্তরেও সীমা উদার রাখুন। তারপর শুধু সিস্টেম প্রম্পট পরিবর্তন করুন (যেমন, "Answer with one word, in French") এবং আবার চালান: সিস্টেম মেসেজের নিয়ম প্রতিটি টেম্পারেচারেই প্রযোজ্য।

এ ধরনের পরীক্ষা ছোট। মোটামুটি ধারণার জন্য, এখানে প্রায় 120 ইনপুট ও 80 আউটপুট টোকেনের 100টি রিকোয়েস্টের খরচ (একটি উদাহরণ ওয়ার্কলোড; টোকেন সংখ্যা আপনার প্রম্পটের উপর নির্ভর করে):

মডেল প্রতি অনুরোধে ১০০টি অনুরোধ OpenRouter, ১০০টি অনুরোধ
GLM-5.3-Flash $0.0000056 $0.00056 $0.0011
DeepSeek-V4-Flash $0.0000098 $0.00098 $0.0018
MiniMax-M2.7 $0.000018 $0.0018 $0.0132

প্রতি অনুরোধে ১২০ ইনপুট এবং ৮০ আউটপুট টোকেন। প্রতি 1M টোকেনের দাম বর্তমান এবং আমাদের ট্যারিফের সাথে পরিবর্তিত হয়; OpenRouter কলামটি একই ওয়ার্কলোডের জন্য রেফারেন্স মূল্য দেখায়।

কোন মডেলে চেষ্টা করবেন#

  • MiniMax-M2.7 অনেক ছোট টেস্ট রিকোয়েস্টের জন্য ভালো প্রথম পছন্দ, এবং উত্তর তুলনা করতে আপনি একই সিস্টেম প্রম্পট এতে পুনরায় ব্যবহার করতে পারেন: 180K কনটেক্সট, সর্বোচ্চ 8,192 আউটপুট টোকেন, OpenRouter-এর রেফারেন্স মূল্যের চেয়ে উভয় দিকেই সস্তা। বর্তমান মূল্য: ইনপুট $0.05, আউটপুট $0.15 প্রতি 1M টোকেন।

একটি ব্যালেন্স সবগুলোকে কভার করে, তাই মডেল বদলানো model-এর এক লাইনের পরিবর্তন। সব বর্তমান মূল্য pricing page-এ আছে।

যদি কাজ না করে#

  • 401 বা একটি অথেনটিকেশন ত্রুটি: কী অনুপস্থিত, ভুল টাইপ করা, বা এই টার্মিনালে এনভায়রনমেন্ট ভেরিয়েবল সেট করা নেই। echo $CHEAPTOKENS_API_KEY দেখুন।
  • Model not found: docs থেকে মডেল আইডি হুবহু কপি করুন, প্রিফিক্সসহ।
  • অবৈধ প্যারামিটার সম্পর্কে ত্রুটি: temperature আপনার মডেল যে রেঞ্জ সমর্থন করে তার মধ্যে রাখুন (0 থেকে 1 নিরাপদ) এবং স্ট্রিং নয়, সংখ্যা দিন।
  • মডেল আপনার নিয়ম উপেক্ষা করে: এটিকে একটি ছোট, সরাসরি বাক্য করুন, সিস্টেম মেসেজের শীর্ষে নিন, এবং আপনার চাওয়া সঠিক ফরম্যাট পুনরাবৃত্তি করুন।
  • টেম্পারেচার পরিবর্তনে কিছুই বদলায় না: আপনি এমন মোড ব্যবহার করছেন যা এটি উপেক্ষা করে (উপরে দেখুন), অথবা উত্তর এতটাই সীমাবদ্ধ ("one word", "valid JSON") যে খুব কম বৈচিত্র্য আছে।
  • উত্তর কেটে গেছে: max_tokens বাড়ান; max_tokens guide ব্যাখ্যা করে কীভাবে।

পরবর্তী ধাপ#

সিস্টেম মেসেজে একটি স্পষ্ট নিয়ম রাখুন, টেবিল থেকে একটি টেম্পারেচার বেছে নিন, এবং আপনার নিজের কাজে উপরের লুপটি চালান। ফলাফল যখন আপনার চাওয়া মতো হয়, সিস্টেম প্রম্পট সংক্ষিপ্ত রাখুন এবং পুনরায় ব্যবহার করুন। একটি কী নিন এবং docs-এ বর্তমান মূল্য দেখুন।