पब्लिश होने की तारीख: 27 जनवरी, 2025
ज़्यादा जानकारी देने वाला वीडियो | वेब | एक्सटेंशन | Chrome स्टेटस | मकसद |
---|---|---|---|---|
GitHub | देखें | Intent to Experiment |
Prompt API की एक मुख्य सुविधा सेशन है. इनसे एआई मॉडल के साथ एक या एक से ज़्यादा बातचीत जारी रखी जा सकती है. साथ ही, मॉडल को यह भी पता चलता रहता है कि किस बारे में बात हो रही है. इस गाइड में, भाषा मॉडल के साथ सेशन मैनेज करने के सबसे सही तरीकों के बारे में बताया गया है.
अगर आपको क्लासिक चैटबॉट बनाना है, तो एक या उससे ज़्यादा पैरलल सेशन के लिए सेशन मैनेजमेंट में शामिल हों. इसमें एक उपयोगकर्ता, एआई से इंटरैक्ट करता है. इसके अलावा, अगर आपके पास ग्राहक संबंध मैनेजमेंट सिस्टम है, तो एक सहायता एजेंट एक साथ कई ग्राहकों की समस्याओं को हल कर सकता है. साथ ही, एआई का इस्तेमाल करके, सहायता एजेंट को अलग-अलग बातचीत को ट्रैक करने में मदद मिल सकती है.
शुरुआती प्रॉम्प्ट के साथ सेशन शुरू करना
शुरुआती प्रॉम्प्ट से, सेशन की शुरुआत में कॉन्टेक्स्ट सेट अप किया जाता है. उदाहरण के लिए, शुरुआती प्रॉम्प्ट का इस्तेमाल करके मॉडल को यह बताया जा सकता है कि उसे किस तरह जवाब देना चाहिए.
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'
मुख्य सेशन की नकल बनाना
अगर आपको किसी सेशन के खत्म होने के बाद नया सेशन शुरू करना है या आपको एक साथ कई अलग-अलग बातचीत करनी हैं, तो मुख्य सेशन को क्लोन किया जा सकता है.
क्लोन किए गए ऑब्जेक्ट को सेशन के पैरामीटर मिलते हैं. जैसे, temperature
या topK
. साथ ही, उसे सेशन के इंटरैक्शन का इतिहास भी मिलता है. यह तब काम आता है, जब आपने किसी शुरुआती प्रॉम्प्ट के साथ मुख्य सेशन शुरू किया हो. इस तरह, आपके ऐप्लिकेशन को यह काम सिर्फ़ एक बार करना होगा. सभी क्लोन, मुख्य सेशन से शुरुआती प्रॉम्प्ट को इनहेरिट करते हैं.
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-शॉट प्रॉम्प्टिंग में किया जाता है, ताकि आपकी उम्मीदों के मुताबिक जवाब तैयार किए जा सकें.
अगर आपको मॉडल के साथ चल रही बातचीत का ट्रैक रखना है, तो इस तरीके का इस्तेमाल करके सेशन को वापस लाया जा सकता है. उदाहरण के लिए, ब्राउज़र के फिर से चालू होने के बाद, अपने उपयोगकर्ता की मदद करें, ताकि वह मॉडल के साथ उसी जगह से इंटरैक्ट करना जारी रख सके जहां उसने छोड़ा था. इसके लिए, सेशन के इतिहास को लोकल स्टोरेज में ट्रैक किया जा सकता है.
// 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 LanguageModel.params();
sessionData = {
initialPrompts: [],
topK: defaultTopK,
temperature: defaultTemperature,
};
}
// 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;
कॉन्टेक्स्ट विंडो की सीमा से ज़्यादा जानकारी देने पर, सेशन में सबसे पुराने मैसेज ट्रैक नहीं किए जा सकते. अगर संदर्भ देना ज़रूरी था, तो इससे नतीजे खराब हो सकते हैं.
कोटा बनाए रखने के लिए, अगर कोई उपयोगकर्ता यह तय करता है कि मॉडल का जवाब काम का नहीं है, तो उसे 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 पर सोर्स कोड देखें.
Prompt API की सभी सुविधाओं को ऐक्सेस करना
इन तकनीकों और सबसे सही तरीकों का इस्तेमाल करके, एआई सेशन को बेहतर तरीके से मैनेज किया जा सकता है. इससे Prompt API की पूरी क्षमता का इस्तेमाल किया जा सकता है. साथ ही, ज़्यादा असरदार, तेज़ी से जवाब देने वाले, और उपयोगकर्ता के हिसाब से ऐप्लिकेशन बनाए जा सकते हैं. इन दोनों तरीकों को एक साथ भी इस्तेमाल किया जा सकता है. उदाहरण के लिए, उपयोगकर्ता को पिछले सेशन को क्लोन करने की अनुमति देकर, "क्या होगा अगर" वाले परिदृश्य चलाए जा सकते हैं.
Acknowledgements
इस गाइड की समीक्षा सेबैस्टियन बेंज, आंद्रे बंदारा, फ़्रांस्वा बोफ़ोर्ट, और ऐलेक्ज़ेंड्रा क्लेपर ने की है.