สร้างแชทบ็อตที่ทำงานแบบออฟไลน์และในเครื่องได้ด้วย Prompt API

เผยแพร่เมื่อวันที่ 13 มกราคม 2024

บทความนี้เป็นบทความสุดท้ายในชุดบทความ 3 บทความเกี่ยวกับแชทบ็อต LLM บทความก่อนหน้านี้ได้กล่าวถึงความสามารถของ LLM ฝั่งไคลเอ็นต์และแนะนำวิธีเพิ่มแชทบ็อตที่ทำงานด้วย WebLLM ลงในแอปพลิเคชันสิ่งที่ต้องทํา

อุปกรณ์รุ่นใหม่บางรุ่นมาพร้อมกับโมเดลภาษาขนาดใหญ่และโมเดล AI อื่นๆ ในอุปกรณ์เลย Chrome ได้เสนอการผสานรวม API ของ AI ที่มาพร้อมกับเบราว์เซอร์ โดยมีAPI จํานวนหนึ่งอยู่ในขั้นตอนการพัฒนาที่แตกต่างกัน API เหล่านี้จำนวนมากกำลังอยู่ระหว่างกระบวนการมาตรฐาน เพื่อให้เว็บไซต์ใช้การติดตั้งใช้งานและรูปแบบเดียวกันเพื่อให้ได้ประสิทธิภาพการอนุมานสูงสุด

Prompt API คือหนึ่งใน AI API ดังกล่าว หากต้องการใช้ฟีเจอร์นี้ เราขอแนะนำให้นักพัฒนาแอปลงชื่อสมัครเข้าร่วมโปรแกรมตัวอย่างก่อนเปิดตัว เมื่อยอมรับแล้ว คุณจะได้รับวิธีการเปิดใช้ Prompt API ในเบราว์เซอร์ Prompt API มีให้บริการในช่วงทดลองใช้จากต้นทางสำหรับส่วนขยาย Chrome เพื่อให้คุณทดสอบ API นี้กับผู้ใช้ส่วนขยายจริงได้

การเข้าถึงโมเดลที่แชร์

Prompt API ทํางานคล้ายกับ WebLLM อย่างไรก็ตาม จะไม่มีการเลือกรูปแบบในตอนนี้ (คุณต้องใช้ LLM ที่มาพร้อมกับเบราว์เซอร์) เมื่อเปิดใช้ AI ที่มาพร้อมกับ Chrome ทาง Chrome จะดาวน์โหลด Gemini Nano ลงในเบราว์เซอร์ จากนั้นจึงแชร์โมเดลนี้ในหลายๆ ต้นทางและทํางานได้อย่างมีประสิทธิภาพสูงสุด มีปัญหา GitHub ที่นักพัฒนาแอปได้ส่งคำขอเพิ่มฟีเจอร์การเลือกโมเดล

ตั้งค่าการสนทนา

คุณเริ่มการสนทนาด้วยข้อความได้โดยใช้วิธีเดียวกัน แต่ Prompt API ยังมีไวยากรณ์แบบย่อเพื่อระบุพรอมต์ของระบบด้วย เริ่มเซสชันโมเดลภาษาโดยใช้เมธอด create() ในพร็อพเพอร์ตี้ self.ai.languageModel ดังนี้

const session = await self.ai.languageModel.create({
  systemPrompt: `You are a helpful assistant. You will answer questions related
  to the user's to-do list. Decline all other requests not related to the user's
  todos. This is the to-do list in JSON: ${JSON.stringify(todos)}`,
});

ตอบคำถามแรก

Prompt API มี 2 วิธีแยกกันแทนที่จะมีออบเจ็กต์การกําหนดค่าสําหรับกําหนดค่าการสตรีม

  • prompt() แสดงผลสตริงแบบเต็ม
  • promptStreaming() จะแสดงผลรายการที่วนซ้ำแบบไม่พร้อมกัน ซึ่งต่างจาก WebLLM ที่ Prompt API จะตอบกลับด้วยสตริงการตอบกลับแบบเต็ม คุณจึงไม่ต้องรวมผลลัพธ์ด้วยตนเอง

หากไม่มีต้นทางอื่นเรียกให้ดาวน์โหลดโมเดลมาก่อน คำขอแรกของคุณอาจใช้เวลานานมากขณะที่ระบบดาวน์โหลด Gemini Nano ลงในเบราว์เซอร์ หากมีโมเดลอยู่แล้ว การอนุมานจะเริ่มขึ้นทันที

const stream = session.promptStreaming("How many open todos do I have?");
for await (const reply of stream) {
  console.log(reply);
}

สาธิต

สรุป

การผสานรวม LLM เข้ากับแอปพลิเคชันจะช่วยปรับปรุงประสบการณ์ของผู้ใช้ได้อย่างมาก แม้ว่าบริการระบบคลาวด์จะมีโมเดลที่มีคุณภาพสูงขึ้นและประสิทธิภาพการอนุมานสูง ไม่ว่าอุปกรณ์ของผู้ใช้จะเป็นรุ่นใดก็ตาม แต่โซลูชันในอุปกรณ์ เช่น WebLLM และ Prompt API ของ Chrome จะใช้ได้แบบออฟไลน์ ปรับปรุงความเป็นส่วนตัว และประหยัดค่าใช้จ่ายได้เมื่อเทียบกับโซลูชันอื่นๆ ที่ใช้ระบบคลาวด์ ลองใช้ API ใหม่เหล่านี้และทําให้เว็บแอปพลิเคชันของคุณฉลาดขึ้น