(এই পাঠের ভিডিও দেখার জন্য উপরের ইমেজ ক্লিক করুন)
আপনি যে অ্যাপ্লিকেশনটির জন্য AI এজেন্ট তৈরি করছেন তার জটিলতা বোঝা নির্ভরযোগ্য একটি এজেন্ট তৈরিতে গুরুত্বপূর্ণ। আমাদের এমন AI এজেন্ট তৈরি করতে হবে যারা প্রম্পট ইঞ্জিনিয়ারিংয়ের বাইরে কমপ্লেক্স চাহিদাগুলো কার্যকরভাবে তথ্য পরিচালনা করতে পারে।
এই পাঠে, আমরা প্রাসঙ্গিক ইঞ্জিনিয়ারিং কী এবং AI এজেন্ট তৈরিতে এর ভূমিকা নিয়ে আলোচনা করব।
এই পাঠে আলোচনা করা হবে:
• প্রাসঙ্গিক ইঞ্জিনিয়ারিং কী এবং এটি প্রম্পট ইঞ্জিনিয়ারিং থেকে কেন আলাদা।
• কার্যকর প্রাসঙ্গিক ইঞ্জিনিয়ারিংয়ের কৌশল, যার মধ্যে তথ্য লেখা, নির্বাচন, সংকুচিত ও পৃথকীকরণের পদ্ধতি।
• সাধারণ প্রাসঙ্গিক ব্যর্থতা যা আপনার AI এজেন্টকে বিচ্যুত করতে পারে এবং সেগুলো কিভাবে ঠিক করবেন।
এই পাঠ সম্পন্ন করার পর, আপনি জানতে পারবেন কিভাবে:
• প্রাসঙ্গিক ইঞ্জিনিয়ারিং সংজ্ঞায়িত করবেন এবং এটি প্রম্পট ইঞ্জিনিয়ারিং থেকে পৃথক করবেন।
• বড় ভাষা মডেল (LLM) অ্যাপ্লিকেশনে প্রাসঙ্গিক মূল উপাদানসমূহ চিহ্নিত করবেন।
• কৌশল প্রয়োগ করবেন তথ্য লেখা, নির্বাচন, সংকুচিতকরণ এবং পৃথকীকরণের জন্য যাতে এজেন্টের কার্যক্ষমতা বাড়ে।
• সাধারণ প্রাসঙ্গিক ব্যর্থতাগুলো চিনবেন যেমন বিষাক্তকরণ, বিভ্রান্তি, জটিলতা এবং সংঘাত এবং প্রতিকারমূলক প্রযুক্তি প্রয়োগ করবেন।
AI এজেন্টের জন্য প্রাসঙ্গিক (context) হচ্ছে এমন তথ্য যা AI এজেন্টকে নির্দিষ্ট কর্ম গ্রহণের পরিকল্পনা করতে সাহায্য করে। প্রাসঙ্গিক ইঞ্জিনিয়ারিং হচ্ছে এমন একটি প্রক্রিয়া যা নিশ্চিত করে AI এজেন্টের হাতে উপযুক্ত তথ্য রয়েছে কাজের পরবর্তী ধাপ সম্পন্ন করার জন্য। প্রাসঙ্গিক জানালা আকারে সীমিত, তাই এজেন্ট নির্মাতাদের তথ্য যোগ, অপসারণ ও সংক্ষিপ্তকরণের জন্য সিস্টেম ও প্রক্রিয়া তৈরি করতে হয়।
প্রম্পট ইঞ্জিনিয়ারিং কেন্দ্রীভূত একটি স্থির নির্দেশিকা সেটকে কার্যকর AI এজেন্ট গাইড করার জন্য মনোনিবেশ করে। কিন্তু প্রাসঙ্গিক ইঞ্জিনিয়ারিং একটি গতিশীল তথ্য সেটের পরিচালনা যা প্রাথমিক প্রম্পটসহ সময়ের সাথে AI এজেন্টের প্রয়োজনীয় তথ্য নিশ্চিত করে। প্রাসঙ্গিক ইঞ্জিনিয়ারিংয়ের মূল ধারণা হলো এই প্রক্রিয়াকে পুনরাবৃত্তি ও নির্ভরযোগ্য করে তোলা।
মনে রাখা জরুরি যে প্রাসঙ্গিক শুধুমাত্র একটি জিনিস নয়। AI এজেন্টের প্রয়োজনীয় তথ্য বিভিন্ন উৎস থেকে আসতে পারে এবং আমাদের দায়িত্ব এজেন্টকে এসব উৎসের অ্যাক্সেস প্রদান করা।
প্রাসঙ্গিক ধরণের মধ্যে অন্তর্ভুক্ত থাকতে পারে:
• নির্দেশিকা: যা এজেন্টের “নিয়ম” যেমন প্রম্পট, সিস্টেম বার্তা, নিকট-শট উদাহরণ (AI কীভাবে কিছু করতে হয় দেখানো), এবং যন্ত্রপাতি বর্ণনা। এখানে প্রম্পট ও প্রাসঙ্গিক ইঞ্জিনিয়ারিং সমন্বিত হয়।
• জ্ঞান: তথ্য, ডেটাবেস থেকে আহৃত তথ্য, বা দীর্ঘমেয়াদী স্মৃতি যা এজেন্টের সংগ্রহিত। এতে Retrieval Augmented Generation (RAG) ব্যবস্থা সংযোজন থাকে যদি এজেন্টকে বিভিন্ন জ্ঞান ও ডেটাবেসে অ্যাক্সেস প্রয়োজন।
• উপকরণ: বহিরাগত ফাংশন, API ও MCP সার্ভার সংজ্ঞাসমূহ যা এজেন্ট কল করতে পারে, এবং এগুলি ব্যবহারে প্রাপ্ত ফলাফল।
• আলাপ-আলোচনার ইতিহাস: ব্যবহারকারীর সাথে চলমান সংলাপ। সময়ের সঙ্গে সাথে এই আলোচনা দীর্ঘ ও জটিল হয় যা প্রাসঙ্গিক জানালায় স্থান নেয়।
• ব্যবহারকারীর পছন্দ: ব্যবহারকারীর পছন্দ বা অপছন্দ সংক্রান্ত তথ্য যা সময়ের সঙ্গে শেখা হয়। এগুলো সংরক্ষণ করে মূল সিদ্ধান্ত গ্রহণে ব্যবহার করা যায়।
ভাল প্রাসঙ্গিক ইঞ্জিনিয়ারিং শুরু হয় ভাল পরিকল্পনা থেকে। এখানে একটি পদ্ধতি যা আপনাকে প্রাসঙ্গিক ইঞ্জিনিয়ারিং ধারণা প্রয়োগের বিষয়ে ভাবতে সাহায্য করবে:
১. পরিষ্কার ফলাফল নির্ধারণ করুন - AI এজেন্টকে যে কাজগুলো দেওয়া হবে সেগুলোর ফলাফল স্পষ্টভাবে সংজ্ঞায়িত করুন। প্রশ্নটির উত্তর দিন - “কাজ শেষ হলে বিশ্ব কেমন দেখাবে?” অর্থাৎ, ব্যবহারকারী interaction শেষে কী পরিবর্তন, তথ্য বা প্রতিক্রিয়া পাবে।
২. প্রাসঙ্গিক মানচিত্র তৈরি করুন - কাজের ফলাফল নির্ধারনের পর প্রশ্ন করুন, “কাজ সম্পন্নের জন্য AI এজেন্টকে কী তথ্য প্রয়োজন?” এর মাধ্যমে তথ্য কোথায় পাওয়া যেতে পারে তার মানচিত্র তৈরি করুন।
৩. প্রাসঙ্গিক পাইপলাইন তৈরি করুন - তথ্যের অবস্থান জানা হয়ে গেলে প্রশ্ন করুন, “এজেন্ট কীভাবে তথ্য সংগ্রহ করবে?” বিভিন্ন পদ্ধতি যেমন RAG, MCP সার্ভার ব্যবহার ও অন্যান্য উপায় প্রয়োগ হতে পারে।
পরিকল্পনা গুরুত্বপূর্ণ, তবে তথ্য প্রবাহ শুরু হলে আমাদের ব্যবহারিক কৌশল থাকতে হবে:
কিছু তথ্য স্বয়ংক্রিয়ভাবে প্রাসঙ্গিক জানালায় যোগ হবে, তবে প্রাসঙ্গিক ইঞ্জিনিয়ারিং মানে তথ্যের কৌশলগত ভূমিকা গ্রহণ, যা নিম্নলিখিত মাধ্যমে করা যায়:
১. এজেন্ট স্ক্র্যাচপ্যাড
এআই এজেন্টকে একটি একক সেশনের সময় প্রাসঙ্গিক তথ্য বা ব্যবহারকারী সংলাপের নোট নেওয়ার সুযোগ দেয়। এটি প্রাসঙ্গিক জানালার বাইরে একটি ফাইল বা রানটাইম অবজেক্টে থাকা উচিত যা প্রয়োজনে পরে ফেরত পাওয়া যায়।
২. স্মৃতি
স্ক্র্যাচপ্যাড একক সেশনের বাইরে তথ্য ব্যবস্থাপনা করে। স্মৃতি একাধিক সেশনে প্রাসঙ্গিক তথ্য সংরক্ষণ ও পুনরুদ্ধার করতে সাহায্য করে। যেমন সারমর্ম, ব্যবহারকারীর পছন্দ, এবং ভবিষ্যতের উন্নতির জন্য ফিডব্যাক।
৩. প্রাসঙ্গিক সংকোচন
যখন প্রাসঙ্গিক জানালা বড় হয়ে সীমার কাছাকাছি পৌঁছে, সারমারি বা ট্রিমিংয়ের মাধ্যমে তথ্য সংকুচিত করতে হয়। সবচেয়ে প্রাসঙ্গিক তথ্য রেখে পুরানো বার্তা অপসারণ করা যেতে পারে।
৪. বহু-এজেন্ট সিস্টেম
বহু-এজেন্ট সিস্টেম কাঠামোও প্রাসঙ্গিক ইঞ্জিনিয়ারিংয়েরই একটি রূপ কারণ প্রতিটি এজেন্টের নিজস্ব প্রাসঙ্গিক জানালা থাকে। কীভাবে তথ্য ভাগ করে নেওয়া হয় বা বিভিন্ন এজেন্টের মধ্যে প্রেরিত হয়, সেটিও পরিকল্পনা করা প্রয়োজন।
৫. স্যান্ডবক্স পরিবেশ
যদি এজেন্ট কিছু কোড চালাতে বা বড় পরিমাণ তথ্য প্রক্রিয়াজাত করতে চায়, তখন প্রাসঙ্গিক জানালায় সব তথ্য থাকা অত্যন্ত টোকেন খরচ করতে পারে। এই ক্ষেত্রে, এজেন্ট একটি স্যান্ডবক্স ব্যবহার করতে পারে যা কোড চালায় এবং ফলাফল ও প্রাসঙ্গিক তথ্য পড়ে।
৬. রানটাইম স্টেট অবজেক্ট
এটি তথ্যের ধারক তৈরি করে যখন এজেন্টকে নির্দিষ্ট তথ্যের অ্যাক্সেস প্রয়োজন হয়। জটিল কাজের জন্য, এটি অনুমতি দেয় এজেন্ট ধাপে ধাপে প্রতিটি উপ-কার্যের ফলাফল সংরক্ষণ করতে, যাতে শুধুমাত্র সেই উপ-কার্যের সাথে প্রাসঙ্গিক জানা থাকে।
একটি কৌশল প্রয়োগের পর, পরবর্তী মডেল কল আসলেই কি পায় দেখাটা গুরুত্বপূর্ণ। একটি কার্যকর ডিবাগিং প্রশ্ন হলো:
এজেন্ট কি অতিরিক্ত প্রাসঙ্গিক তথ্য লোড করেছে, ভুল তথ্য এনেছে, নাকি প্রয়োজনীয় তথ্য মিস করেছে?
এই প্রশ্নের উত্তর দিতে আগে প্রম্পট, টুল আউটপুট বা স্মৃতির কাঁচা ডেটা লগ করার প্রয়োজন নেই। প্রোডাকশনে ছোট প্রাসঙ্গিক পরিদর্শন রেকর্ড ব্যবহার করা উচিত যা গণনা, আইডি, হ্যাশ এবং নীতি লেবেল ধরে রাখে:
লক্ষ্য বেশি প্রাসঙ্গিক তথ্য রাখা নয়; বরং যথেষ্ট প্রমাণ রাখা যাতে ডেভেলপার জানতে পারে কোন প্রাসঙ্গিক কৌশল কার্যকর হয়েছে এবং পরবর্তী মডেল কল সঠিকভাবে পরিবর্তিত হয়েছে কিনা।
ধরুন আমরা একটি AI এজেন্ট চাই “আমার জন্য প্যারিসের একটি ভ্রমণ বুক কর।”
• শুধুমাত্র প্রম্পট ইঞ্জিনিয়ারিং ব্যবহৃত একটি সাধারণ এজেন্ট হয়তো শুধু বলবে: “ঠিক আছে, কখন আপনি প্যারিস যাচ্ছেন?” এটি কেবল তখনকার সরাসরি প্রশ্ন প্রক্রিয়া করেছে।
• প্রাসঙ্গিক ইঞ্জিনিয়ারিং কৌশল ব্যবহৃত এজেন্ট অনেক বেশি কার্যকর হবে। প্রতিক্রিয়া দেওয়ার আগেই, এটি হয়তো:
◦ আপনার ক্যালেন্ডার পরীক্ষা করবে (রিয়েল-টাইম ডেটা আহরণ)।
◦ পূর্ববর্তী ভ্রমণ পছন্দ স্মরণ করবে (দীর্ঘমেয়াদী স্মৃতি থেকে) যেমন পছন্দের এয়ারলাইন, বাজেট, বা আপনি কি সরাসরি फ्लাইট পছন্দ করেন।
◦ ভ্রমণ ও হোটেল বুকিংয়ের জন্য উপলব্ধ টুল চিহ্নিত করবে।
এটা কী: যখন কোনো হ্যালুসিনেশন (LLM দ্বারা সৃষ্ট মিথ্যা তথ্য) বা ত্রুটি প্রাসঙ্গিকে প্রবেশ করে এবং বারংবার উল্লেখ করা হয়, ফলে এজেন্ট অসম্ভব লক্ষ্য অনুসরণ করে বা অর্থহীন কৌশল তৈরি করে।
কী করবেন: প্রাসঙ্গিক যাচাই এবং কোয়ারেন্টাইন বাস্তবায়ন করুন। দীর্ঘমেয়াদী স্মৃতিতে তথ্য যোগ করার আগে যাচাই করুন। বিষাক্ততার সম্ভাবনা থাকলে নতুন প্রাসঙ্গিক থ্রেড শুরু করুন যাতে খারাপ তথ্য ছড়িয়ে না পড়ে।
ভ্রমণ বুকিং উদাহরণ: আপনার এজেন্ট একটি ছোট স্থানীয় বিমানবন্দর থেকে দূরবর্তী আন্তর্জাতিক শহরে সরাসরি ফ্লাইট সম্পর্কে ভুল ধারণা করে যা বাস্তবে নেই। এই ভুল ফ্লাইট বিবরণ প্রাসঙ্গে সংরক্ষিত হয়। পরে বুকিংয়ের সময় এজেন্ট বার বার এই অসম্ভব রুটের টিকিট খোঁজে, যা ত্রুটি সৃষ্টি করে।
সমাধান: একটি ধাপ যোগ করুন যা ফ্লাইটের অস্তিত্ব ও রুটসমূহ বাস্তব-সময়ের API দিয়ে যাচাই করে এর আগে এগুলো প্রাসঙ্গিক তথ্য হিসেবে এজেন্টের কাছে যোগ করা হয়। যাচাই ব্যর্থ হলে ভুল তথ্য “কোয়ারেন্টাইন” করা হবে এবং আর ব্যবহার হবে না।
এটা কী: প্রাসঙ্গিক তথ্য এত বেশি হয়ে যায় যে মডেল তার প্রশিক্ষিত তথ্যের পরিবর্তে জমা হওয়া ইতিহাসে বেশি মনোযোগ দেয়, ফলে পুনরাবৃত্তিমূলক বা অনাবশ্যক কাজ করে। প্রাসঙ্গিক জানালা পূর্ণ হওয়ার আগেই ভুল হতে পারে।
কী করবেন: প্রাসঙ্গিক সারমারী তৈরি ব্যবহার করুন। নির্দিষ্ট সময় পর পর অর্জিত তথ্য ছোট সারাংশে সংকুচিত করুন, গুরুত্বপুর্ন তথ্য রেখে অপ্রয়োজনীয় ইতিহাস অপসারণ করুন। এতে মনোযোগ “রিসেট” হয়।
ভ্রমণ বুকিং উদাহরণ: আপনার দীর্ঘ দীর্ঘ আলোচনায় গত দুই বছরের ব্যাকপ্যাকিং ট্রিপের বিস্তারিত বিবরণ রয়েছে। যখন আপনি বলবেন “আগামী মাসে সস্তা ফ্লাইট খুঁজো,” তখন এজেন্ট পুরানো অপ্রাসঙ্গিক তথ্য নিয়ে আটকে যাবে, পুরনো যন্ত্রপাতি বা যাত্রাপথ সংক্রান্ত প্রশ্ন করবে, বর্তমান অনুরোধ উপেক্ষা করবে।
সমাধান: নির্দিষ্ট সংখ্যক টার্ন বা প্রাসঙ্গিক জানালা খুব বড় হলে এজেন্ট আলোচনার সাম্প্রতিক ও প্রাসঙ্গিক অংশগুলোর সারমারী তৈরি করবে — আপনার বর্তমান ভ্রমণ তারিখ ও গন্তব্যের ওপর ফোকাস করে — এবং এই সংকুচিত সার্মারি পরবর্তী LLM কলের জন্য ব্যবহার করবে, কম প্রাসঙ্গিক ইতিহাস বাদ দেবে।
এটা কী: অতিরিক্ত অসংখ্য টুল থাকার কারণে মডেল ভুল প্রতিক্রিয়া তৈরি করে বা অপ্রাসঙ্গিক টুল কল করে। ছোট মডেলগুলো এতে বেশি প্রবণ।
কী করবেন: RAG পদ্ধতি ব্যবহার করে টুল লোডআউট ব্যবস্থাপনা করুন। টুল বর্ণনা ভেক্টর ডেটাবেজে সংরক্ষণ করুন এবং প্রতিটি কাজের জন্য শুধুমাত্র প্রাসঙ্গিক টুল নির্বাচন করুন। গবেষণায় দেখা গেছে টুল সংখ্যা ৩০ থেকে কম রাখা ভালো।
ভ্রমণ বুকিং উদাহরণ: আপনার এজেন্টের ডজনের বেশি টুল আছে যেমন: book_flight, book_hotel, rent_car, find_tours, currency_converter, weather_forecast, restaurant_reservations ইত্যাদি। আপনি যখন জিজ্ঞেস করেন, “প্যারিসে চলাচলের সেরা উপায় কী?” টুলের এত ভিড়ের কারণে এজেন্ট বিভ্রান্ত হয়ে প্যারিসের ভেতর book_flight কল করতে চায়, বা পাবলিক পরিবহন পছন্দ হওয়া সত্ত্বেও rent_car কল করে, কারণ টুল বর্ণনার ভারী ওভারল্যাপ এবং বেছে নিতে পারে না।
সমাধান: টুল বর্ণনায় RAG ব্যবহার করুন। প্যারিসে চলাচলের প্রশ্নে সিস্টেম শুধুমাত্র প্রাসঙ্গিক টুল যেমন rent_car বা public_transport_info আনে এবং LLM-কে ফোকাসড “লোডআউট” উপস্থাপন করে।
এটা কী: প্রাসঙ্গিকে বিরোধপূর্ণ তথ্য থাকার কারণে অসঙ্গত যুক্তি বা খারাপ চূড়ান্ত প্রতিক্রিয়া হয়। সাধারণত তথ্য পর্যায়ক্রমে আসার ফলে, ভুল অনুমান প্রথম থেকেই থাকে।
কী করবেন: প্রাসঙ্গিক ছাঁটাই (pruning) এবং অফলোডিং প্রয়োগ করুন। ছাঁটাই মানে পুরাতন বা বিরোধপূর্ণ তথ্য সরান যখন নতুন তথ্য আসে। অফলোডিং দিয়ে মডেলকে আলাদা “স্ক্র্যাচপ্যাড” কর্মক্ষেত্র দিন যাতে প্রাসঙ্গিক জানালা অপ্রস্তুত না হয়।
পর্যটন বুকিং উদাহরণ: আপনি প্রাথমিকভাবে আপনার এজেন্টকে বলেন, “আমি ইকোনমি ক্লাসে ফ্লাইট করতে চাই।” পরে কথোপকথনের সময়, আপনি মন পরিবর্তন করে বলেন, “অ্যাকচুয়ালি, এই সফরের জন্য, চলুন বিজনেস ক্লাসে যাই।” যদি উভয় নির্দেশনা প্রসঙ্গে থেকে যায়, তাহলে এজেন্ট হয়তো বিপরীত অনুসন্ধান ফলাফল পেতে পারে বা কোন পছন্দকে অগ্রাধিকার দিতে হবে তা নিয়ে বিভ্রান্ত হতে পারে।
সমাধান: কনটেক্সট প্রুনিং প্রয়োগ করুন। যখন একটি নতুন নির্দেশ পুরনো নির্দেশের বিরুদ্ধে যায়, তখন পুরনো নির্দেশটি কনটেক্সট থেকে সরিয়ে দেওয়া হয় বা স্পষ্টভাবে ওভাররাইড করা হয়। বিকল্পভাবে, এজেন্ট একটি স্ক্র্যাচপ্যাড ব্যবহার করতে পারে যেখানে বিরোধপূর্ণ পছন্দসমূহ মেলানো হয়, এর ফলে শুধুমাত্র চূড়ান্ত, সঙ্গতিপূর্ণ নির্দেশিকা তার কার্য সম্পাদনা পরিচালনা করবে।
Microsoft Foundry Discord এ যোগ দিন অন্যান্য শিক্ষানবিশদের সাথে 만나, অফিস আওয়ারস এ অংশগ্রহণ করুন এবং আপনার AI এজেন্টস সম্পর্কিত প্রশ্নের উত্তর পান।
অস্বীকৃতি: এই নথিটি AI অনুবাদ পরিষেবা Co-op Translator ব্যবহার করে অনূদিত হয়েছে। যদিও আমরা শুদ্ধতার জন্য চেষ্টা করি, অনুগ্রহ করে মনে রাখবেন যে স্বয়ংক্রিয় অনুবাদে ত্রুটি বা অসঙ্গতি থাকতে পারে। মূল নথিটি তার স্বভাষায় কর্তৃত্বপূর্ণ উৎস হিসেবে বিবেচিত হওয়া উচিত। গুরুত্বপূর্ণ তথ্যের জন্য পেশাদার মানব অনুবাদ সুপারিশ করা হয়। এই অনুবাদের ব্যবহারে প্রয়োজনীয় ভুল বোঝাবুঝি বা ভুল ব্যাখ্যার জন্য আমরা দায়বদ্ধ নই।