প্রম্পট এপিআই সহ AI সেশন পরিচালনার জন্য সেরা অনুশীলন

প্রকাশিত: জানুয়ারী 27, 2025

প্রম্পট API হল অন্তর্নির্মিত AI APIগুলির মধ্যে একটি যা Chrome টিম অন্বেষণ করছে৷ আপনি প্রারম্ভিক প্রিভিউ প্রোগ্রামে যোগদানের মাধ্যমে বা Chrome এক্সটেনশনের জন্য প্রম্পট API অরিজিন ট্রায়ালের জন্য সাইন আপ করে আপনার ক্রোম এক্সটেনশনে উৎপাদনে যোগ দিয়ে স্থানীয়ভাবে এটি পরীক্ষা করতে পারেন। প্রম্পট API-এর একটি মূল বৈশিষ্ট্য হল সেশন। তারা আপনাকে AI মডেলের সাথে এক বা একাধিক চলমান কথোপকথন করতে দেয়, মডেলটি যা বলা হয়েছিল তার প্রেক্ষাপটের ট্র্যাক না হারিয়ে। এই নির্দেশিকা ভাষা মডেলের সাথে সেশন পরিচালনার জন্য সর্বোত্তম অনুশীলনের পরিচয় দেয়।

এক বা একাধিক সমান্তরাল সেশনের জন্য সেশন ম্যানেজমেন্টের ক্ষেত্রে ব্যবহার করা হল, উদাহরণস্বরূপ, ক্লাসিক চ্যাটবট যেখানে একজন ব্যবহারকারী একটি AI এর সাথে ইন্টারঅ্যাক্ট করে, অথবা গ্রাহক সম্পর্ক ব্যবস্থাপনা সিস্টেম যেখানে একজন সাপোর্ট এজেন্ট সমান্তরালভাবে একাধিক গ্রাহকের সাথে লেনদেন করে এবং সহায়তার জন্য AI ব্যবহার করে। এজেন্ট বিভিন্ন কথোপকথন ট্র্যাক রাখা.

একটি সিস্টেম প্রম্পট সহ একটি সেশন শুরু করুন

সচেতন হওয়ার প্রথম ধারণাটি হল সিস্টেম প্রম্পট। এটি শুরুতে একটি সেশনের সামগ্রিক প্রসঙ্গ সেট আপ করে। উদাহরণস্বরূপ, আপনি মডেলটিকে কীভাবে প্রতিক্রিয়া জানাতে হবে তা বলতে সিস্টেম প্রম্পট ব্যবহার করতে পারেন।

// Make this work in web apps and in extensions.
const aiNamespace = self.ai || chrome.aiOriginTrial || chrome.ai;
const languageModel = await aiNamespace.languageModel.create({
  systemPrompt: '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'

একটি প্রধান অধিবেশন ক্লোন করুন

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

// Make this work in web apps and in extensions.
const aiNamespace = self.ai || chrome.aiOriginTrial || chrome.ai;
const languageModel = await aiNamespace.languageModel.create({
  systemPrompt: '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.');

একটি অতীত অধিবেশন পুনরুদ্ধার করুন

শেখার তৃতীয় ধারণা হল প্রাথমিক প্রম্পট ধারণা। এর মূল উদ্দেশ্য হল এটিকে n -shot প্রম্পটিংয়ের জন্য ব্যবহার করা, অর্থাৎ, n উদাহরণের প্রম্পট এবং প্রতিক্রিয়াগুলির একটি সেট সহ মডেলটিকে প্রাইম করার জন্য, তাই প্রকৃত প্রম্পটে এর প্রতিক্রিয়াগুলি আরও সঠিক। আপনি যদি মডেলের সাথে চলমান কথোপকথনের ট্র্যাক রাখেন, আপনি একটি সেশন পুনরুদ্ধার করার জন্য প্রাথমিক প্রম্পট ধারণাটিকে "অপব্যবহার" করতে পারেন, উদাহরণস্বরূপ, একটি ব্রাউজার পুনরায় চালু করার পরে, যাতে ব্যবহারকারীরা যে মডেলটি ছেড়ে দিয়েছিলেন তা চালিয়ে যেতে পারেন৷ নিম্নলিখিত কোড স্নিপেট দেখায় যে আপনি স্থানীয় স্টোরেজে সেশন ইতিহাসের ট্র্যাক রাখবেন বলে ধরে নিয়ে আপনি কীভাবে এটির কাছে যেতে পারেন।

// Make this work in web apps and in extensions.
const aiNamespace = self.ai || chrome.aiOriginTrial || chrome.ai;

// 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) {
  // Get the current default parameters so they can be restored as they were,
  // even if the default values change in the future.
  const { defaultTopK, defaultTemperature } =
    await aiNamespace.languageModel.capabilities();
  sessionData = {
    systemPrompt: '',
    initialPrompts: [],
    topK: defaultTopK,
    temperature: defaultTemperature,
  };
}

// Initialize the session with the (previously stored or new) session data.
const languageModel = await aiNamespace.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);
}

ব্যবহারকারীর উত্তরটি কার্যকর না হলে মডেলটিকে থামাতে দিয়ে সেশন কোটা সংরক্ষণ করুন৷

প্রতিটি সেশনের একটি প্রসঙ্গ উইন্ডো থাকে যা আপনি সেশনের প্রাসঙ্গিক ক্ষেত্র maxTokens , tokensLeft , এবং tokensSoFar অ্যাক্সেস করে দেখতে পারেন।

const { maxTokens, tokensLeft, tokensSoFar } = languageModel;

যখন এই প্রসঙ্গ উইন্ডোটি অতিক্রম করা হয়, এটি সেশনটিকে সবচেয়ে পুরানো বার্তাগুলির ট্র্যাক হারাতে দেয়, যা অবাঞ্ছিত হতে পারে কারণ এই প্রসঙ্গটি গুরুত্বপূর্ণ হতে পারে। কোটা সংরক্ষণ করতে, যদি একটি প্রম্পট জমা দেওয়ার পরে ব্যবহারকারী দেখেন যে একটি উত্তর কার্যকর হবে না, তাহলে 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);
  }
}

ডেমো

এআই সেশন ম্যানেজমেন্টের ডেমোতে এআই সেশন ম্যানেজমেন্ট অ্যাকশনে দেখুন। প্রম্পট API এর সাথে একাধিক সমান্তরাল কথোপকথন তৈরি করুন, ট্যাবটি পুনরায় লোড করুন বা এমনকি আপনার ব্রাউজারটি পুনরায় চালু করুন এবং আপনি যেখানে ছেড়েছিলেন সেখানে চালিয়ে যান। GitHub-এ সোর্স কোড দেখুন।

উপসংহার

এই কৌশলগুলি এবং সর্বোত্তম অনুশীলনগুলির সাথে চিন্তাভাবনা করে AI সেশনগুলি পরিচালনা করে, আপনি আরও দক্ষ, প্রতিক্রিয়াশীল এবং ব্যবহারকারীকেন্দ্রিক অ্যাপ্লিকেশন সরবরাহ করে প্রম্পট API-এর সম্পূর্ণ সম্ভাবনা আনলক করতে পারেন। আপনি এই পদ্ধতিগুলিও একত্রিত করতে পারেন, উদাহরণস্বরূপ, ব্যবহারকারীকে একটি পুনরুদ্ধার করা অতীতের সেশন ক্লোন করার অনুমতি দিয়ে, যাতে তারা "কি হলে" পরিস্থিতি চালাতে পারে। খুশি প্রম্পট!

স্বীকৃতি

সেবাস্টিয়ান বেঞ্জ , আন্দ্রে বান্দারা , ফ্রাঁসোয়া বিউফোর্ট , এবং আলেকজান্দ্রা ক্লেপার এই নির্দেশিকাটি পর্যালোচনা করেছেন।