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

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

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

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

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

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

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

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

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

const session = await LanguageModel.create({
  initialPrompt: [
    {
      type: 'system',
      content: `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() จะแสดงผล iterable แบบไม่พร้อมกัน Prompt API จะตอบกลับด้วยการตอบกลับสตริงแบบเต็ม คุณจึงไม่ต้องรวมผลลัพธ์ด้วยตนเอง ซึ่งแตกต่างจาก WebLLM

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

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 ใหม่เหล่านี้และทำให้เว็บแอปพลิเคชันของคุณฉลาดขึ้น