بهترین روش ها برای مدیریت جلسه با Prompt API

منتشر شده: ۲۷ ژانویه ۲۰۲۵

توضیح دهنده وب افزونه‌ها وضعیت کروم قصد
گیت‌هاب محاکمه مبدا محاکمه مبدا کروم ۱۳۸ مشاهده قصد آزمایش

یکی از ویژگی‌های کلیدی Prompt API، جلسات (session) است. آن‌ها به شما امکان می‌دهند یک یا چند مکالمه مداوم با مدل هوش مصنوعی داشته باشید، بدون اینکه مدل، زمینه آنچه گفته شده را از دست بدهد. این راهنما بهترین شیوه‌ها را برای مدیریت جلسه با مدل زبانی معرفی می‌کند.

اگر در حال ساخت یک چت‌بات کلاسیک هستید که در آن یک کاربر با هوش مصنوعی تعامل دارد، یا اگر سیستم‌های مدیریت ارتباط با مشتری دارید که در آن یک نماینده پشتیبانی به طور موازی با چندین مشتری سروکار دارد و از هوش مصنوعی برای کمک به نماینده پشتیبانی در پیگیری مکالمات مختلف استفاده می‌کند، ممکن است بخواهید برای یک یا چند جلسه موازی در مدیریت جلسه مشارکت کنید.

جلسات را با یک اعلان اولیه آغاز کنید

یک اعلان اولیه، زمینه جلسه را در ابتدا تنظیم می‌کند. برای مثال، می‌توانید از اعلان اولیه برای بیان نحوه پاسخ مدل استفاده کنید.

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.');

بازیابی یک جلسه گذشته

با ارائه‌ی پیشنهادهای اولیه ، می‌توانید مدل را با مجموعه‌ای از پیشنهادها و پاسخ‌های نمونه آماده کنید تا نتایج بهتری حاصل شود. این روش اغلب در ارائه‌ی پیشنهادهای n-shot استفاده می‌شود تا پاسخ‌هایی ایجاد شود که منعکس‌کننده‌ی انتظارات شما باشند.

اگر مکالمات مداوم با مدل را پیگیری می‌کنید، می‌توانید از این روش برای بازیابی یک جلسه استفاده کنید. به عنوان مثال، پس از راه‌اندازی مجدد مرورگر، می‌توانید به کاربر خود کمک کنید تا از جایی که متوقف شده بود، به تعامل با مدل ادامه دهد. یک رویکرد، پیگیری تاریخچه جلسه در حافظه محلی است.

// 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);
}

با اجازه دادن به کاربر برای توقف مدل، سهمیه جلسه را حفظ کنید

هر جلسه یک پنجره‌ی زمینه دارد که می‌توانید با دسترسی به فیلدهای مربوط به جلسه inputQuota و inputUsage را مشاهده کنید.

const { inputQuota, inputUsage } = languageModel;
const inputQuotaLeft = inputQuota - inputUsage;

وقتی از این پنجره‌ی زمینه تجاوز شود، باعث می‌شود که session ردیابی قدیمی‌ترین پیام‌ها را از دست بدهد. اگر زمینه مهم باشد، این ممکن است منجر به نتایج بدتری شود. برای حفظ سهمیه، اگر کاربری تشخیص دهد که پاسخ مدل مفید نیست، به او اجازه دهید session را با AbortController متوقف کند.

هر دو متد prompt() و promptStreaming() یک پارامتر دوم اختیاری با فیلد signal می‌پذیرند تا به کاربر اجازه دهند session را متوقف کند.

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 مشاهده کنید.

از تمام پتانسیل Prompt API استفاده کنید

با مدیریت هوشمندانه جلسات هوش مصنوعی با استفاده از این تکنیک‌ها و بهترین شیوه‌ها، می‌توانید از پتانسیل کامل Prompt API بهره ببرید و برنامه‌های کارآمدتر، پاسخگوتر و کاربرمحورتری ارائه دهید. همچنین می‌توانید این رویکردها را ترکیب کنید، به عنوان مثال، با اجازه دادن به کاربر برای شبیه‌سازی یک جلسه بازیابی شده قبلی، تا بتواند سناریوهای «چه می‌شد اگر» را اجرا کند.

تقدیرنامه‌ها

این راهنما توسط سباستین بنز ، آندره باندارا ، فرانسوا بوفورت و الکساندرا کلپر بررسی شده است.