যখন একটি লার্জ ল্যাঙ্গুয়েজ মডেলের (LLM) সাথে দীর্ঘ কথোপকথন চালান বা বিশাল ডকুমেন্ট বিশ্লেষণ করান, তখন একটি নির্দিষ্ট সীমারেখা কাজ করে — প্রেক্ষাপট উইন্ডো (Context Window)। এই সীমা মডেলের “স্মৃতি” নিয়ন্ত্রণ করে এবং সরাসরি প্রভাব ফেলে আপনার প্রম্পটের কতটুকু অংশ সে একসঙ্গে প্রক্রিয়া করতে পারবে। এখানে আমরা শিখব প্রেক্ষাপট উইন্ডো আসলে কী, কেন এটি গুরুত্বপূর্ণ, টোকেন সীমা কীভাবে নির্ধারিত হয় এবং বাস্তব প্রকল্পে এই সীমাবদ্ধতা সামলানোর কৌশল কী কী।

প্রেক্ষাপট উইন্ডো কী?

প্রেক্ষাপট উইন্ডো হলো টোকেনের সর্বোচ্চ সংখ্যা যা একটি LLM একবারে ইনপুট হিসেবে গ্রহণ করতে পারে এবং তার ভিত্তিতে পরবর্তী টোকেন প্রেডিক্ট করতে পারে। মডেল যখন কোনো প্রম্পট পায়, তখন পুরো ইনপুট — প্রম্পট, পূর্ববর্তী কথোপকথন, সিস্টেম মেসেজ — সবকিছু টোকেনে ভেঙে এই জানালার ভেতরে রাখতে হয়। জানালার বাইরের তথ্য মডেল একেবারেই “দেখতে” পায় না, ফলে তার আউটপুটে সেই অংশের কোনো প্রভাব থাকে না।

টোকেন হলো টেক্সটের ক্ষুদ্রতম একক, যা শব্দ, উপশব্দ বা বিরাম চিহ্ন হতে পারে। উদাহরণস্বরূপ, GPT-4 Turbo-র প্রেক্ষাপট উইন্ডো ১২৮,০০০ টোকেন; অর্থাৎ এটি এক অনুরোধে প্রায় ৯৬,০০০ ইংরেজি শব্দ বা একটি পূর্ণাঙ্গ উপন্যাসের সমপরিমাণ টেক্সট প্রসেস করতে পারে। কিন্তু কথোপকথন দীর্ঘ হলে বা বিশাল ডেটাসেট বিশ্লেষণের সময় খুব সহজেই এই সীমা ছাড়িয়ে যাওয়া সম্ভব। জানালা পূর্ণ হয়ে গেলে মডেল স্বয়ংক্রিয়ভাবে পুরোনো টোকেন বাদ দিয়ে দেয় — একে অনেক সময় “স্লাইডিং উইন্ডো” বা ট্রাঙ্কেশন বলা হয়।

কেন এটি গুরুত্বপূর্ণ?

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

  • কথোপকথনের গুণমান: জানালা ছোট হলে মডেল আগের প্রসঙ্গ হারিয়ে ফেলে, ব্যবহারকারীকে বারবার পুনরাবৃত্তি করতে হয়।
  • ডকুমেন্ট অ্যানালাইসিস: ৫০-page-এর একটি PDF বিশ্লেষণ করার সময় পুরো টেক্সট জানালায় না ধরতে পারলে মডেল আংশিক তথ্যের ওপর ভিত্তি করে ভুল উত্তর দিতে পারে।
  • খরচ ও লেটেন্সি: বড় প্রেক্ষাপট উইন্ডোতে বেশি টোকেন প্রসেস করতে হয়, যা API কলের খরচ বাড়ায় এবং রেসপন্স টাইম ধীর করে।
  • নিরাপত্তা: জানালার বাইরে থাকা সিস্টেম প্রম্পট বা নিরাপত্তা নির্দেশনা হারিয়ে গেলে মডেল অপ্রত্যাশিত আউটপুট দিতে পারে।

একটি ব্যবহারিক উদাহরণ: ধরুন আপনি একটি লিগ্যাল ডকুমেন্টের সব ধারা একসাথে বিশ্লেষণ করাতে চান। জানালা ৪,০৯৬ টোকেন (পুরোনো OpenAI মডেল) হলে কয়েক পৃষ্ঠার পরেই তথ্য হারিয়ে যেত। অথচ আজকের ১২৮k বা ১M (Gemini 1.5 Pro) উইন্ডো পুরো কেস ফাইল একবারে ইনজেস্ট করতে পারে।

টোকেন গণনা ও সীমার প্রভাব

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

import tiktoken

# GPT-4 / GPT-3.5-এর এনকোডিং
enc = tiktoken.get_encoding("cl100k_base")

text = "প্রেক্ষাপট উইন্ডো LLM-এর স্মৃতির পরিধি নির্ধারণ করে।"
tokens = enc.encode(text)
print(f"মোট টোকেন: {len(tokens)}")
print("টোকেন তালিকা:", tokens)

আউটপুটে দেখবেন বাংলা টেক্সটের প্রতিটি শব্দ এক বা একাধিক টোকেনে বিভক্ত হচ্ছে — সাধারণত ইংরেজির তুলনায় বাংলায় প্রতি শব্দে বেশি টোকেন লাগে। বাস্তবে ইনপুট ও পূর্ববর্তী রেসপন্স মিলিয়ে জানালার সীমার মধ্যে রাখতে চাইলে মোট টোকেন হিসাব রাখা জরুরি।

টোকেন সীমা পেরিয়ে গেলে যে প্রভাব পড়ে:

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

সীমাবদ্ধতা মোকাবিলার কৌশল

প্রেক্ষাপট উইন্ডোর সীমা একটি বাস্তবতা, কিন্তু কিছু কৌশল অবলম্বন করলে আপনি এর প্রভাব অনেকখানি কমাতে পারেন:

  1. ইনপুট সংক্ষেপণ: দীর্ঘ ডকুমেন্ট পাঠানোর আগে তার সারাংশ তৈরি করে শুধুমাত্র সারাংশ ও প্রাসঙ্গিক অংশ জানালায় রাখুন। একটি প্রি-প্রসেসিং ধাপে LLM-কে দিয়েই এটি করিয়ে নেওয়া সম্ভব।
  2. চাঙ্কিং ও RAG (Retrieval-Augmented Generation): বড় ডেটাসেটকে ছোট ছোট চাঙ্কে ভাগ করে ভেক্টর ডাটাবেসে সংরক্ষণ করুন। প্রম্পটের সময় কেবল সবচেয়ে প্রাসঙ্গিক চাঙ্কগুলো রিট্রিভ করে জানালায় পাঠান — এতে জানালার অপচয় বন্ধ হয়।
  3. কথোপকথন সংক্ষেপণ: চ্যাটবটে প্রতি কয়েকটি বিনিময়ের পর পুরো ইতিহাস আবার সংক্ষেপ করে নিন, তারপর সেই সংক্ষিপ্ত রূপ জানালার শুরুতে বসিয়ে দিন। এতে মডেল দীর্ঘ সময় প্রাসঙ্গিকতা বজায় রাখে।
  4. স্মার্ট প্রম্পট ডিজাইন: সিস্টেম প্রম্পটে পরিষ্কারভাবে টোকেন বাজেট উল্লেখ করে দিন এবং নির্দিষ্ট ফরম্যাট চাইলে প্রয়োজনীয় নির্দেশনা জানালার একেবারে শেষে (যেখানে কম ট্রাঙ্কেট হয়) রাখুন।
  5. মডেল নির্বাচন: কাজের ধরন অনুযায়ী পর্যাপ্ত প্রেক্ষাপট উইন্ডো আছে এমন মডেল বেছে নিন; ছোটখাটো কাজে অপ্রয়োজনীয় বড় উইন্ডো ব্যবহার না করাই ব্যয়-সাশ্রয়ী।

মনে রাখবেন, প্রেক্ষাপট উইন্ডো যত বড়ই হোক না কেন, মডেলের পারফরম্যান্স উইন্ডোর শেষের দিকে স্বাভাবিকভাবেই কিছুটা কমতে পারে। তাই সবচেয়ে গুরুত্বপূর্ণ তথ্যগুলো যতটা সম্ভব প্রম্পটের শেষের দিকে রাখুন, অথবা উপরিউক্ত কৌশলে পুনরাবৃত্তি করুন।

সারাংশ

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

Share