পাঠ ০৮ · ২৮-এর মধ্যে
Home / AI Courses / প্রম্পট ইঞ্জিনিয়ারিং / ধাপে ধাপে চিন্তা

ধাপে ধাপে চিন্তা — Chain-of-Thought

Chain-of-thought reasoning
৯ মিনিট পড়া মাঝারি · Intermediate পাঠ ০১-০৭ জানা থাকলে ভালো সম্পূর্ণ বাংলায়

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

  • Chain-of-thought প্রম্পটিং কী এবং এটি কেন নির্ভুলতা বাড়ায়
  • Adaptive thinking কী — এবং কেন এটি ম্যানুয়াল CoT-এর প্রয়োজনীয়তা কমিয়ে দিয়েছে
  • ``/`` ট্যাগ প্যাটার্ন কীভাবে ব্যবহার করবেন যখন প্রয়োজন
  • কেন reasoning মডেলে "step by step ভাবো" বলাটা প্রায়ই অপ্রয়োজনীয় বা এমনকি পাল্টা-ফলদায়ক

১ · Chain-of-Thought আসলে কী?

Chain-of-Thought (CoT)Chain-of-Thoughtএকটি প্রম্পটিং কৌশল যেখানে মডেলকে চূড়ান্ত উত্তর দেওয়ার আগে মধ্যবর্তী যুক্তির ধাপগুলো স্পষ্টভাবে লিখতে উৎসাহিত করা হয় — অনেকটা মানুষ কাগজে অঙ্ক কষার মতো। মানে হলো — মডেলকে সরাসরি চূড়ান্ত উত্তরে না গিয়ে, প্রথমে সমস্যাটিকে ছোট ছোট যুক্তির ধাপে ভেঙে "ভাবতে" বলা।

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

মূল কথা · Key takeaway

CoT কাজ করে কারণ এটি মডেলের নিজের আউটপুটকে তার পরবর্তী ইনপুটের অংশ বানিয়ে দেয় (autoregressive প্রকৃতির সরাসরি সুবিধা নেওয়া) — প্রতিটি লেখা ধাপ পরের ধাপের জন্য অতিরিক্ত, নির্ভরযোগ্য প্রেক্ষাপট তৈরি করে।

২ · যে জিনিসটা বদলে গেছে — Adaptive Thinking

কয়েক বছর আগে পর্যন্ত, CoT ছিল সম্পূর্ণভাবে প্রম্পট-লেখকের দায়িত্ব — আপনাকে নিজে থেকে "let's think step by step" বা অনুরূপ বাক্য লিখে মডেলকে যুক্তি লিখতে বাধ্য করতে হতো। ২০২৬ সালে এই চিত্র বদলে গেছে। Claude-এর সাম্প্রতিক মডেলগুলো ব্যবহার করে adaptive thinking — মডেল নিজে থেকেই সিদ্ধান্ত নেয় কখন এবং কতটা গভীরভাবে "ভাবা" দরকার, যা একটি `effort` প্যারামিটার এবং প্রশ্নের জটিলতা অনুযায়ী ক্যালিব্রেট করা হয়।

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

এর মানে এই নয় যে CoT কৌশল হিসেবে অপ্রাসঙ্গিক হয়ে গেছে — বরং এর ভূমিকা বদলেছে। আগে আপনাকে মডেলকে ভাবতে বাধ্য করতে হতো; এখন প্রশ্ন হলো মডেলের বিল্ট-ইন চিন্তাভাবনাকে কীভাবে সঠিক দিকে নির্দেশনা দেবেন।

৩ · কীভাবে নির্দেশনা দেবেন — প্রেসক্রিপটিভ নয়, সাধারণ

Anthropic-এর গাইডলাইন এখানে একটি গুরুত্বপূর্ণ পরামর্শ দেয় — নির্দিষ্ট ধাপ-ভিত্তিক পরিকল্পনা লিখে দেওয়ার বদলে (যেমন "প্রথমে X করো, তারপর Y করো, তারপর Z করো"), সাধারণ নির্দেশনা দেওয়া ভালো (যেমন "পুরোপুরি ভেবে দেখো")। কারণ — মডেলের নিজস্ব reasoning process প্রায়ই আপনার হাতে-লেখা পরিকল্পনার চেয়ে বেশি কার্যকর ও নমনীয়, বিশেষত এমন সমস্যায় যেখানে সঠিক পদ্ধতি আগে থেকে অনুমান করা কঠিন।

❌ কম কার্যকর (Less effective) — অতিরিক্ত প্রেসক্রিপটিভ ধাপ:

Prompt
Solve this step by step: Step 1, identify the variables.
Step 2, write the equation. Step 3, isolate X. Step 4, check
your answer by substituting back in.

✅ বেশি কার্যকর (More effective) — সাধারণ, খোলামেলা নির্দেশনা:

Prompt
Think through this problem thoroughly before answering, and verify
your final answer before responding.

দ্বিতীয় প্রম্পটটি মডেলকে তার নিজস্ব সবচেয়ে উপযুক্ত পদ্ধতি বেছে নেওয়ার স্বাধীনতা দেয়, অথচ এখনো স্পষ্টভাবে যুক্তি ও যাচাই করার নির্দেশ দেয় — এটাই "general instruction over prescriptive plan" নীতির বাস্তব প্রয়োগ।

৪ · <thinking>/<answer> ট্যাগ প্যাটার্ন — ম্যানুয়াল ফলব্যাক

যেসব ক্ষেত্রে মডেলের বিল্ট-ইন adaptive thinking যথেষ্ট নয়, বা আপনি চান মডেলের যুক্তি-প্রক্রিয়া ও চূড়ান্ত উত্তর স্পষ্টভাবে আলাদা থাকুক, সেখানে ম্যানুয়ালি `` ও `` ট্যাগ ব্যবহার করা যায় — পাঠ ০৬-এ আলোচিত XML গঠন-কৌশলের সরাসরি প্রয়োগ। এটি এখনো একটি বৈধ ও কার্যকর ফলব্যাক প্যাটার্ন।

Prompt
A store had 84 apples. They sold 37 in the morning and received
a new shipment of 52 in the afternoon. How many apples do they
have now?

Work through this in <thinking> tags, then give your final
answer in <answer> tags.
``/`` আলাদা করে রাখার একটি বাস্তব সুবিধা — আপনি চাইলে প্রোগ্রামেটিকভাবে শুধু `` অংশটুকু বের করে ব্যবহারকারীকে দেখাতে পারেন, আর `` অংশ লগে রেখে দিতে পারেন ডিবাগিং বা যাচাইয়ের জন্য — ঠিক যেমন একজন পরীক্ষার্থী রাফ খাতায় হিসাব করে, তারপর উত্তরপত্রে শুধু চূড়ান্ত উত্তর লেখে।

৫ · স্ব-যাচাই — একটি সহজ কিন্তু শক্তিশালী সংযোজন

একটি ছোট কিন্তু কার্যকর কৌশল হলো — মডেলকে তার নিজের উত্তর জমা দেওয়ার আগে যাচাই করতে বলা। যেমন — "verify your answer against [test criteria] before finalizing it।" এই একটি নির্দেশনা কোডিং ও গণিতের মতো ক্ষেত্রে নির্ভরযোগ্যভাবে ভুল ধরতে সাহায্য করে, কারণ এটি মডেলকে তার নিজের আউটপুটের বিরুদ্ধে একটি দ্বিতীয়বার "সমালোচনামূলক" পাস করতে বাধ্য করে।

৬ · Reasoning মডেলে "step by step ভাবো" বলার দরকার নেই কেন

এখানে OpenAI-এর গাইডলাইন থেকে একটি গুরুত্বপূর্ণ, ভিন্ন কিন্তু সম্পর্কিত নীতি আসে। আধুনিক reasoning মডেল (যেগুলোর নিজস্ব অন্তর্নিহিত extended reasoning ক্ষমতা আছে) ইতিমধ্যেই অভ্যন্তরীণভাবে ধাপে ধাপে চিন্তা করে — তাদের আলাদাভাবে "think step by step" বলার প্রয়োজন নেই। বরং, সমস্যাটি ও কাঙ্ক্ষিত আউটপুট স্পষ্টভাবে বলাই যথেষ্ট।

এই দুটো ধারণা গুলিয়ে ফেলা সহজ, তাই স্পষ্ট করে বলা দরকার — ম্যানুয়াল, হাতে-লেখা step-by-step প্রম্পটিং সবচেয়ে বেশি গুরুত্বপূর্ণ সেসব মডেলের জন্য যেগুলোতে বিল্ট-ইন extended reasoning নেই। যে মডেলগুলোতে বিল্ট-ইন reasoning আছে (Claude-এর adaptive thinking, OpenAI-এর reasoning মডেল, ইত্যাদি), সেখানে "step by step ভাবো" লেখা অতিরিক্ত এবং কখনো কখনো অপ্রয়োজনীয় টোকেন খরচ করে মাত্র — কারণ মডেল যেভাবেই হোক তা ইতিমধ্যেই করছে।

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

মূল কথা · Key takeaway

প্রথমে যাচাই করুন আপনার মডেলের বিল্ট-ইন reasoning/thinking সক্ষমতা আছে কি না। থাকলে — সমস্যা ও কাঙ্ক্ষিত ফলাফল স্পষ্টভাবে বলুন এবং প্রয়োজনে যাচাই করতে বলুন। না থাকলে — ``/`` প্যাটার্ন বা সাধারণ "ভালোভাবে ভেবে দেখো" নির্দেশনা ব্যবহার করুন, প্রেসক্রিপটিভ ধাপ-তালিকা নয়।

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

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

প্র ০১ একটি মডেল যদি চূড়ান্ত উত্তরের আগে ভুল যুক্তি লেখে, কিন্তু শেষে হঠাৎ সঠিক উত্তরে পৌঁছায় — এটা কীভাবে সম্ভব, এবং এটা কি বিশ্বাসযোগ্য?

এটা সম্ভব কারণ চূড়ান্ত উত্তর টোকেন শুধু ঠিক আগের যুক্তির উপর নির্ভর করে না — পুরো প্রশিক্ষণ ডেটা থেকে শেখা সাধারণ প্যাটার্নও প্রভাব ফেলে। কিন্তু এটা নির্ভরযোগ্য নয় — গবেষণায় দেখা গেছে যে মডেলের লেখা যুক্তি সবসময় তার প্রকৃত "সিদ্ধান্ত গ্রহণ প্রক্রিয়া"-র নিখুঁত প্রতিফলন নাও হতে পারে।

এই কারণেই স্ব-যাচাই ধাপ ("verify your answer") গুরুত্বপূর্ণ — এটি মডেলকে যুক্তি ও উত্তরের মধ্যে সামঞ্জস্য পুনরায় পরীক্ষা করতে বাধ্য করে, নিছক একটি প্যাটার্ন-ম্যাচ করা উত্তরের উপর নির্ভর না করে।

প্র ০২ যদি একটি reasoning মডেলকে "step by step ভাবো" বলা "অতিরিক্ত টোকেন খরচ" করে মাত্র, তাহলে এটা কি সবসময় ক্ষতিকর, নাকি কখনো নিরীহ?

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

কিছু ক্ষেত্রে এটা সামান্য বিভ্রান্তিকরও হতে পারে — যদি "step by step" নির্দেশনা মডেলের নিজস্ব স্বাভাবিক reasoning কাঠামোর সাথে না মিলে যায়, তাহলে এটি মডেলকে একটি কম-স্বাভাবিক ফরম্যাটে যুক্তি লিখতে বাধ্য করতে পারে।

প্র ০৩ কেন প্রেসক্রিপটিভ ধাপ-তালিকা ("Step 1... Step 2...") কখনো কখনো মডেলের নিজস্ব যুক্তির চেয়ে খারাপ ফলাফল দিতে পারে?

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

সাধারণ নির্দেশনা ("পুরোপুরি ভেবে দেখো") মডেলকে প্রতিটি নির্দিষ্ট সমস্যার জন্য সবচেয়ে উপযুক্ত পদ্ধতি নিজে বেছে নেওয়ার স্বাধীনতা দেয় — যা প্রায়ই একটি সাধারণ, পূর্ব-নির্ধারিত টেমপ্লেটের চেয়ে ভালো কাজ করে।

অনুশীলন

  1. পরীক্ষা করুন: একটি মাঝারি জটিলতার গণিত বা লজিক সমস্যা কোনো LLM-কে দুইভাবে জিজ্ঞেস করুন — একবার সরাসরি ("উত্তর কী?"), আরেকবার "পুরোপুরি ভেবে দেখো এবং তারপর উত্তর দাও" যোগ করে। ফলাফল তুলনা করুন।

    সাধারণত দ্বিতীয় ক্ষেত্রে মডেল মধ্যবর্তী যুক্তি লেখে এবং জটিল সমস্যায় বেশি নির্ভুল উত্তর দেয় — যদিও আধুনিক reasoning মডেলে পার্থক্য কম দেখা যেতে পারে, কারণ এটি এমনিতেই অভ্যন্তরীণভাবে ভাবছে।

  2. লিখুন: একটি প্রম্পট তৈরি করুন যেখানে `` ট্যাগে যুক্তি এবং `` ট্যাগে চূড়ান্ত উত্তর আলাদা করে চাওয়া হয়েছে — একটি বাজেট-পরিকল্পনা সমস্যার জন্য (যেমন মাসিক আয়-ব্যয় হিসাব)।

    একটি ভালো উত্তরে সমস্যাটি স্পষ্টভাবে বর্ণনা করা থাকবে, তারপর সরাসরি নির্দেশ থাকবে — "Work through the calculation in <thinking> tags, then give the final budget breakdown in <answer> tags।"

  3. বিশ্লেষণ করুন: কোন পরিস্থিতিতে একটি প্রেসক্রিপটিভ ধাপ-তালিকা ("Step 1, Step 2...") আসলে সাধারণ নির্দেশনার চেয়ে ভালো হতে পারে? একটি উদাহরণ দিন।

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

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

পূর্ববর্তী পাঠ
সিস্টেম প্রম্পট ও রোল দেওয়া