একটি বৃহৎ ল্যাঙ্গুয়েজ মডেলের কার্যকারিতা অনেকাংশে নির্ভর করে আমরা তাকে যে নির্দেশনা দিই তার উপর। প্রম্পট ইঞ্জিনিয়ারিং হলো এমনভাবে প্রশ্ন তৈরি করার প্রক্রিয়া, যা একটি এলএলএম (LLM) থেকে সর্বোত্তম আউটপুট পেতে সাহায্য করে। এটি একটি এলএলএম-ভিত্তিক ফিচার বাস্তবায়নের একটি অত্যন্ত গুরুত্বপূর্ণ ধাপ।
প্রম্পট ইঞ্জিনিয়ারিং একটি পুনরাবৃত্তিমূলক প্রক্রিয়া। আপনি যদি বিভিন্ন এলএলএম (LLM) নিয়ে পরীক্ষা-নিরীক্ষা করে থাকেন, তাহলে সম্ভবত লক্ষ্য করেছেন যে আরও ভালো ফলাফল পাওয়ার জন্য আপনার প্রম্পটটিতে কিছু পরিবর্তন আনার প্রয়োজন হয়েছিল।
বিভিন্ন আকারের মডেলের ক্ষেত্রেও এটি সত্য।
জেমিনি বা চ্যাটজিপিটি-র মতো বড় এলএলএম দ্বারা চালিত চ্যাট ইন্টারফেসগুলো প্রায়শই ন্যূনতম প্রম্পটিং প্রচেষ্টায় সন্তোষজনক ফলাফল দিতে পারে। তবে, যখন একটি ডিফল্ট, ছোট এলএলএম নিয়ে কাজ করা হয় যা ফাইন-টিউন করা নেই, তখন আপনাকে আপনার পদ্ধতিটি মানিয়ে নিতে হবে।
ছোট আকারের এলএলএমগুলো কম শক্তিশালী এবং সেগুলোর কাছে তথ্য সংগ্রহের সুযোগও সীমিত থাকে।
'ক্ষুদ্রতর এলএলএম' বলতে আমরা কী বোঝাই?
এলএলএম-এর আকার নির্ধারণ করা একটি জটিল বিষয়, এবং নির্মাতারা সবসময় তা প্রকাশ করেন না।
এই নথিতে, "ক্ষুদ্রতর এলএলএম" বলতে ৩০ বিলিয়নের কম প্যারামিটারযুক্ত যেকোনো মডেলকে বোঝানো হয়েছে। বর্তমানে, কয়েক মিলিয়ন থেকে কয়েক বিলিয়ন প্যারামিটারযুক্ত মডেলগুলো সাধারণ মানের ডিভাইসে ব্রাউজারে বাস্তবিকভাবেই চালানো সম্ভব।
ছোট আকারের এলএলএমগুলো কোথায় ব্যবহৃত হয়?
- ডিভাইসে বা ব্রাউজারে জেনারেটিভ এআই , যেমন যদি আপনি MediaPipe-এর LLM Inference API-এর সাথে Gemma 2B ব্যবহার করেন (যা শুধুমাত্র সিপিইউ-চালিত ডিভাইসের জন্যও উপযুক্ত) অথবা Transformers.js- এর সাথে ব্রাউজারে DistilBert ব্যবহার করেন। ওয়েব ডাউনলোডের আকার সহনীয় রাখতে এবং ডিভাইসের মেমরি ও GPU/CPU-এর সীমাবদ্ধতার সাথে সামঞ্জস্য রাখতে, ব্যবহারকারীর ডিভাইসে একটি মডেল ডাউনলোড করে ইনফারেন্স চালানো শুধুমাত্র এই ছোট আকারের LLM-গুলোর মাধ্যমেই সম্ভব।
- কাস্টম সার্ভার-সাইড জেনারেটিভ এআই । জেমা ২বি, জেমা ৭বি বা জেমা ২৭বি-এর মতো কম ওজনের মডেলগুলো আপনার নিজের সার্ভারে চালানোর (এবং ইচ্ছামত সূক্ষ্মভাবে সমন্বয় করার) জন্য উপলব্ধ রয়েছে।
শুরু করুন
জেমিনি বা চ্যাটজিপিটি-র মতো বড় এলএলএম দ্বারা চালিত চ্যাট ইন্টারফেসগুলো প্রায়শই ন্যূনতম প্রম্পটিং প্রচেষ্টায় সন্তোষজনক ফলাফল দিতে পারে। তবে, ছোট এলএলএম নিয়ে কাজ করার সময় আপনাকে আপনার পদ্ধতি পরিবর্তন করতে হবে। ছোট এলএলএমগুলো কম শক্তিশালী এবং সেগুলোতে তথ্য সংগ্রহের জন্য একটি ছোট ভান্ডার থাকে।
প্রাসঙ্গিক তথ্য এবং সুনির্দিষ্ট বিন্যাস নির্দেশাবলী প্রদান করুন।
ছোট এলএলএম-এর ক্ষেত্রে সর্বোত্তম ফলাফল পেতে, আরও বিস্তারিত ও সুনির্দিষ্ট নির্দেশনা তৈরি করুন।
উদাহরণস্বরূপ:
Based on a user review, provide a product rating as an integer between 1 and 5. \n
Only output the integer.
Review: "${review}"
Rating:
| ইনপুট (পর্যালোচনা) | আউটপুট (রেটিং) | |
|---|---|---|
| বৃহত্তর এলএলএম (মিথুন ১.৫) | ক্ষুদ্রতর এলএলএম (জেমা ২বি) | |
| ফিটটা আমার দারুণ লেগেছে! শরীরের ওজন ভালোভাবে বন্টন করে এবং সারাদিনের ট্রেকিংয়ের পরেও আশ্চর্যজনকভাবে আরামদায়ক। অবশ্যই কেনার পরামর্শ দেব। | ৫ | ৫ এর মধ্যে ৪ তারকা** |
| স্ট্র্যাপগুলো দুর্বল, এবং ভারী বোঝা বহন করার সময় সেগুলো আমার কাঁধে বিঁধতে শুরু করেছিল। | ১ | ২/৫ |
যদিও জেমিনি ১.৫ এই সাধারণ নির্দেশটির মাধ্যমে কাঙ্ক্ষিত আউটপুট দেয়, জেমার আউটপুট সন্তোষজনক নয়:
- ফর্ম্যাটটি ভুল। আমরা রেটিং-এর জন্য একটি পূর্ণসংখ্যা চেয়েছিলাম।
- রেটিংটি পুরোপুরি সঠিক বলে মনে হচ্ছে না। প্রথম রিভিউটি এতটাই উৎসাহব্যঞ্জক যে এটিকে ৫-স্টার রিভিউ বলা যায়।
এর সমাধান করতে, আমাদের প্রম্পট ইঞ্জিনিয়ারিং কৌশল, ওয়ান-শট, ফিউ-শট, মাল্টি-শট প্রম্পটিং এবং চেইন-অফ-থট প্রম্পটিং ব্যবহার করতে হবে। এছাড়াও আমাদের অবশ্যই সুস্পষ্ট ফরম্যাট নির্দেশনা প্রদান করতে হবে এবং মডেল যেন রেটিং-এর সম্পূর্ণ পরিসর ব্যবহার করে, সে বিষয়ে জোর দিতে হবে।
উদাহরণস্বরূপ:
`Analyze a product review, and then based on your analysis give me the
corresponding rating (integer). The rating should be an integer between 1 and
5. 1 is the worst rating, and 5 is the best rating. A strongly dissatisfied
review that only mentions issues should have a rating of 1 (worst). A strongly
satisfied review that only mentions positives and upsides should have a rating
of 5 (best). Be opinionated. Use the full range of possible ratings (1 to
5). \n\n
\n\n
Here are some examples of reviews and their corresponding analyses and
ratings:
\n\n
Review: 'Stylish and functional. Not sure how it'll handle rugged outdoor
use, but it's perfect for urban exploring.'
Analysis: The reviewer appreciates the product's style and basic
functionality. They express some uncertainty about its ruggedness but
overall find it suitable for their intended use, resulting in a positive,
but not top-tier rating.
Rating (integer): 4
\n\n
Review: 'It's a solid backpack at a decent price. Does the job, but nothing
particularly amazing about it.'
Analysis: This reflects an average opinion. The backpack is functional and
fulfills its essential purpose. However, the reviewer finds it unremarkable
and lacking any standout features deserving of higher praise.
Rating (integer): 3
\n\n
Review: 'The waist belt broke on my first trip! Customer service was unresponsive too. Would not recommend.'
Analysis: A serious product defect and poor customer service experience naturally warrants the lowest possible rating. The reviewer is extremely unsatisfied with both the product and the company.
Rating (integer): 1
\n\n
Review: 'Love how many pockets and compartments it has. Keeps everything organized on long trips. Durable too!'
Analysis: The enthusiastic review highlights specific features the user loves (organization and durability), indicating great satisfaction with the product. This justifies the highest rating.
Rating (integer): 5
\n\n
Review: 'The straps are a bit flimsy, and they started digging into my shoulders under heavy loads.'
Analysis: While not a totally negative review, a significant comfort issue leads the reviewer to rate the product poorly. The straps are a key component of a backpack, and their failure to perform well under load is a major flaw.
Rating (integer): 1
\n\n
Now, here is the review you need to assess:
\n
Review: "${review}" \n`;
| ইনপুট (পর্যালোচনা) | ছোট এলএলএম (জেমা ২বি) দিয়ে আউটপুট |
|---|---|
ফিটটা আমার দারুণ লেগেছে! শরীরের ওজন ভালোভাবে বন্টন করে এবং সারাদিনের ট্রেকিংয়ের পরেও আশ্চর্যজনকভাবে আরামদায়ক। অবশ্যই কেনার পরামর্শ দেব। | বিশ্লেষণ: এই পর্যালোচনাটি অত্যন্ত ইতিবাচক এবং এতে পণ্যটির ফিট ও আরামের ওপর জোর দেওয়া হয়েছে, যা পণ্যটির প্রতি ব্যাপক সন্তুষ্টি নির্দেশ করে। এটি একটি উচ্চ রেটিংকে সমর্থন করে। রেটিং (পূর্ণসংখ্যা): ৫ |
স্ট্র্যাপগুলো দুর্বল, এবং ভারী বোঝা বহন করার সময় সেগুলো আমার কাঁধে বিঁধতে শুরু করেছিল। | বিশ্লেষণ: পর্যালোচনাটিতে স্ট্র্যাপগুলোর আরাম সংক্রান্ত একটি উল্লেখযোগ্য সমস্যা তুলে ধরা হয়েছে। এতে আরও বলা হয়েছে যে, পণ্যটি ভারী বোঝা বহন বা দীর্ঘ সময় ধরে বাইরে থাকার জন্য উপযুক্ত নাও হতে পারে। রেটিং: ১ (সবচেয়ে খারাপ) |
আমাদের আরও বিশদ নির্দেশ, যা স্বল্প-সময়ের নির্দেশ এবং চিন্তাধারা-নির্দেশ কৌশলের সাথে মিলিত হয়ে, আরও সঠিক রেটিং দেয়।
ম্যানুয়াল আউটপুট পার্সিং আশা করা হচ্ছে
যদিও একটি এলএলএম-এর আউটপুট সর্বদা ম্যানুয়ালি পরিমার্জন ও ব্যাখ্যা করা উচিত, তবে এটি বিশেষত ছোট এলএলএম-গুলোর ক্ষেত্রে প্রযোজ্য, যেগুলো কম পরিশীলিত ফলাফল দিতে পারে এবং চিন্তার ধারাবাহিকতা বজায় রাখতে সহায়তার প্রয়োজন হতে পারে।
প্রথম উদাহরণে, আমরা চিন্তার ধারাবাহিকতা নির্দেশক ব্যবহার করেছিলাম, তাই আউটপুটে একটি বিশ্লেষণ এবং একটি রেটিং উভয়ই অন্তর্ভুক্ত ছিল এবং রেটিংটির জন্য আমাদের ম্যানুয়ালি পার্স করতে হবে। এছাড়াও পূর্ববর্তী বিভাগের আউটপুটের অসঙ্গত বিন্যাসটি লক্ষ্য করুন: মডেলটি কখনও কখনও মার্কডাউন আউটপুট দেয়, কিন্তু প্রতিবার নয়।
// Use try/catch to catch (parsing) errors
try {
// Parse the output for a rating
const int = /[1-5]/;
const ratingAsString = llmOutput.match(int)[0];
// Parse as int
const ratingAsInt = parseInt(ratingAsString);
// `checkRating` checks the rating is a number between 1 and 5, since the
// regEx may catch a number like "100"
const finalRating = checkRating(ratingAsInt);
} catch (e) {
console.error('Error', e);
}
মাইন্ড এপিআই পার্থক্য
জেমিনি এপিআই বা ওপেনএআই-এর মতো এলএলএম ক্লাউড এপিআই, যেগুলো সাধারণত বৃহত্তর এলএলএম-এ প্রবেশের পথ হিসেবে কাজ করে, সেগুলো সুবিধাজনক প্রম্পট বৈশিষ্ট্য প্রদান করে। উদাহরণস্বরূপ, জেমিনি ১.৫ প্রো সিস্টেম নির্দেশাবলী এবং JSON মোড প্রদান করে।
বর্তমানে, এই ফিচারগুলো কাস্টম মডেল ব্যবহারের জন্য, অথবা মিডিয়াপাইপ এলএলএম ইনফারেন্স এপিআই বা ট্রান্সফর্মার্স.জেএস -এর মতো ইন-ব্রাউজার এআই এপিআই ব্যবহার করে অ্যাক্সেস করা ছোট এলএলএম-গুলোর জন্য সবসময় উপলব্ধ থাকে না। যদিও এটি আবশ্যিকভাবে কোনো প্রযুক্তিগত সীমাবদ্ধতা নয়, ইন-ব্রাউজার এআই এপিআইগুলো সাধারণত তুলনামূলকভাবে হালকা হয়ে থাকে।
টোকেনের সীমাবদ্ধতা
যেহেতু ছোট আকারের এলএলএম-এর জন্য আপনার নির্দেশনায় উদাহরণ বা আরও বিস্তারিত নির্দেশাবলী অন্তর্ভুক্ত করার প্রয়োজন হয়, তাই এটি সম্ভবত আরও দীর্ঘ হবে এবং আপনার ইনপুট টোকেন সীমার (যদি থাকে) বেশি অংশ ব্যবহার করবে।
এছাড়াও, ছোট মডেলগুলিতে ইনপুট টোকেনের সীমা কম থাকে। উদাহরণস্বরূপ, Gemini 1.5 Pro-তে ১০ লক্ষ ইনপুট টোকেনের সীমা রয়েছে, যেখানে Gemma মডেলগুলিতে ৮কে (8K) কনটেক্সট উইন্ডো রয়েছে।
সীমা অতিক্রম করা এড়াতে টোকেন গণনা ফাংশন ব্যবহার করুন।
আপনার সময়ের অনুমানগুলো পরিবর্তন করুন
আপনার প্রকৌশলগত সময়ের প্রাক্কলনে দ্রুত নকশা ও পরীক্ষার বিষয়টি অন্তর্ভুক্ত করুন।
এপিআই-এর ভিন্নতা এবং টোকেনের সীমাবদ্ধতার কারণে, একটি বড় এলএলএম-এর তুলনায় একটি ছোট এলএলএম-এর জন্য আপনার প্রম্পট তৈরি করতে সম্ভবত বেশি সময় ও শ্রমের প্রয়োজন হবে। এলএলএম-এর আউটপুট পরীক্ষা ও যাচাই করার ক্ষেত্রেও অধিক শ্রমসাধ্য কাজ করতে হতে পারে।
দ্রুত প্রকৌশল বনাম সূক্ষ্ম সমন্বয়?
ওয়েব ডেভেলপারদের জন্য, কাস্টম ট্রেনিং এবং ফাইন-টিউনিং-এর পরিবর্তে জেনারেটিভ এআই কাজে লাগানোর ক্ষেত্রে প্রম্পট ইঞ্জিনিয়ারিং আমাদের পছন্দের উপায়। কিন্তু কিছু কিছু ক্ষেত্রে, বিশেষ করে যদি আপনি একটি ছোট এলএলএম (LLM) ব্যবহার করেন, তাহলে অ্যাডভান্সড প্রম্পট ইঞ্জিনিয়ারিংও যথেষ্ট নাও হতে পারে।
সূক্ষ্ম সমন্বয় ব্যবহার করুন যখন:
- একটি নির্দিষ্ট কাজের জন্য আপনার সর্বোচ্চ মানের নির্ভুলতা এবং কর্মক্ষমতা প্রয়োজন। সর্বোত্তম ফলাফলের জন্য ফাইন টিউনিং সরাসরি মডেলের অভ্যন্তরীণ প্যারামিটারগুলো সমন্বয় করে।
- আপনার কাছে আপনার কাজের জন্য প্রাসঙ্গিক, সুসংগঠিত ডেটা রয়েছে, যা পছন্দসই আউটপুট দিয়ে ইতিমধ্যেই চিহ্নিত করা আছে। কার্যকরভাবে সূক্ষ্ম সমন্বয়ের জন্য আপনার এই ডেটা প্রয়োজন।
- আপনি একই উদ্দেশ্যে মডেলটি বারবার ব্যবহার করেন। সূক্ষ্ম সমন্বয় একবার করে নিয়ে একটি নির্দিষ্ট কাজের জন্য পুনরায় ব্যবহার করা যায়।