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

লং-কনটেক্সট প্রম্পটিং

Long-context prompting
১০ মিনিট পড়া উচ্চ-মধ্যম · Advanced XML স্ট্রাকচারিং জানা থাকলে সুবিধা সম্পূর্ণ বাংলায়

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

  • কেন ডকুমেন্টের অবস্থান — প্রম্পটের শুরুতে না শেষে — উত্তরের মান বদলে দেয়
  • একাধিক ডকুমেন্ট XML ট্যাগে কীভাবে সুশৃঙ্খলভাবে গঠন করবেন
  • quotes-first পদ্ধতি — উত্তরের আগে প্রমাণ বের করার কৌশল
  • এই কৌশলগুলো কেন RAG ও দীর্ঘ ডকুমেন্ট বিশ্লেষণে বিশেষভাবে কার্যকর

১ · দীর্ঘ প্রম্পটে ক্রম কেন গুরুত্বপূর্ণ

পাঠ ০১-এ আমরা দেখেছি context window মানে মডেলের "মেমরি"-র সীমা। কিন্তু context window-এর মধ্যে থাকা তথ্যও সমানভাবে "মনোযোগ" পায় না — একটি প্রম্পটের কোথায় কী বসানো হচ্ছে, তা মডেলের উত্তরের মানকে সরাসরি প্রভাবিত করে। বিশেষ করে যখন প্রম্পটে ২০,০০০ টোকেনের বেশি লম্বা ডকুমেন্ট বা ডেটা থাকে — একে বলা হয় লং-কনটেক্সট প্রম্পটিং (Long-context Prompting)Long-context Promptingএমন প্রম্পট লেখার কৌশল যেখানে বড় পরিমাণ ডকুমেন্ট বা ডেটা (সাধারণত ২০k+ টোকেন) মডেলকে দেওয়া হয় — যেমন একাধিক রিপোর্ট, লম্বা কোডবেস, বা আইনি নথি। -এর নিয়মগুলো এখানে প্রযোজ্য।

গবেষণার ফলাফল · Finding

দীর্ঘ ডকুমেন্ট বা ডেটা প্রম্পটের শুরুতে বসানো, এবং আপনার প্রশ্ন বা নির্দেশনা একদম শেষে রাখা — পরীক্ষায় উত্তরের মান পর্যন্ত ৩০% পর্যন্ত বাড়িয়েছে, বিশেষ করে যেখানে একাধিক ডকুমেন্ট একসাথে দেওয়া হয়েছে।

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

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

২ · একাধিক ডকুমেন্ট গঠন করা — XML ট্যাগ দিয়ে

পাঠ ০৬-এ আমরা XML ট্যাগ দিয়ে প্রম্পট গঠন করা শিখেছি। একাধিক ডকুমেন্ট একসাথে দেওয়ার সময় এই কৌশল বিশেষভাবে জরুরি — কারণ একাধিক নথি মিশ্রিত টেক্সট আকারে দিলে মডেল বুঝতে পারে না কোথায় একটা ডকুমেন্ট শেষ হচ্ছে আর পরেরটা শুরু হচ্ছে, বা কোন তথ্য কোন সোর্স থেকে এসেছে।

Multidocument prompt structure
<documents>
  <document index="1">
    <source>annual_report_2025.pdf</source>
    <document_content>
      রাজস্ব ২০২৫ সালে বৃদ্ধি পেয়ে ৪২০ কোটি টাকায় পৌঁছেছে, যা আগের
      বছরের তুলনায় ১৮% বেশি। মূল প্রবৃদ্ধি এসেছে ক্লাউড সার্ভিস বিভাগ
      থেকে...
    </document_content>
  </document>
  <document index="2">
    <source>competitor_analysis_q4.pdf</source>
    <document_content>
      প্রতিদ্বন্দ্বী কোম্পানি X একই প্রান্তিকে ১২% প্রবৃদ্ধি দেখিয়েছে,
      মূলত মূল্য-হ্রাস কৌশলের মাধ্যমে বাজার-অংশ বাড়িয়ে...
    </document_content>
  </document>
</documents>

আপনার প্রশ্ন: উপরের বার্ষিক রিপোর্ট ও প্রতিদ্বন্দ্বী বিশ্লেষণের ভিত্তিতে,
আমাদের প্রবৃদ্ধির হার প্রতিদ্বন্দ্বীর তুলনায় কেমন, এবং এর সম্ভাব্য কারণ কী?

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

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

৩ · উত্তরের আগে quotes বের করা — গ্রাউন্ডিং কৌশল

দীর্ঘ ডকুমেন্ট নিয়ে কাজ করার সময় একটা বাস্তব ঝুঁকি থাকে — মডেল পুরো ডকুমেন্ট মনোযোগ সহকারে না পড়ে, নিজের প্রশিক্ষণ ডেটা থেকে "সাধারণ জ্ঞান" দিয়ে উত্তর তৈরি করে ফেলতে পারে, যা পাঠ ০১-এ আলোচিত hallucination-এর ঝুঁকি বাড়ায়। এটা কমানোর একটি কার্যকর কৌশল হলো মডেলকে দুই ধাপে উত্তর দিতে বলা।

Quotes-first grounding pattern
উপরের ডকুমেন্ট থেকে প্রশ্নের সাথে সরাসরি প্রাসঙ্গিক অংশগুলো প্রথমে
<quotes> ট্যাগে হুবহু তুলে দিন। তারপর <answer> ট্যাগে, শুধুমাত্র
সেই quotes-এর ভিত্তিতে উত্তর লিখুন।

<quotes>
[এখানে ডকুমেন্ট থেকে হুবহু প্রাসঙ্গিক অংশ]
</quotes>

<answer>
[শুধু উপরের quotes-এর ভিত্তিতে উত্তর]
</answer>

এই পদ্ধতি কেন কাজ করে তা পাঠ ০৮-এর chain-of-thought ধারণার সাথে মিল আছে — মডেলকে সরাসরি চূড়ান্ত উত্তরে না গিয়ে একটা মধ্যবর্তী ধাপ দিয়ে যেতে বাধ্য করা হচ্ছে। quotes বের করার এই ধাপ মডেলের "মনোযোগ" আসল ডকুমেন্টের নির্দিষ্ট অংশে কেন্দ্রীভূত করে, এবং যেহেতু উত্তর ধাপে সেই quotes-গুলোই ইতিমধ্যে প্রম্পটে (context-এ) বিদ্যমান, মডেলকে নতুন করে পুরো ডকুমেন্ট থেকে প্রাসঙ্গিক অংশ "মনে করার" দরকার পড়ে না — সে শুধু নিজের বের করা quotes ব্যবহার করে।

যদি মডেল <quotes>-এ এমন কিছু তুলে ধরে যা আসলে ডকুমেন্টে নেই (হুবহু মিলছে না), সেটা একটা স্পষ্ট সতর্কসংকেত যে উত্তরটাও নির্ভরযোগ্য নয়। এই স্বচ্ছতাই quotes-first পদ্ধতির বাড়তি সুবিধা — ভুল থাকলেও তা সহজে ধরা পড়ে, কারণ quotes সরাসরি ডকুমেন্টের সাথে মিলিয়ে যাচাই করা যায়।
মূল কথা · Key takeaway

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

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

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

প্র ০১ একজন ডেভেলপার একটা ১৫,০০০ শব্দের আইনি চুক্তি প্রম্পটের শেষে বসিয়ে তার আগে "নিচের চুক্তিটি বিশ্লেষণ করুন" লিখলেন। এই কাঠামোতে কী সমস্যা হতে পারে, এবং কীভাবে ঠিক করবেন?

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

সমাধান — কাঠামো উল্টে দিন। প্রথমে <document> ট্যাগে পুরো চুক্তিটা বসান, তারপর সবশেষে নির্দেশনা লিখুন — "উপরের চুক্তিটি বিশ্লেষণ করুন..."। এই সাধারণ পরিবর্তনই উত্তরের মান বাড়াতে পারে।

প্র ০২ quotes-first পদ্ধতি ব্যবহার করলে প্রতিটি উত্তরে বাড়তি টোকেন খরচ হয় (quotes লেখার জন্য)। তাহলে কখন এই বাড়তি খরচ যুক্তিসঙ্গত, আর কখন নয়?

যেখানে নির্ভুলতা ও verifiability গুরুত্বপূর্ণ — যেমন আইনি নথি বিশ্লেষণ, চিকিৎসা তথ্য সারসংক্ষেপ, বা আর্থিক রিপোর্ট থেকে সিদ্ধান্ত নেওয়া — সেখানে বাড়তি টোকেন খরচ সহজেই যুক্তিসঙ্গত, কারণ ভুল উত্তরের মূল্য বাড়তি টোকেন খরচের চেয়ে অনেক বেশি।

কিন্তু ছোট, কম-ঝুঁকির টাস্কে (যেমন একটা ছোট প্যারাগ্রাফের সারসংক্ষেপ) এই বাড়তি ধাপ অপ্রয়োজনীয় হতে পারে — পাঠ ১৭-এর লিন প্রম্পটিং নীতি অনুযায়ী, প্রতিটি বাড়তি কাঠামো তখনই যোগ করা উচিত যখন তা প্রকৃত মান যোগ করে।

প্র ০৩ একটি RAG সিস্টেমে একসাথে পাঁচটা রিট্রিভ করা ডকুমেন্ট মডেলে পাঠানো হচ্ছে, কিন্তু কোনো index বা source ট্যাগ ছাড়াই সবগুলো একটানা টেক্সট হিসেবে জোড়া লাগানো। এতে কী সমস্যা হতে পারে?

মডেল বুঝতে পারবে না কোথায় একটা ডকুমেন্ট শেষ হচ্ছে আর পরেরটা শুরু হচ্ছে, ফলে দুটো ভিন্ন সোর্সের তথ্য ভুলভাবে মিশিয়ে ফেলতে পারে, অথবা উত্তরে ভুল সোর্স উল্লেখ করতে পারে (attribution ভুল হওয়া) — যা RAG সিস্টেমে একটা গুরুতর নির্ভরযোগ্যতার সমস্যা।

সমাধান — প্রতিটি রিট্রিভ করা ডকুমেন্টকে আলাদা <document index="n"> ট্যাগে, নিজস্ব <source> সহ গঠন করুন। এই বিষয়টা পাঠ ২৪-এ (RAG-এর জন্য প্রম্পটিং) আরও বিস্তারিতভাবে আলোচনা করা হবে।

অনুশীলন

  1. পুনর্গঠন করুন: একজন ব্যবহারকারী তিনটে পণ্য পর্যালোচনা (রিভিউ) এবং একটা প্রশ্ন — "কোন পণ্যটা সবচেয়ে ভালো ব্যাটারি লাইফ দেয়?" — একটানা টেক্সট হিসেবে মিশিয়ে পাঠাচ্ছেন। এটাকে এই পাঠের নিয়ম মেনে পুনর্গঠন করুন।

    তিনটে রিভিউকে <documents>-এর মধ্যে তিনটে আলাদা <document index="1/2/3"> ট্যাগে (প্রতিটিতে <source> ও <document_content> সহ) বসাতে হবে, সবকিছুর শুরুতে। প্রশ্নটা — "কোন পণ্যটা সবচেয়ে ভালো ব্যাটারি লাইফ দেয়?" — একদম শেষে, ডকুমেন্টগুলোর পরে রাখতে হবে।

  2. প্রয়োগ করুন: একটা ৩০ পাতার প্রযুক্তিগত ম্যানুয়াল থেকে "রিটার্ন পলিসি কী?" জিজ্ঞেস করা হচ্ছে। quotes-first পদ্ধতি ব্যবহার করে একটা সম্পূর্ণ প্রম্পট টেমপ্লেট লিখুন (ডকুমেন্ট ট্যাগ বাদ দিয়ে শুধু নির্দেশনা অংশ)।

    টেমপ্লেট: "উপরের ম্যানুয়াল থেকে রিটার্ন পলিসি সংক্রান্ত প্রাসঙ্গিক অংশগুলো প্রথমে <quotes> ট্যাগে হুবহু তুলে দিন। তারপর <answer> ট্যাগে, শুধুমাত্র সেই quotes-এর ভিত্তিতে রিটার্ন পলিসি সংক্ষেপে ব্যাখ্যা করুন। যদি ম্যানুয়ালে এই তথ্য না থাকে, তা স্পষ্টভাবে বলুন।"

  3. বিশ্লেষণ করুন: একটা প্রম্পটে ডকুমেন্ট ও প্রশ্ন সঠিক ক্রমে (ডকুমেন্ট আগে, প্রশ্ন পরে) সাজানো হয়েছে, কিন্তু কোনো ক্যাশিং ব্যবহার করা হচ্ছে না, এবং প্রতিবার একই ডকুমেন্ট নতুন করে পাঠানো হচ্ছে। এটা কেন অদক্ষ, এবং কোন আগের পাঠের সাথে এটা যুক্ত?

    পাঠ ১৬-এ (প্রম্পট ক্যাশিং) দেখা হয়েছে — স্থির অংশ (এখানে ডকুমেন্ট) প্রম্পটের শুরুতে রাখার সুবিধাটা তখনই পুরোপুরি কাজে লাগে যখন সেই অংশ ক্যাশ করা হয়। ক্যাশিং ছাড়া প্রতিবার একই ডকুমেন্ট পুরোপুরি নতুন করে প্রসেস হচ্ছে, ফলে মান-বৃদ্ধির সুবিধা পাওয়া গেলেও খরচ-সাশ্রয়ের সুবিধাটা মিস হয়ে যাচ্ছে।

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

আগের পাঠ
টুল ইউজ প্রম্পটিং