เผยแพร่: 27 มกราคม 2025
คำอธิบาย | เว็บ | ส่วนขยาย | สถานะของ Chrome | ความตั้งใจ |
---|---|---|---|---|
GitHub | ดู | ความตั้งใจที่จะทดลอง |
ฟีเจอร์หลักอย่างหนึ่งของ Prompt API คือเซสชัน ซึ่งช่วยให้คุณสนทนากับโมเดล AI ได้อย่างต่อเนื่อง 1 รายการหรือหลายรายการ โดยที่โมเดลจะไม่ลืมบริบทของสิ่งที่พูด คู่มือนี้ จะแนะนำแนวทางปฏิบัติแนะนำสำหรับการจัดการเซสชันด้วยโมเดลภาษา
คุณอาจต้องมีส่วนร่วมในการจัดการเซสชันสำหรับเซสชันแบบขนานอย่างน้อย 1 เซสชัน หากคุณกำลังสร้างแชทบอทแบบคลาสสิกที่ผู้ใช้โต้ตอบกับ AI หรือหากคุณมีระบบการจัดการความสัมพันธ์กับลูกค้า (CRM) ที่ตัวแทนฝ่ายสนับสนุน 1 คน ดูแลลูกค้าหลายรายพร้อมกันและใช้ประโยชน์จาก AI เพื่อช่วย ตัวแทนฝ่ายสนับสนุนติดตามการสนทนาต่างๆ
เริ่มต้นเซสชันด้วยพรอมต์เริ่มต้น
พรอมต์เริ่มต้นจะตั้งค่าบริบทของเซสชันเมื่อเริ่มต้น ตัวอย่างเช่น คุณสามารถใช้พรอมต์เริ่มต้นเพื่อบอกโมเดลว่าควรตอบอย่างไร
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-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) {
// 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()
ยอมรับพารามิเตอร์ที่ 2 ที่ไม่บังคับซึ่งมีฟิลด์ 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);
}
}
นำเซสชันที่ไม่ได้ใช้ออก
แต่ละเซสชันจะใช้หน่วยความจำ หากคุณเริ่มเซสชันขนาดใหญ่หลายเซสชัน ปัญหานี้อาจเกิดขึ้นได้ ลบเซสชันที่ไม่ได้ใช้เพื่อเพิ่ม ความพร้อมใช้งานของทรัพยากร
สาธิต
ดูการจัดการเซสชัน AI ในการดำเนินการได้ในการสาธิตการจัดการเซสชัน AI สร้างการสนทนาแบบขนานหลายรายการด้วย Prompt API โหลดแท็บซ้ำ หรือแม้แต่รีสตาร์ทเบราว์เซอร์ แล้วสนทนาต่อจากที่ค้างไว้ ดูซอร์สโค้ดใน GitHub
ปลดล็อกศักยภาพของ Prompt API อย่างเต็มรูปแบบ
การจัดการเซสชัน AI อย่างรอบคอบด้วยเทคนิคและแนวทางปฏิบัติแนะนำเหล่านี้ จะช่วยให้คุณปลดล็อกศักยภาพสูงสุดของ Prompt API เพื่อสร้างแอปพลิเคชันที่มีประสิทธิภาพมากขึ้น ตอบสนองได้ดี และมุ่งเน้นผู้ใช้เป็นหลัก คุณยังรวมแนวทางเหล่านี้ได้ด้วย เช่น อนุญาตให้ผู้ใช้โคลนเซสชันที่กู้คืนในอดีต เพื่อให้ผู้ใช้เรียกใช้สถานการณ์ "จะเกิดอะไรขึ้น" ได้
การรับทราบ
คู่มือนี้ได้รับการตรวจสอบโดย Sebastian Benz Andre Bandarra François Beaufort และ Alexandra Klepper