প্রকাশিত: ২৭ জানুয়ারি, ২০২৫
| ব্যাখ্যাকারী | ওয়েব | এক্সটেনশন | ক্রোম স্ট্যাটাস | উদ্দেশ্য |
|---|---|---|---|---|
| গিটহাব | দেখুন | পরীক্ষা করার অভিপ্রায় | ||
| গিটহাব | দেখুন | পরীক্ষা করার অভিপ্রায় |
প্রম্পট এপিআই- এর একটি প্রধান বৈশিষ্ট্য হলো সেশন। এর মাধ্যমে আপনি এআই মডেলের সাথে এক বা একাধিক চলমান কথোপকথন চালিয়ে যেতে পারেন, এবং এতে মডেলটি বলা কথার প্রেক্ষাপট ভুলে যায় না। এই নির্দেশিকাটি ল্যাঙ্গুয়েজ মডেলের সাথে সেশন ব্যবস্থাপনার সেরা পদ্ধতিগুলো তুলে ধরেছে।
আপনি যদি একটি ক্লাসিক চ্যাটবট তৈরি করেন, যেখানে একজন ব্যবহারকারী এআই-এর সাথে যোগাযোগ করে, তাহলে আপনি এক বা একাধিক সমান্তরাল সেশনের জন্য সেশন ম্যানেজমেন্ট ব্যবহার করতে চাইতে পারেন। অথবা, আপনার যদি এমন কোনো কাস্টমার রিলেশনশিপ ম্যানেজমেন্ট সিস্টেম থাকে যেখানে একজন সাপোর্ট এজেন্ট একই সাথে একাধিক গ্রাহকের কাজ সামলান এবং বিভিন্ন কথোপকথনের হিসাব রাখতে এআই ব্যবহার করেন, তাহলেও এর প্রয়োজন হতে পারে।
প্রাথমিক প্রম্পট দিয়ে সেশন শুরু করুন
একটি প্রাথমিক প্রম্পট সেশনের শুরুতে এর প্রেক্ষাপট তৈরি করে। উদাহরণস্বরূপ, মডেলকে কীভাবে প্রতিক্রিয়া জানাতে হবে তা বলার জন্য আপনি প্রাথমিক প্রম্পটটি ব্যবহার করতে পারেন।
const languageModel = await LanguageModel.create({
initialPrompts: [{
role: 'system',
content: 'You are a helpful assistant and you speak like a pirate.'
}],
});
console.log(await languageModel.prompt('Tell me a joke.'));
// 'Avast ye, matey! What do you call a lazy pirate?\n\nA **sail-bum!**\n\nAhoy
// there, me hearties! Want to hear another one? \n'
একটি প্রধান সেশন ক্লোন করুন
একটি সেশন শেষ হওয়ার পর যদি আপনি নতুন সেশন শুরু করতে চান, অথবা সমান্তরালভাবে একাধিক স্বাধীন কথোপকথন চালাতে চান, তাহলে আপনি মূল সেশনটি ক্লোন করতে পারেন।
ক্লোনটি সম্ভাব্য প্রাথমিক ও সিস্টেম প্রম্পট এবং যেকোনো সেশন ইন্টারঅ্যাকশনের ইতিহাস উত্তরাধিকার সূত্রে পায়। এটি তখন কাজে আসে, যখন উদাহরণস্বরূপ, আপনি একটি প্রাথমিক প্রম্পট দিয়ে মূল সেশনটি শুরু করেন। এইভাবে, আপনার অ্যাপকে এই কাজটি কেবল একবারই করতে হয়—সবগুলো ক্লোনই মূল সেশন থেকে প্রাথমিক প্রম্পটটি উত্তরাধিকার সূত্রে পায়।
const languageModel = await LanguageModel.create({
initialPrompts: [{
role: 'system',
content: 'You are a helpful assistant and you speak like a pirate.'
}]
});
// The original session `languageModel` remains unchanged, and
// the two clones can be interacted with independently from each other.
const firstClonedLanguageModel = await languageModel.clone();
const secondClonedLanguageModel = await languageModel.clone();
// Interact with the sessions independently.
await firstClonedLanguageModel.prompt('Tell me a joke about parrots.');
await secondClonedLanguageModel.prompt('Tell me a joke about treasure troves.');
// Each session keeps its own context.
// The first session's context is jokes about parrots.
await firstClonedLanguageModel.prompt('Tell me another.');
// The second session's context is jokes about treasure troves.
await secondClonedLanguageModel.prompt('Tell me another.');
পূর্ববর্তী সেশন পুনরুদ্ধার করুন
প্রাথমিক প্রম্পটের মাধ্যমে, আপনি আরও ভালো ফলাফল পাওয়ার জন্য কিছু উদাহরণমূলক প্রম্পট ও প্রতিক্রিয়া দিয়ে মডেলটিকে প্রস্তুত করতে পারেন। এটি প্রায়শই এন-শট প্রম্পটিং -এ ব্যবহৃত হয়, যাতে আপনার প্রত্যাশার অনুরূপ প্রতিক্রিয়া তৈরি করা যায়।
আপনি যদি মডেলের সাথে চলমান কথোপকথনের হিসাব রাখেন, তবে সেশন পুনরুদ্ধার করতে এই পদ্ধতিটি ব্যবহার করতে পারেন। উদাহরণস্বরূপ, ব্রাউজার পুনরায় চালু হওয়ার পরে, আপনি আপনার ব্যবহারকারীকে যেখান থেকে তিনি ছেড়ে গিয়েছিলেন সেখান থেকে মডেলের সাথে যুক্ত থাকা চালিয়ে যেতে সাহায্য করতে পারেন। এর একটি উপায় হলো লোকাল স্টোরেজে সেশন হিস্টোরির হিসাব রাখা।
// Restore the session from localStorage, or initialize a new session.
// The UUID is hardcoded here, but would come from a
// session picker in your user interface.
const uuid = '7e62c0e0-6518-4658-bc38-e7a43217df87';
function getSessionData(uuid) {
try {
const storedSession = localStorage.getItem(uuid);
return storedSession ? JSON.parse(storedSession) : false;
} catch {
return false;
}
}
let sessionData = getSessionData(uuid);
// Initialize a new session.
if (!sessionData) {
sessionData = {
initialPrompts: [],
};
}
// Initialize the session with the (previously stored or new) session data.
const languageModel = await LanguageModel.create(sessionData);
// Keep track of the ongoing conversion and store it in localStorage.
const prompt = 'Tell me a joke';
try {
const stream = languageModel.promptStreaming(prompt);
let result = '';
// You can already work with each `chunk`, but then store
// the final `result` in history.
for await (const chunk of stream) {
// In practice, you'd render the chunk.
console.log(chunk);
result = chunk;
}
sessionData.initialPrompts.push(
{ role: 'user', content: prompt },
{ role: 'assistant', content: result },
);
// To avoid growing localStorage infinitely, make sure to delete
// no longer used sessions from time to time.
localStorage.setItem(uuid, JSON.stringify(sessionData));
} catch (err) {
console.error(err.name, err.message);
}
ব্যবহারকারীকে মডেলটি বন্ধ করার সুযোগ দিয়ে সেশন কোটা সংরক্ষণ করুন।
প্রতিটি সেশনের একটি কনটেক্সট উইন্ডো থাকে, যা আপনি সেশনের প্রাসঙ্গিক ফিল্ড contextWindow এবং contextUsage অ্যাক্সেস করে দেখতে পারেন।
const { contextWindow, contextUsage } = languageModel;
const contextWindowLeft = contextWindow - contextUsage;
যখন এই কনটেক্সট উইন্ডো অতিক্রম করা হয়, তখন সেশনটি সবচেয়ে পুরোনো মেসেজগুলোর ট্র্যাক হারিয়ে ফেলে। কনটেক্সটটি গুরুত্বপূর্ণ হলে এর ফলে খারাপ ফলাফল হতে পারে। কোটা সংরক্ষণ করতে, যদি কোনো ব্যবহারকারী মনে করেন যে মডেলের উত্তরটি দরকারি নয়, তবে তাকে AbortController ব্যবহার করে সেশনটি বন্ধ করার অনুমতি দিন।
prompt() এবং ` promptStreaming() উভয় মেথডই একটি ঐচ্ছিক দ্বিতীয় প্যারামিটার গ্রহণ করে, যেটিতে একটি signal ফিল্ড থাকে, যা ব্যবহারকারীকে সেশনটি বন্ধ করার সুযোগ দেয়।
const controller = new AbortController();
stopButton.onclick = () => controller.abort();
try {
const stream = languageModel.promptStreaming('Write me a poem!', {
signal: controller.signal,
});
for await (const chunk of stream) {
console.log(chunk);
}
} catch (err) {
// Ignore `AbortError` errors.
if (err.name !== 'AbortError') {
console.error(err.name, err.message);
}
}
অব্যবহৃত সেশনগুলি মুছে ফেলুন
প্রতিটি সেশন মেমরি ব্যবহার করে। আপনি যদি বেশ কয়েকটি বড় সেশন চালু করে থাকেন, তবে এটি একটি সমস্যা হয়ে দাঁড়াতে পারে। রিসোর্সের প্রাপ্যতা বাড়াতে অব্যবহৃত সেশনগুলো মুছে ফেলুন ।
ডেমো
এআই সেশন ম্যানেজমেন্ট ডেমোতে এর কার্যকারিতা দেখুন। প্রম্পট এপিআই (Prompt API) ব্যবহার করে একাধিক সমান্তরাল কথোপকথন তৈরি করুন, ট্যাবটি রিলোড করুন বা এমনকি আপনার ব্রাউজারটি রিস্টার্ট করুন এবং যেখান থেকে শেষ করেছিলেন সেখান থেকেই আবার শুরু করুন। গিটহাবে (GitHub) সোর্স কোডটি দেখুন।
প্রম্পট এপিআই-এর সম্পূর্ণ সম্ভাবনা উন্মোচন করুন
এই কৌশল ও সেরা অনুশীলনগুলো ব্যবহার করে বিচক্ষণতার সাথে এআই সেশনগুলো পরিচালনা করার মাধ্যমে, আপনি প্রম্পট এপিআই-এর সম্পূর্ণ সম্ভাবনাকে কাজে লাগিয়ে আরও কার্যকর, দ্রুত সাড়াদানকারী এবং ব্যবহারকারী-কেন্দ্রিক অ্যাপ্লিকেশন তৈরি করতে পারেন। আপনি এই পদ্ধতিগুলোকে একত্রিতও করতে পারেন, যেমন—ব্যবহারকারীকে পুনরুদ্ধার করা অতীতের কোনো সেশন ক্লোন করার সুযোগ দিয়ে, যাতে তারা বিভিন্ন "কী হবে যদি" পরিস্থিতি পরীক্ষা করে দেখতে পারে।
কৃতজ্ঞতা স্বীকার
এই গাইডটি পর্যালোচনা করেছেন সেবাস্তিয়ান বেঞ্জ , আন্দ্রে বান্দারা , ফ্রাঁসোয়া বোফোর্ট এবং আলেকজান্দ্রা ক্লেপার ।