পাঠ ২৩ · ২৮-এর মধ্যে
Home / AI Courses / প্রম্পট ইঞ্জিনিয়ারিং / প্রম্পট বনাম কনটেক্সট ইঞ্জিনিয়ারিং

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

Prompt engineering vs context engineering
১০ মিনিট পড়া উচ্চ-মধ্যম · Advanced কোর্সের আগের পাঠ জানা থাকলে সুবিধা সম্পূর্ণ বাংলায়

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

  • প্রম্পট ইঞ্জিনিয়ারিং ও কনটেক্সট ইঞ্জিনিয়ারিংয়ের সুনির্দিষ্ট সংজ্ঞাগত পার্থক্য
  • "নির্দেশনায় জ্ঞান" বনাম "অবকাঠামোয় জ্ঞান" — এই ফ্রেমিং কেন উপযোগী
  • কেন কনটেক্সট ইঞ্জিনিয়ারিং প্রম্পট ইঞ্জিনিয়ারিংকে প্রতিস্থাপন করে না, বরং তাকে অন্তর্ভুক্ত করে
  • এই পার্থক্যটা কেন RAG সিস্টেম ও দীর্ঘ-চলমান এজেন্টে ব্যবহারিকভাবে গুরুত্বপূর্ণ

১ · মডিউল ৬-এ স্বাগতম — একটা নতুন প্রশ্ন

এই কোর্সের প্রথম ২২টা পাঠ জুড়ে আমরা একটা প্রশ্নের উত্তর খুঁজেছি — একটা প্রম্পট কীভাবে লিখলে মডেল থেকে সেরা ফলাফল পাওয়া যায়? স্বচ্ছতা, উদাহরণ, গঠন, chain-of-thought, টুল ইউজ — এই সবকিছুই ছিল কীভাবে বলবেন তার কৌশল। কিন্তু ২০২৬ সালে প্রোডাকশন AI সিস্টেম ডিজাইন করার সময় একটা সমান গুরুত্বপূর্ণ, ভিন্ন প্রশ্ন সামনে আসে — মডেল উত্তর দেওয়ার মুহূর্তে তার কাছে ঠিক কী কী তথ্য পৌঁছাচ্ছে?

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

২ · সংজ্ঞাগত পার্থক্য

সংজ্ঞা · Definition

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

একটা সহজ ফ্রেমিং দিয়ে পার্থক্যটা মনে রাখা যায় — প্রম্পট ইঞ্জিনিয়ারিং জ্ঞান রাখে নির্দেশনার মধ্যে (in the instruction); কনটেক্সট ইঞ্জিনিয়ারিং জ্ঞান রাখে অবকাঠামোর মধ্যে (in the infrastructure) — অর্থাৎ সেই সিস্টেমের মধ্যে যা প্রতিটি কলের আগে মডেলকে ঠিক কী পাঠানো হবে তা নির্ধারণ করে।

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

৩ · কনটেক্সট ইঞ্জিনিয়ারিং প্রতিস্থাপন নয়, বরং একটা বৃহত্তর স্তর

এখানে একটা সাধারণ ভুল বোঝাবুঝি এড়ানো জরুরি — কনটেক্সট ইঞ্জিনিয়ারিং প্রম্পট ইঞ্জিনিয়ারিংকে অপ্রাসঙ্গিক করে দেয় না। বরং এটা একটা বৃহত্তর ব্যবস্থা, যার একটা অপরিহার্য উপাদান হলো প্রম্পট ইঞ্জিনিয়ারিং — যেমন কী রিট্রিভ করা হবে, কথোপকথনের ইতিহাস কীভাবে কমপ্যাক্ট/সারসংক্ষেপ করা হবে, কোন টুল উন্মুক্ত করা হবে, আর দীর্ঘমেয়াদে কী মনে রাখা হবে — এই সবকিছুর সিদ্ধান্তই কনটেক্সট ইঞ্জিনিয়ারিং-এর অংশ, কিন্তু একবার সেই কনটেক্সট ঠিক হয়ে গেলে, সেটাকে মডেলের কাছে কীভাবে উপস্থাপন করা হবে (XML ট্যাগে, নাকি Markdown-এ, কোন ক্রমে) — সেটা প্রম্পট ইঞ্জিনিয়ারিং।

Anthropic-এর নিজস্ব ফ্রেমিং অনুযায়ী — কনটেক্সট ইঞ্জিনিয়ারিং প্রম্পট ইঞ্জিনিয়ারিংয়ের প্রতিস্থাপন নয়, বরং একটা বৃহত্তর স্তর, যা প্রম্পট ইঞ্জিনিয়ারিংকে তার একটা উপাদান হিসেবে অন্তর্ভুক্ত করে — কী রিট্রিভ করা হয়, কী মনে রাখা হয়, কোন টুল উন্মুক্ত থাকে, একটা দীর্ঘ কথোপকথন কীভাবে কমপ্যাক্ট বা সারসংক্ষেপ করা হয় — এই সবকিছু মিলিয়েই বড় সিস্টেম, আর প্রম্পট ইঞ্জিনিয়ারিং তার একটা অংশ।

এই কোর্সের এখন পর্যন্ত পড়া প্রায় প্রতিটা পাঠই আসলে প্রম্পট ইঞ্জিনিয়ারিংয়ের অংশ — স্বচ্ছতা, few-shot উদাহরণ, XML গঠন, chain-of-thought। কিন্তু পাঠ ২১-এ (লং-কনটেক্সট প্রম্পটিং) আমরা যখন বললাম "ডকুমেন্ট প্রথমে, প্রশ্ন পরে" — সেটা প্রম্পট ইঞ্জিনিয়ারিং। কিন্তু আসলে কোন ডকুমেন্টগুলো রিট্রিভ করে প্রম্পটে দেওয়া হবে, কতটা প্রাসঙ্গিক তথ্য পাওয়া গেছে, ডকুমেন্টটা আদৌ সঠিক কি না — এই সিদ্ধান্তগুলো কনটেক্সট ইঞ্জিনিয়ারিংয়ের অংশ, যা প্রম্পট লেখার আগেই ঘটে যায়।

৪ · কেন এই পার্থক্যটা ব্যবহারিকভাবে গুরুত্বপূর্ণ

এই পার্থক্যটা নিছক পরিভাষাগত তর্ক নয় — এটা সরাসরি প্রভাব ফেলে কোথায় সময় ও প্রচেষ্টা বিনিয়োগ করবেন তার উপর। একটা বাস্তব সমস্যার কথা ভাবুন — একটা RAG (Retrieval-Augmented Generation) সিস্টেম ভুল উত্তর দিচ্ছে। প্রথম প্রতিক্রিয়া প্রায়ই হয় প্রম্পট আরও ভালো করে লেখা — আরও স্পষ্ট নির্দেশনা, আরও উদাহরণ, আরও কঠোর ফরম্যাট নিয়ম। কিন্তু যদি সমস্যাটা আসলে হয় যে রিট্রিভাল সিস্টেমই ভুল ডকুমেন্ট খুঁজে আনছে (বা প্রাসঙ্গিক ডকুমেন্টটা একেবারেই খুঁজে পাচ্ছে না) — তাহলে প্রম্পট যতই নিখুঁত হোক, মডেল ভুল উত্তরই দেবে, কারণ তার কাছে সঠিক তথ্যটাই কখনো পৌঁছায়নি।

কোনো পরিমাণ প্রম্পট-পলিশ একটা কনটেক্সট সমস্যা ঠিক করতে পারে না। যদি মডেলের কাছে ভুল ডকুমেন্ট, অসম্পূর্ণ কথোপকথন-ইতিহাস, বা ভুল/অনুপস্থিত টুল পৌঁছায়, তাহলে সমস্যার আসল সমাধান প্রম্পটে নয় — রিট্রিভাল পাইপলাইন, মেমরি ব্যবস্থাপনা, বা টুল-এক্সপোজার ডিজাইনে।

তাই একটা প্রোডাকশন সিস্টেম ডিবাগ করার সময় প্রথম প্রশ্ন হওয়া উচিত — "মডেল কি সঠিক তথ্য পেয়েছে?" (কনটেক্সট প্রশ্ন), তারপরই — "মডেল কি সেই তথ্যটা সঠিকভাবে ব্যবহার করেছে?" (প্রম্পট প্রশ্ন)। এই দুটো প্রশ্ন গুলিয়ে ফেললে, একটা টিম সপ্তাহের পর সপ্তাহ প্রম্পট নিয়ে পরিমার্জন করতে পারে অথচ আসল সমস্যা — একটা ভাঙা রিট্রিভাল পাইপলাইন — অপরিবর্তিত থেকে যায়।

মূল কথা · Key takeaway

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

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

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

প্র ০১ একটা কাস্টমার-সাপোর্ট চ্যাটবট বারবার পুরনো, বাতিল হয়ে যাওয়া মূল্য-তালিকা উদ্ধৃত করছে, যদিও প্রম্পটে স্পষ্ট লেখা আছে "সবসময় সবচেয়ে হালনাগাদ তথ্য ব্যবহার করুন।" এটা কি প্রম্পট সমস্যা, নাকি কনটেক্সট সমস্যা?

এটা প্রায় নিশ্চিতভাবেই একটা কনটেক্সট ইঞ্জিনিয়ারিং সমস্যা। প্রম্পটে "হালনাগাদ তথ্য ব্যবহার করুন" লেখা থাকলেও, যদি রিট্রিভাল সিস্টেম আসলে পুরনো মূল্য-তালিকার ডকুমেন্টটাই মডেলকে সরবরাহ করে (কারণ সেটা এখনো ইনডেক্সে আছে, বা নতুন ডকুমেন্ট এখনো ইনডেক্স হয়নি), তাহলে মডেলের কাছে সঠিক তথ্যটাই কখনো পৌঁছায়নি।

সমাধান প্রম্পটে নয় — ডকুমেন্ট ইনডেক্স আপডেট করা, পুরনো ডকুমেন্ট রিট্রিভাল থেকে বাদ দেওয়া বা আর্কাইভ করা, এবং নিশ্চিত করা যে রিট্রিভাল পাইপলাইন সবসময় সর্বশেষ ভার্সনটাই আনছে — এটাই আসল ফিক্স।

প্র ০২ একটা দল যুক্তি দিচ্ছে — "আমরা যেহেতু এখন কনটেক্সট ইঞ্জিনিয়ারিং করছি, তাই প্রম্পট ইঞ্জিনিয়ারিং শেখা আর দরকার নেই।" এই যুক্তিতে কী ভুল আছে?

এটা এই পাঠের কেন্দ্রীয় ভুল বোঝাবুঝি। কনটেক্সট ইঞ্জিনিয়ারিং প্রম্পট ইঞ্জিনিয়ারিংকে প্রতিস্থাপন করে না — বরং এটাকে অন্তর্ভুক্ত করে। এমনকি একটা নিখুঁতভাবে ডিজাইন করা রিট্রিভাল পাইপলাইনও যদি সঠিক ডকুমেন্ট এনে দেয়, তারপরও সেই ডকুমেন্টগুলো মডেলের কাছে কীভাবে উপস্থাপন করা হবে (কোন ক্রমে, কোন ট্যাগে, প্রশ্নটা কোথায় বসবে) — এই সিদ্ধান্তগুলো এখনো প্রম্পট ইঞ্জিনিয়ারিং, এবং সেগুলো এখনো ফলাফলে পার্থক্য তৈরি করে।

বাস্তবে, ভালো কনটেক্সট ইঞ্জিনিয়ারিং শুধু ভালো প্রম্পট ইঞ্জিনিয়ারিংয়ের জন্য কাঁচামাল তৈরি করে দেয় — একটা ছাড়া অন্যটা অসম্পূর্ণ।

প্র ০৩ একটা দীর্ঘ-চলমান এজেন্ট (পাঠ ২২-এ আলোচিত ধরনের) একটা পুরনো, ইতিমধ্যে সমাধান হয়ে যাওয়া সমস্যা নিয়ে বারবার একই ভুল পুনরাবৃত্তি করছে। এটাকে কনটেক্সট ইঞ্জিনিয়ারিং কীভাবে সমাধান করতে পারে যা শুধু প্রম্পট ইঞ্জিনিয়ারিং পারে না?

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

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

অনুশীলন

  1. শ্রেণীবদ্ধ করুন: নিচের প্রতিটা পরিবর্তন প্রম্পট ইঞ্জিনিয়ারিং, নাকি কনটেক্সট ইঞ্জিনিয়ারিং — (ক) সিস্টেম প্রম্পটে একটা উদাহরণ যোগ করা, (খ) রিট্রিভাল সিস্টেমে top-k ডকুমেন্টের সংখ্যা ৩ থেকে ৫ করা, (গ) প্রশ্নকে ডকুমেন্টের পরে না রেখে আগে বসানো, (ঘ) কথোপকথনের ইতিহাস কীভাবে সারসংক্ষেপ করা হবে তার নিয়ম বদলানো।

    (ক) প্রম্পট ইঞ্জিনিয়ারিং (নির্দেশনার ভাষা/কাঠামো বদলাচ্ছে)। (খ) কনটেক্সট ইঞ্জিনিয়ারিং (মডেল কী তথ্য পাচ্ছে তা বদলাচ্ছে)। (গ) প্রম্পট ইঞ্জিনিয়ারিং (উপস্থাপনার ক্রম বদলাচ্ছে, তথ্যের উৎস নয়)। (ঘ) কনটেক্সট ইঞ্জিনিয়ারিং (মডেলের কাছে কী ইতিহাস পৌঁছাবে তা নির্ধারণ করছে)।

  2. নির্ণয় করুন: একটা কোড-রিভিউ এজেন্ট প্রায়ই এমন সাজেশন দেয় যা প্রজেক্টের নিজস্ব কোডিং কনভেনশনের বিপরীত। এটা সমাধানের জন্য প্রম্পট নাকি কনটেক্সট পরিবর্তন প্রয়োজন, এবং কেন?

    মূলত কনটেক্সট সমস্যা — এজেন্টকে প্রজেক্টের নিজস্ব কনভেনশন ডকুমেন্ট (স্টাইল গাইড, লিন্টার কনফিগ, পূর্ববর্তী রিভিউ মন্তব্য) কনটেক্সটে সরবরাহ করা হচ্ছে না। প্রম্পটে "প্রজেক্টের কনভেনশন মেনে চলুন" লিখলেও, যদি সেই কনভেনশনটাই মডেলের কাছে না থাকে, নির্দেশটা কার্যকর হবে না।

  3. ব্যাখ্যা করুন: "একটা নিখুঁত প্রম্পটও একটা ভাঙা কনটেক্সট পাইপলাইনে ব্যর্থ হয়" — এই বাক্যটা নিজের ভাষায়, একটা নতুন উদাহরণ দিয়ে ব্যাখ্যা করুন যা এই পাঠে দেওয়া হয়নি।

    উদাহরণ হতে পারে — একটা আইনি-নথি বিশ্লেষণ এজেন্টের প্রম্পট চমৎকারভাবে লেখা, quotes-first পদ্ধতিও ব্যবহার করা হয়েছে (পাঠ ২১), কিন্তু ফাইল-আপলোড পাইপলাইন ভুলভাবে নথির শেষ কয়েক পাতা কেটে ফেলছে। মডেল যতই ভালো প্রম্পট পাক, তার কাছে অসম্পূর্ণ ডকুমেন্ট পৌঁছাচ্ছে — তাই উত্তরও অসম্পূর্ণ বা ভুল হবে, প্রম্পটের কোনো দোষ ছাড়াই।

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

আগের পাঠ
দীর্ঘ-মেয়াদী এজেন্ট টাস্ক ও নিরাপত্তা