পাঠ ০১ · ২৮-এর মধ্যে

প্রম্পট কী এবং LLM কীভাবে এটি প্রসেস করে

What a prompt is and how LLMs process it
৮ মিনিট পড়া শুরু · Beginner কোনো প্রস্তুতি দরকার নেই সম্পূর্ণ বাংলায়

এই পাঠে যা শিখবেন

  • একটি প্রম্পট ঠিক কী কী উপাদান দিয়ে তৈরি
  • টোকেনাইজেশন — মডেল টেক্সটকে কীভাবে ছোট ছোট টুকরায় ভাগ করে
  • Context window কী, এবং কেন এটি "মেমরি"-র সীমা নির্ধারণ করে
  • কেন LLM আসলে "বোঝে" না — বরং পরবর্তী টোকেন সম্ভাবনার ভিত্তিতে অনুমান করে

১ · একটি প্রম্পট আসলে কী?

দৈনন্দিন কথায় আমরা "প্রম্পট" বলতে বুঝি ChatGPT বা Claude-কে লেখা একটি প্রশ্ন। কিন্তু কারিগরিভাবে, একটি প্রম্পট (Prompt)Promptএকটি LLM-কে দেওয়া সম্পূর্ণ ইনপুট — user-এর লেখা টেক্সট, system instruction, আগের কথোপকথন, উদাহরণ ও সংযুক্ত ফাইল — সবকিছু একত্রে। মানে মডেলকে দেওয়া সম্পূর্ণ ইনপুট — শুধু আপনার শেষ বাক্যটি নয়।

সংজ্ঞা · Definition

একটি প্রম্পটে সাধারণত থাকে — system prompt (মডেলের ভূমিকা ও নিয়ম), কথোপকথনের ইতিহাস (আগের প্রশ্ন-উত্তর), আপনার বর্তমান বার্তা, এবং প্রায়ই উদাহরণ বা সংযুক্ত ডকুমেন্ট। API কল করার সময় এই সবকিছু একসাথে মডেলে পাঠানো হয় — প্রতিবার, নতুন করে।

যখন আপনি ChatGPT বা Claude-এ একটি প্রশ্ন লিখে Enter চাপেন, তখন শুধু সেই একটি বাক্য মডেলে যায় না — সম্পূর্ণ কথোপকথনের ইতিহাস, লুকানো system prompt, এবং অন্য যেকোনো প্রসঙ্গ একসাথে পাঠানো হয়। "প্রম্পট" মানে এই পুরো প্যাকেজ।

২ · LLM টেক্সট পড়ে না — টোকেন পড়ে

মডেল সরাসরি অক্ষর বা শব্দ পড়ে না। প্রথমে একটি টোকেনাইজার (Tokenizer)Tokenizerটেক্সটকে ছোট ছোট টুকরা (টোকেন)-এ ভাঙার একটি প্রোগ্রাম। প্রতিটি LLM-এর নিজস্ব টোকেনাইজার আছে। আপনার টেক্সটকে ছোট ছোট টুকরায় ভাঙে — এই টুকরাগুলোকে বলা হয় টোকেন। একটি টোকেন একটি সম্পূর্ণ শব্দ হতে পারে, শব্দের একটি অংশ হতে পারে, অথবা একটি বিরাম চিহ্নও হতে পারে।

ইংরেজিতে গড়ে ১ টোকেন ≈ ৪ অক্ষর বা প্রায় ¾ শব্দ। কিন্তু বাংলার মতো ভাষায় টোকেনাইজেশন প্রায়ই কম efficient — একই বাক্যে বাংলায় ইংরেজির চেয়ে বেশি টোকেন লাগতে পারে, কারণ বেশিরভাগ টোকেনাইজার মূলত ইংরেজি টেক্সটের উপর প্রশিক্ষিত। এটাই একটি বাস্তব কারণ কেন বাংলায় লেখা প্রম্পট কখনো কখনো একই অর্থের ইংরেজি প্রম্পটের চেয়ে বেশি টোকেন খরচ করে।
✍️ আপনার প্রম্পট "Explain gravity" 🔤 টোকেনাইজার Tokenizer 🔢 টোকেন সিকোয়েন্স [Explain, " grav", "ity"] 🧠 মডেল (LLM) predicts next token 📝 এক এক করে টোকেন বসে → "Gravity is a force that..." প্রতিটি নতুন টোকেন আবার মডেলে ফেরত যায়
প্রম্পট থেকে আউটপুট পর্যন্ত — টোকেনাইজেশন ও পরবর্তী-টোকেন-অনুমানের চক্র।

৩ · Context Window — মডেলের "মেমরি"-র সীমা

মডেল একবারে সীমিত সংখ্যক টোকেন "দেখতে" পারে — একে বলা হয় Context WindowContext Windowএকটি LLM একবারে সর্বোচ্চ যত টোকেন পড়তে ও মনে রাখতে পারে তার সীমা। এর মধ্যে প্রম্পট, কথোপকথনের ইতিহাস এবং মডেলের উত্তর — সবকিছুই গণনা হয়।। Context window-এর বাইরে থাকা যেকোনো কিছু মডেলের কাছে সম্পূর্ণ অদৃশ্য — এমনকি যদি সেটা কয়েক মিনিট আগেই বলা হয়ে থাকে।

Context window-এর আকার প্রোভাইডার ও মডেল অনুযায়ী ভিন্ন, এবং সময়ের সাথে বাড়তে থাকে — যেমন Anthropic-এর Claude মডেলগুলো সাধারণত ২০০K টোকেন পর্যন্ত context window সাপোর্ট করে। কিন্তু বড় context window মানেই "বিনামূল্যে" নয় — প্রতিটি টোকেনের জন্য খরচ ও latency বাড়ে, এবং প্রম্পট যত লম্বা হয়, প্রাসঙ্গিক তথ্য খুঁজে বের করা মডেলের জন্য তত কঠিন হতে পারে। এই কোর্সের M4 মডিউলে আমরা দেখব কীভাবে এই খরচ নিয়ন্ত্রণ করা যায়।

৪ · কেন LLM "বোঝে" না — বরং অনুমান করে

এটাই সবচেয়ে গুরুত্বপূর্ণ ধারণা। একটি LLM হলো মূলত একটি AutoregressiveAutoregressive Modelএমন একটি মডেল যা তার নিজের আগের আউটপুটকে পরবর্তী ধাপের ইনপুট হিসেবে ব্যবহার করে — একবারে একটি টোকেন তৈরি করে, তারপর সেই টোকেনসহ পুরো সিকোয়েন্স আবার নিজেকে দেখিয়ে পরের টোকেন অনুমান করে। পরবর্তী-টোকেন-অনুমানকারী যন্ত্র। প্রতিটি ধাপে এটি হিসেব করে — "এই মুহূর্ত পর্যন্ত যা লেখা হয়েছে, তার পরে সবচেয়ে সম্ভাব্য টোকেন কোনটা?" — এবং সেটাই বসিয়ে দেয়। তারপর পুরো নতুন সিকোয়েন্স নিয়ে আবার একই প্রশ্ন করে। এটাই বারবার চলতে থাকে যতক্ষণ না উত্তর সম্পূর্ণ হয়।

মডেলের কোনো সত্যিকারের "বোঝাপড়া", চেতনা বা উদ্দেশ্য নেই — এটি কোটি কোটি উদাহরণ থেকে শেখা সম্ভাবনা প্রয়োগ করছে মাত্র। এই কারণেই — আপনার প্রম্পটে যা স্পষ্টভাবে লেখা নেই, মডেল তা "অনুমান" করার চেষ্টা করবে, এবং ভুল অনুমান করলে সেটাকেই "hallucination" বলা হয়। প্রম্পট ইঞ্জিনিয়ারিং-এর মূল কাজ হলো — মডেলের অনুমানের জায়গা যতটা সম্ভব কমিয়ে আনা।

৫ · এই সত্যটা প্রম্পট লেখাকে কীভাবে বদলে দেয়

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

  • অস্পষ্টতা = ভুল অনুমান: প্রম্পটে ফাঁক রাখলে মডেল সেই ফাঁক নিজের মতো করে পূরণ করবে — যা আপনি চাননি এমন কিছু হতে পারে।
  • শব্দ-ক্রম গুরুত্বপূর্ণ: একই তথ্য ভিন্নভাবে সাজালে ভিন্ন আউটপুট আসতে পারে, কারণ প্রতিটি টোকেনের অবস্থান সম্ভাবনাকে প্রভাবিত করে।
  • দৈর্ঘ্য = খরচ: প্রতিটি টোকেন (ইনপুট ও আউটপুট উভয়ই) সরাসরি খরচ ও সময়ের সাথে সম্পর্কিত — অপ্রয়োজনীয় শব্দ মানে অপ্রয়োজনীয় খরচ।
মূল কথা · Key takeaway

প্রম্পট ইঞ্জিনিয়ারিং জাদু নয় — এটি এই যান্ত্রিক বাস্তবতার সাথে কাজ করার শিল্প। বাকি পুরো কোর্সে আমরা যে কৌশলগুলো শিখব (স্বচ্ছতা, উদাহরণ, গঠন, চেইন-অফ-থট) — প্রতিটিরই লক্ষ্য একটাই: মডেলের পরবর্তী-টোকেন-অনুমানকে আপনার আসল উদ্দেশ্যের দিকে যতটা সম্ভব নির্ভুলভাবে চালিত করা।

ভাবনার প্রশ্ন

প্রতিটি প্রশ্ন নিজে কিছুক্ষণ ভাবুন — তারপর "→ উত্তর" চাপুন।

প্র ০১ যদি LLM সত্যিই "বোঝে না", তাহলে কেন এটি জটিল যুক্তি, কোড ডিবাগিং, বা সৃজনশীল লেখায় এত ভালো ফলাফল দেয়?

মূল উত্তর — স্কেল ও প্যাটার্ন। "বোঝা" এবং "অত্যন্ত নির্ভুলভাবে পরবর্তী টোকেন অনুমান করা" — বাস্তবে অনেক ক্ষেত্রেই ফলাফলে প্রায় আলাদা করা যায় না। কোটি কোটি কোড উদাহরণ, গণিতের সমাধান ও যুক্তিসম্পন্ন লেখা থেকে শেখার ফলে মডেল এমন প্যাটার্ন ধরতে শেখে যা মানুষের যুক্তির কাঠামোর সাথে হুবহু মিলে যায়।

তবে পার্থক্যটা দেখা যায় সীমানায় — যেখানে ট্রেনিং ডেটায় যথেষ্ট প্যাটার্ন ছিল না, সেখানে মডেল আত্মবিশ্বাসের সাথে ভুল উত্তর দেয় (hallucination), কারণ তার কাছে "আমি জানি না" বলার কোনো সহজাত প্রক্রিয়া নেই — শুধু পরবর্তী সবচেয়ে সম্ভাব্য টোকেন বসানোর প্রক্রিয়া আছে। পরের পাঠগুলোতে আমরা দেখব কীভাবে প্রম্পটে "অনিশ্চয়তা প্রকাশের অনুমতি" দিলে এটা কমানো যায়।

প্র ০২ একই প্রশ্ন দুইবার করলে LLM প্রায়ই কিছুটা ভিন্ন উত্তর দেয় — অথচ ক্যালকুলেটর সবসময় একই উত্তর দেয়। কেন এই পার্থক্য?

প্রতিটি ধাপে মডেল আসলে পরবর্তী টোকেনের জন্য একটি সম্ভাবনা বিতরণ তৈরি করে — যেমন "sky"-এর পরে "is" আসার সম্ভাবনা ৭০%, "was" আসার সম্ভাবনা ১৫%, ইত্যাদি। কোন টোকেনটি আসলে বেছে নেওয়া হবে তা একটি র‍্যান্ডম sampling প্রক্রিয়ার উপর নির্ভর করে (temperature নামক একটি সেটিং দিয়ে নিয়ন্ত্রিত)।

ক্যালকুলেটরে কোনো সম্ভাবনা নেই — শুধু নির্দিষ্ট নিয়ম। LLM-এ temperature 0-এর কাছাকাছি সেট করলে আউটপুট প্রায় স্থির (deterministic) হয়ে যায়, কিন্তু ডিফল্ট সেটিংয়ে সামান্য র‍্যান্ডমনেস থাকেই — এটাই মডেলকে সৃজনশীল ও বৈচিত্র্যময় উত্তর দিতে সাহায্য করে, কিন্তু নিখুঁত reproducibility থেকে দূরে রাখে।

প্র ০৩ বাংলায় লেখা একটি প্রম্পট প্রায়ই একই অর্থের ইংরেজি প্রম্পটের চেয়ে বেশি টোকেন খরচ করে — এটা টোকেন খরচের হিসেবে কী প্রভাব ফেলতে পারে?

যেহেতু বেশিরভাগ টোকেনাইজার ইংরেজি-প্রধান কর্পাসে প্রশিক্ষিত, বাংলার মতো ভাষায় একই শব্দ ভাঙতে প্রায়ই বেশি টোকেন লাগে। এর সরাসরি অর্থ — একই কাজের জন্য বাংলা প্রম্পট চালাতে বেশি ইনপুট টোকেন এবং প্রায়ই বেশি খরচ হতে পারে।

ব্যবহারিক প্রভাব — যেসব অ্যাপ্লিকেশনে টোকেন খরচ গুরুত্বপূর্ণ (উচ্চ-ভলিউম প্রোডাকশন সিস্টেম), সেখানে system prompt ও নির্দেশনা ইংরেজিতে রেখে শুধু ব্যবহারকারীর ইনপুট/আউটপুট বাংলায় রাখা একটি সাধারণ কৌশল। এই কোর্সের M4 মডিউলে (টোকেন খরচ) আমরা এই ট্রেড-অফ বিস্তারিত দেখব।

অনুশীলন

  1. পরীক্ষা করুন: যেকোনো একটি LLM (ChatGPT, Claude, বা Gemini)-এ একই প্রশ্ন দুইবার জিজ্ঞেস করুন। দুটো উত্তর তুলনা করুন — কোথায় মিল, কোথায় পার্থক্য? পার্থক্যটা কেন হলো তা এই পাঠের ধারণা দিয়ে ব্যাখ্যা করুন।

    সাধারণত মূল তথ্য/কাঠামো একই থাকবে (কারণ প্রশিক্ষণ ডেটায় সবচেয়ে সম্ভাব্য প্যাটার্ন একই), কিন্তু শব্দচয়ন, বাক্যগঠন বা উদাহরণে পার্থক্য দেখা যাবে — এটাই sampling-এর কারণে সৃষ্ট স্বাভাবিক ভিন্নতা।

  2. হিসেব করুন: "আমি আজ বাজারে গিয়ে দুই কেজি চাল কিনেছি" বাক্যটি এবং তার ইংরেজি অনুবাদ "I went to the market today and bought two kilograms of rice" — কোনটি বেশি টোকেন খরচ করবে বলে মনে হয়, এবং কেন?

    বেশিরভাগ ক্ষেত্রে বাংলা বাক্যটি বেশি টোকেন খরচ করবে, কারণ টোকেনাইজার ইংরেজি শব্দের জন্য প্রায়ই একটি মাত্র টোকেন ব্যবহার করতে পারে, কিন্তু বাংলা অক্ষর/শব্দাংশের জন্য একাধিক টোকেন লাগতে পারে। এটাই এই পাঠে আলোচিত টোকেনাইজেশন অসামঞ্জস্যের বাস্তব উদাহরণ।

  3. চিন্তা করুন: একটি দীর্ঘ কথোপকথনে (৫০+ বার্তা) হঠাৎ মডেল শুরুর দিকের একটি তথ্য "ভুলে" যায়। এটি context window ধারণা দিয়ে ব্যাখ্যা করুন।

    যখন কথোপকথন context window-এর সীমা ছাড়িয়ে যায়, তখন পুরনো বার্তাগুলো (সাধারণত সবচেয়ে আগেরগুলো) কেটে ফেলা হয় বা সারসংক্ষেপ করা হয়, যাতে নতুন বার্তার জন্য জায়গা থাকে। ফলে সেই বাদ পড়া তথ্য মডেলের কাছে আর "দৃশ্যমান" থাকে না — এটা ভুলে যাওয়া নয়, বরং প্রম্পট থেকে সেই অংশ সরিয়ে ফেলার ফলাফল।

আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ

কোর্সে ফিরে যান
প্রম্পট ইঞ্জিনিয়ারিং — সব পাঠ