สร้างเว็บแอปที่ทำงานด้วยระบบ AI ด้วย Firebase Extensions สำหรับ Gemini API

1. ก่อนเริ่มต้น

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

ในโค้ดแล็บนี้ คุณจะได้เรียนรู้วิธีสร้างเว็บแอปที่ทำงานด้วยระบบ AI ซึ่งมอบประสบการณ์การใช้งานที่น่าสนใจด้วยส่วนขยาย Firebase

ข้อกำหนดเบื้องต้น

  • มีความรู้เกี่ยวกับ Node.js, Next.js และ TypeScript

สิ่งที่คุณจะได้เรียนรู้

  • วิธีใช้ Firebase Extensions สำหรับ Gemini API เพื่อประมวลผลภาษา
  • วิธีใช้ Cloud Functions for Firebase เพื่อเขียนบริบทเสริมสำหรับโมเดลภาษา
  • วิธีใช้ JavaScript เพื่อเข้าถึงเอาต์พุตที่สร้างโดย Firebase Extensions

สิ่งที่ต้องมี

  • เบราว์เซอร์ที่คุณเลือก เช่น Google Chrome
  • สภาพแวดล้อมในการพัฒนาที่มีเครื่องมือแก้ไขโค้ดและเทอร์มินัล
  • บัญชี Google สำหรับการสร้างและการจัดการโปรเจ็กต์ Firebase

2. ตรวจสอบเว็บแอป บริการ Firebase และส่วนขยาย

ในส่วนนี้ คุณจะได้ตรวจสอบเว็บแอปที่จะสร้างด้วยโค้ดแล็บนี้ รวมถึงเรียนรู้เกี่ยวกับบริการ Firebase และส่วนขยาย Firebase ที่จะใช้

เว็บแอป

ใน Codelab นี้ คุณจะได้สร้างเว็บแอปชื่อ Friendly Conf

เจ้าหน้าที่ของ Friendly Conference ตัดสินใจใช้ AI เพื่อสร้างประสบการณ์ของผู้ใช้ที่น่าพึงพอใจและปรับเปลี่ยนในแบบของคุณสำหรับผู้เข้าร่วม แอปการประชุมที่เสร็จสมบูรณ์แล้วจะมอบแชทบ็อต AI แบบสนทนาแก่ผู้เข้าร่วม ซึ่งขับเคลื่อนโดยโมเดล Generative AI แบบมัลติโมดัล (หรือที่เรียกว่าโมเดลภาษาขนาดใหญ่หรือ LLM) และสามารถตอบคำถามเกี่ยวกับหัวข้อทั่วไปที่ปรับให้เหมาะกับกำหนดการและหัวข้อของการประชุมได้ แชทบ็อตมีบริบทในอดีตและความรู้เกี่ยวกับวันที่/เวลาปัจจุบัน รวมถึงหัวข้อและกำหนดการของ Friendly Conf ดังนั้นคำตอบของแชทบ็อตจึงพิจารณาบริบททั้งหมดนี้ได้

5364a56a230ff075.png

บริการของ Firebase

ในโค้ดแล็บนี้ คุณจะได้ใช้บริการและฟีเจอร์ต่างๆ ของ Firebase มากมาย และเราได้เตรียมโค้ดเริ่มต้นส่วนใหญ่ไว้ให้คุณแล้ว ตารางต่อไปนี้แสดงบริการที่คุณจะใช้และเหตุผลในการใช้บริการเหล่านั้น

บริการ

เหตุผลในการใช้งาน

การตรวจสอบสิทธิ์ Firebase

คุณใช้ฟังก์ชันการลงชื่อเข้าใช้ด้วย Google สำหรับเว็บแอป

Cloud Firestore

คุณจัดเก็บข้อมูลข้อความใน Cloud Firestore ซึ่งส่วนขยาย Firebase จะประมวลผลข้อมูลนั้น

Cloud Storage for Firebase

คุณอ่านและเขียนจาก Cloud Storage เพื่อแสดงแกลเลอรีรูปภาพภายในเว็บแอป

กฎการรักษาความปลอดภัยของ Firebase

คุณจะนำกฎความปลอดภัยไปใช้เพื่อช่วยรักษาความปลอดภัยในการเข้าถึงบริการ Firebase

Firebase Extensions

คุณกำหนดค่าและติดตั้ง Firebase Extensions ที่เกี่ยวข้องกับ AI และแสดงผลลัพธ์ภายในเว็บแอป

โบนัส: Firebase Hosting

คุณเลือกใช้โฮสติ้งของ Firebase เพื่อแสดงเว็บแอป (โดยไม่มีที่เก็บ GitHub) ได้

โบนัส: Firebase App Hosting

คุณเลือกใช้ Firebase App Hosting ที่ปรับปรุงใหม่เพื่อแสดงเว็บแอป Next.js แบบไดนามิก (เชื่อมต่อกับที่เก็บ GitHub) ได้

Firebase Extensions

ส่วนขยาย Firebase ที่คุณจะใช้ในโค้ดแล็บนี้ ได้แก่

ส่วนขยายมีประโยชน์เนื่องจากจะตอบสนองต่อเหตุการณ์ที่เกิดขึ้นในโปรเจ็กต์ Firebase ส่วนขยายทั้ง 2 รายการที่ใช้ในโค้ดแล็บนี้จะตอบสนองเมื่อคุณสร้างเอกสารใหม่ในคอลเล็กชันที่กำหนดค่าไว้ล่วงหน้าใน Cloud Firestore

3. ตั้งค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์

ยืนยันเวอร์ชัน Node.js

  1. ในเทอร์มินัล ให้ตรวจสอบว่าคุณได้ติดตั้ง Node.js เวอร์ชัน 20.0.0 ขึ้นไปแล้ว
    node -v
    
  2. หากคุณไม่มี Node.js เวอร์ชัน 20.0.0 ขึ้นไป ให้ดาวน์โหลดเวอร์ชัน LTS ล่าสุดและติดตั้ง

ดูซอร์สโค้ดสำหรับ Codelab

หากคุณมีบัญชี GitHub ให้ทำดังนี้

  1. สร้างที่เก็บใหม่โดยใช้เทมเพลตจาก github.com/FirebaseExtended/codelab-gemini-api-extensions65ef006167d600ab.png
  2. โคลนที่เก็บ GitHub ของ Codelab ที่คุณเพิ่งสร้าง
    git clone https://github.com/<your-github-handle>/codelab-gemini-api-extensions
    

หากไม่ได้ติดตั้ง Git หรือไม่ต้องการสร้างที่เก็บใหม่ ให้ทำดังนี้

ดาวน์โหลดที่เก็บ GitHub เป็นไฟล์ ZIP

ตรวจสอบโครงสร้างโฟลเดอร์

โฟลเดอร์รูทมีไฟล์ README.md ซึ่งช่วยให้เริ่มต้นเรียกใช้เว็บแอปได้อย่างรวดเร็วโดยใช้คำสั่งที่ปรับปรุงแล้ว อย่างไรก็ตาม หากคุณเป็นผู้เรียนครั้งแรก คุณควรทำ Codelab นี้ (แทนที่จะเป็นคู่มือเริ่มต้นฉบับย่อ) เนื่องจาก Codelab นี้มีชุดวิธีการที่ครอบคลุมมากที่สุด

หากไม่แน่ใจว่าได้ใช้โค้ดอย่างถูกต้องตามที่ระบุไว้ใน Codelab นี้หรือไม่ คุณสามารถดูโค้ดโซลูชันได้ในendกิ่ง git

ติดตั้ง Firebase CLI

  1. ตรวจสอบว่าคุณได้ติดตั้ง Firebase CLI และเป็นเวอร์ชัน 13.6 ขึ้นไป
    firebase --version
    
  2. หากคุณติดตั้ง Firebase CLI ไว้แล้ว แต่ไม่ใช่เวอร์ชัน 13.6 ขึ้นไป ให้อัปเดตโดยทำดังนี้
    npm update -g firebase-tools
    
  3. หากยังไม่ได้ติดตั้ง Firebase CLI ให้ติดตั้งโดยทำดังนี้
    npm install -g firebase-tools
    

หากอัปเดตหรือติดตั้ง Firebase CLI ไม่ได้เนื่องจากข้อผิดพลาดเกี่ยวกับสิทธิ์ โปรดดูเอกสารประกอบของ npm หรือใช้ตัวเลือกการติดตั้งอื่น

เข้าสู่ระบบ Firebase

  1. ในเทอร์มินัล ให้ไปที่โฟลเดอร์ codelab-gemini-api-extensions แล้วเข้าสู่ระบบ Firebase โดยทำดังนี้
    cd codelab-gemini-api-extensions
    firebase login
    
    หากเทอร์มินัลระบุว่าคุณเข้าสู่ระบบ Firebase แล้ว ให้ข้ามไปที่ส่วนตั้งค่าโปรเจ็กต์ Firebase ของ Codelab นี้
  2. ในเทอร์มินัล ให้ป้อน Y หรือ N ขึ้นอยู่กับว่าคุณต้องการให้ Firebase รวบรวมข้อมูลหรือไม่ (ตัวเลือกใดก็ได้สำหรับ Codelab นี้)
  3. ในเบราว์เซอร์ ให้เลือกบัญชี Google แล้วคลิกอนุญาต

4. ตั้งค่าโปรเจ็กต์ Firebase

ในส่วนนี้ คุณจะตั้งค่าโปรเจ็กต์ Firebase และลงทะเบียน Firebase Web App ในโปรเจ็กต์ นอกจากนี้ คุณยังจะเปิดใช้บริการ Firebase บางอย่างที่เว็บแอปตัวอย่างใช้ในภายหลังใน Codelab นี้ด้วย

ขั้นตอนทั้งหมดในส่วนนี้จะดำเนินการในคอนโซล Firebase

สร้างโปรเจ็กต์ Firebase

  1. ลงชื่อเข้าใช้คอนโซล Firebase โดยใช้บัญชี Google เดียวกับที่คุณใช้ในขั้นตอนก่อนหน้า
  2. คลิกปุ่มเพื่อสร้างโปรเจ็กต์ใหม่ แล้วป้อนชื่อโปรเจ็กต์ (เช่น AI Extensions Codelab)
  3. คลิกต่อไป
  4. หากได้รับแจ้ง ให้อ่านและยอมรับข้อกำหนดของ Firebase แล้วคลิกต่อไป
  5. (ไม่บังคับ) เปิดใช้ความช่วยเหลือจาก AI ในคอนโซล Firebase (เรียกว่า "Gemini ใน Firebase")
  6. สำหรับ Codelab นี้ คุณไม่จำเป็นต้องใช้ Google Analytics ดังนั้นให้ปิดตัวเลือก Google Analytics
  7. คลิกสร้างโปรเจ็กต์ รอให้ระบบจัดสรรโปรเจ็กต์ แล้วคลิกดำเนินการต่อ

อัปเกรดแพ็กเกจราคาของ Firebase

หากต้องการใช้ Firebase Extensions (และบริการระบบคลาวด์ที่เกี่ยวข้อง) รวมถึง Cloud Storage สำหรับ Firebase โปรเจ็กต์ Firebase ของคุณต้องอยู่ในแพ็กเกจราคาแบบจ่ายเมื่อใช้ (Blaze) ซึ่งหมายความว่าโปรเจ็กต์ต้องลิงก์กับบัญชีการเรียกเก็บเงินในระบบคลาวด์

โปรดทราบว่าเมื่อเปิดใช้การเรียกเก็บเงินในโปรเจ็กต์ Firebase ระบบจะเรียกเก็บเงินสำหรับการเรียกที่ส่วนขยายทำกับ Gemini API (ไม่ว่าคุณจะเลือกผู้ให้บริการรายใดก็ตาม ไม่ว่าจะเป็น Google AI หรือ Vertex AI) ดูข้อมูลเพิ่มเติมเกี่ยวกับราคาสำหรับ Google AI และสำหรับ Vertex AI

หากต้องการอัปเกรดโปรเจ็กต์เป็นแพ็กเกจ Blaze ให้ทำตามขั้นตอนต่อไปนี้

  1. ในคอนโซล Firebase ให้เลือกอัปเกรดแพ็กเกจ
  2. เลือกแพ็กเกจ Blaze ทำตามวิธีการบนหน้าจอเพื่อลิงก์บัญชีสำหรับการเรียกเก็บเงินใน Cloud กับโปรเจ็กต์
    หากคุณต้องสร้างบัญชีสำหรับการเรียกเก็บเงินใน Cloud เป็นส่วนหนึ่งของการอัปเกรดนี้ คุณอาจต้องกลับไปที่ขั้นตอนการอัปเกรดใน Firebase Console เพื่อทำการอัปเกรดให้เสร็จสมบูรณ์

เพิ่มเว็บแอปไปยังโปรเจ็กต์ Firebase

  1. ไปที่หน้าจอภาพรวมโปรเจ็กต์ในโปรเจ็กต์ Firebase แล้วคลิก af10a034ec77938d.pngWebปุ่มเว็บที่ด้านบนของโปรเจ็กต์ Firebase
  2. ในกล่องข้อความชื่อเล่นของแอป ให้ป้อนชื่อเล่นของแอปที่จำง่าย เช่น My AI Extensions
  3. คลิกลงทะเบียนแอป > ถัดไป > ถัดไป > ไปที่คอนโซล
    คุณข้ามขั้นตอนทั้งหมดที่เกี่ยวข้องกับ "การโฮสต์" ในขั้นตอนของเว็บแอปได้ เนื่องจากคุณจะตั้งค่าบริการโฮสติ้งในภายหลังใน Codelab นี้ (ไม่บังคับ)

เว็บแอปที่สร้างขึ้นในโปรเจ็กต์ Firebase

เยี่ยมเลย ตอนนี้คุณได้ลงทะเบียนเว็บแอปในโปรเจ็กต์ Firebase ใหม่แล้ว

ตั้งค่าการตรวจสอบสิทธิ์ Firebase

  1. ไปที่การตรวจสอบสิทธิ์โดยใช้แผงการนำทางด้านซ้าย
  2. คลิกเริ่มต้นใช้งาน
  3. ในคอลัมน์ผู้ให้บริการเพิ่มเติม ให้คลิก Google > เปิดใช้232b8f0336c25585.png
  4. ในกล่องข้อความชื่อที่เปิดเผยต่อสาธารณะสำหรับโปรเจ็กต์ ให้ป้อนชื่อที่มีประโยชน์ เช่น My AI Extensions Codelab
  5. เลือกอีเมลของคุณในเมนูอีเมลสนับสนุนสำหรับโปรเจ็กต์
  6. คลิกบันทึก

37e54f32f8133be3.png

ตั้งค่า Cloud Firestore

  1. ในแผงด้านซ้ายของคอนโซล Firebase ให้ขยายสร้าง แล้วเลือกฐานข้อมูล Firestore
  2. คลิกสร้างฐานข้อมูล
  3. ตั้งค่ารหัสฐานข้อมูลเป็น (default) ไว้ดังเดิม
  4. เลือกตำแหน่งสำหรับฐานข้อมูล แล้วคลิกถัดไป
    สำหรับแอปจริง คุณควรเลือกตำแหน่งที่อยู่ใกล้กับผู้ใช้
  5. คลิกเริ่มในโหมดทดสอบ อ่านข้อจำกัดความรับผิดเกี่ยวกับกฎความปลอดภัย
    ในภายหลังใน Codelab นี้ คุณจะเพิ่มกฎความปลอดภัยเพื่อรักษาความปลอดภัยของข้อมูล อย่าเผยแพร่หรือเปิดเผยแอปต่อสาธารณะโดยไม่ได้เพิ่มกฎความปลอดภัยสำหรับฐานข้อมูล
  6. คลิกสร้าง

ตั้งค่า Cloud Storage for Firebase

  1. ในแผงด้านซ้ายของคอนโซล Firebase ให้ขยายสร้าง แล้วเลือก Storage
  2. คลิกเริ่มต้นใช้งาน
  3. เลือกตำแหน่งสำหรับที่เก็บข้อมูลเริ่มต้น
    ที่เก็บข้อมูลใน US-WEST1, US-CENTRAL1 และ US-EAST1 จะใช้ประโยชน์จากระดับ"ใช้งานฟรีเสมอ" สำหรับ Google Cloud Storage ได้ ที่เก็บข้อมูลในตำแหน่งอื่นๆ ทั้งหมดจะเป็นไปตามราคาและการใช้งาน Google Cloud Storage
  4. คลิกเริ่มในโหมดทดสอบ อ่านข้อจำกัดความรับผิดเกี่ยวกับกฎความปลอดภัย
    ในภายหลังใน Codelab นี้ คุณจะเพิ่มกฎความปลอดภัยเพื่อรักษาความปลอดภัยของข้อมูล อย่าเผยแพร่หรือแสดงแอปต่อสาธารณะโดยไม่ได้เพิ่มกฎความปลอดภัยสำหรับที่เก็บข้อมูล
  5. คลิกสร้าง

ในส่วนถัดไปของโค้ดแล็บนี้ คุณจะได้ติดตั้งและกำหนดค่าส่วนขยาย Firebase 2 รายการที่จะใช้ในเว็บแอปตลอดโค้ดแล็บนี้

5. ตั้งค่าส่วนขยาย "สร้างแชทบอทด้วย Gemini API"

ติดตั้งส่วนขยาย "สร้างแชทบอทด้วย Gemini API"

  1. ไปที่ส่วนขยาย "สร้างแชทบ็อตด้วย Gemini API"
  2. คลิกติดตั้งในคอนโซล Firebase
  3. เลือกโปรเจ็กต์ Firebase แล้วคลิกถัดไป
  4. ในส่วนตรวจสอบว่าเปิดใช้ API และสร้างทรัพยากรแล้ว ให้คลิกเปิดใช้ข้างบริการที่ระบบแนะนำ แล้วคลิกถัดไป8e58e717da8182a2.png
  5. สำหรับสิทธิ์ที่ระบบแนะนำ ให้เลือกให้สิทธิ์ แล้วคลิกถัดไป269e1c3c4123425c.png
  6. วิธีกําหนดค่าส่วนขยาย
    1. ในเมนูผู้ให้บริการ Gemini API ให้เลือกว่าต้องการใช้ Gemini API จาก AI ของ Google หรือ Vertex AI สำหรับนักพัฒนาแอปที่ใช้ Firebase เราขอแนะนำให้ใช้ Vertex AI
    2. ในกล่องข้อความเส้นทางคอลเล็กชัน Firestore ให้ป้อน users/{uid}/messages
      ในขั้นตอนถัดไปของโค้ดแล็บนี้ การเพิ่มเอกสารลงในคอลเล็กชันนี้จะทริกเกอร์ส่วนขยายให้เรียกใช้ Gemini API
    3. ในเมนูตำแหน่ง Cloud Functions ให้เลือกตำแหน่งที่ต้องการ (เช่น Iowa (us-central1) หรือตำแหน่งที่คุณระบุไว้ก่อนหน้านี้สำหรับฐานข้อมูล Firestore)
    4. ปล่อยให้ค่าอื่นๆ ทั้งหมดเป็นค่าเริ่มต้น
  7. คลิกติดตั้งส่วนขยาย แล้วรอให้ระบบติดตั้งส่วนขยาย

ลองใช้ส่วนขยาย "สร้างแชทบอทด้วย Gemini API"

แม้ว่าเป้าหมายของ Codelab นี้คือการโต้ตอบกับส่วนขยาย "สร้างแชทบอทด้วย Gemini API" ผ่านเว็บแอป แต่การเรียนรู้วิธีการทำงานของส่วนขยายโดยลองใช้ใน Firebase Console ก่อนก็เป็นประโยชน์เช่นกัน

ส่วนขยายจะทริกเกอร์เมื่อใดก็ตามที่มีการสร้างเอกสาร Firestore ภายใต้คอลเล็กชัน users/{uid}/discussion/{discussionId}/messages ซึ่งคุณสามารถทำได้ในคอนโซล Firebase

  1. ในคอนโซล Firebase ให้ไปที่ Firestore แล้วคลิก63873f95ceaf00ac.pngเริ่มคอลเล็กชันในคอลัมน์แรก
  2. ในกล่องข้อความรหัสคอลเล็กชัน ให้ป้อน users แล้วคลิกถัดไป
  3. ในกล่องข้อความรหัสเอกสาร ให้คลิกรหัสอัตโนมัติ แล้วคลิกบันทึก
  4. ในคอลเล็กชัน users ให้คลิกdec3188dd2d1aa02.pngเริ่มคอลเล็กชันสร้างคอลเล็กชันใหม่ใน Firestore
  5. ในกล่องข้อความรหัสคอลเล็กชัน ให้ป้อน messages แล้วคลิกถัดไป
    1. ในกล่องข้อความรหัสเอกสาร ให้คลิกรหัสอัตโนมัติ
    2. ในกล่องข้อความ Field ให้ป้อน prompt
    3. ในกล่องข้อความค่า ให้ป้อน Tell me 5 random fruits
  6. คลิกบันทึกแล้วรอสักครู่

เมื่อคุณเพิ่มเอกสารนี้ ระบบจะทริกเกอร์ส่วนขยายให้เรียกใช้ Gemini API เอกสารที่คุณเพิ่งเพิ่มลงในคอลเล็กชัน messages จะมีไม่เพียงแค่ prompt แต่ยังมี response ของโมเดลในคำค้นหาของคุณด้วย

คำตอบของโมเดลภาษาในเอกสาร Firestore

เรียกใช้ส่วนขยายอีกครั้งโดยเพิ่มเอกสารอื่นลงในคอลเล็กชัน messages

  1. ในคอลเล็กชัน messages ให้คลิก dec3188dd2d1aa02.png เพิ่มเอกสาร
  2. ในกล่องข้อความรหัสเอกสาร ให้คลิกรหัสอัตโนมัติ
  3. ในกล่องข้อความ Field ให้ป้อน prompt
  4. ในกล่องข้อความค่า ให้ป้อน And now, vegetables
  5. คลิกบันทึกแล้วรอสักครู่ ตอนนี้เอกสารที่คุณเพิ่งเพิ่มลงในคอลเล็กชัน messages มีresponseในคำค้นหาของคุณแล้ว

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

6. ตั้งค่าเว็บแอป

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

ตั้งค่า Firebase CLI ให้ทำงานกับโปรเจ็กต์ Firebase

ในเทอร์มินัล ให้บอก CLI ให้ใช้โปรเจ็กต์ Firebase โดยเรียกใช้คำสั่งต่อไปนี้

firebase use YOUR_PROJECT_ID

ทําให้กฎความปลอดภัยสําหรับ Firestore และ Cloud Storage ใช้งานได้

โค้ดเบสของโค้ดแล็บนี้มีชุดกฎความปลอดภัยของ Firestore และกฎความปลอดภัยของ Cloud Storage ที่เขียนไว้ให้คุณแล้ว เมื่อคุณใช้กฎการรักษาความปลอดภัยเหล่านี้แล้ว บริการ Firebase ในโปรเจ็กต์ Firebase จะได้รับการปกป้องจากการละเมิดได้ดียิ่งขึ้น

  1. หากต้องการใช้กฎความปลอดภัย ให้เรียกใช้คำสั่งนี้ในเทอร์มินัล
    firebase deploy --only firestore:rules,storage
    
  2. หากระบบถามว่าจะให้บทบาท IAM แก่ Cloud Storage เพื่อใช้กฎข้ามบริการหรือไม่ ให้ป้อน Y หรือ N (ตัวเลือกใดก็ได้สำหรับ Codelab นี้)

เชื่อมต่อเว็บแอปกับโปรเจ็กต์ Firebase

โค้ดเบสของเว็บแอปต้องทราบว่าควรใช้โปรเจ็กต์ Firebase ใดสำหรับฐานข้อมูล พื้นที่เก็บข้อมูล ฯลฯ คุณทำได้โดยเพิ่มการกำหนดค่า Firebase ลงในโค้ดเบสของแอป

  1. รับการกำหนดค่า Firebase
    1. ในคอนโซล Firebase ให้ไปที่การตั้งค่าโปรเจ็กต์ภายในโปรเจ็กต์ Firebase
    2. เลื่อนลงไปที่ส่วนแอปของคุณ แล้วเลือกเว็บแอปที่ลงทะเบียนไว้
    3. ในแผงการตั้งค่าและการกำหนดค่า SDK ให้คัดลอกinitializeAppโค้ดทั้งหมด รวมถึง firebaseConfig const
  2. เพิ่มการกำหนดค่า Firebase ลงในโค้ดเบสของเว็บแอป
    1. เปิดไฟล์ src/lib/firebase/firebase.config.js ในเครื่องมือแก้ไขโค้ด
    2. เลือกทั้งหมดในไฟล์ แล้วแทนที่ด้วยโค้ดที่คุณคัดลอก
    3. บันทึกไฟล์

แสดงตัวอย่างเว็บแอปในเบราว์เซอร์

  1. ในเทอร์มินัล ให้ติดตั้งการอ้างอิง แล้วเรียกใช้เว็บแอปโดยใช้คำสั่งต่อไปนี้
    npm install
    npm run dev
    
  2. ในเบราว์เซอร์ ให้ไปที่ URL การโฮสต์ที่โฮสต์ไว้ในเครื่องเพื่อดูเว็บแอป เช่น ในกรณีส่วนใหญ่ URL คือ http://localhost:3000/ หรือ URL ที่คล้ายกัน

ใช้แชทบ็อตของเว็บแอป

  1. ในเบราว์เซอร์ ให้กลับไปที่แท็บที่มีเว็บแอป Friendly Conf ที่ทำงานในเครื่อง
  2. คลิกลงชื่อเข้าใช้ด้วย Google แล้วเลือกบัญชี Google หากจำเป็น
  3. หลังจากลงชื่อเข้าใช้แล้ว คุณจะเห็นหน้าต่างแชทว่างเปล่า
  4. พิมพ์คำทักทาย (เช่น hi) แล้วคลิกส่ง
  5. รอสักครู่เพื่อให้แชทบอทตอบกลับ

แชทบอทในแอปจะตอบกลับด้วยคำตอบทั่วไป

1929b9f465053ae7.png

ปรับแต่งแชทบ็อตให้เหมาะกับแอป

คุณต้องใช้โมเดล Gemini พื้นฐานที่แชทบอทของเว็บแอปใช้เพื่อทราบรายละเอียดเฉพาะการประชุมเมื่อโมเดลสร้างคำตอบสำหรับผู้เข้าร่วมที่ใช้แอป มีหลายวิธีในการควบคุมและกำหนดทิศทางคำตอบเหล่านี้ และในส่วนย่อยของโค้ดแล็บนี้ เราจะแสดงวิธีพื้นฐานมากโดยการระบุ "บริบท" ในพรอมต์เริ่มต้น (แทนที่จะใช้เฉพาะอินพุตจากผู้ใช้เว็บแอป)

  1. ในเว็บแอปในเบราว์เซอร์ ให้ล้างการสนทนาโดยคลิกปุ่ม "x" สีแดง (ข้างข้อความในประวัติการแชท)
  2. เปิดไฟล์ src/app/page.tsx ในเครื่องมือแก้ไขโค้ด
  3. เลื่อนลงและแทนที่โค้ดในบรรทัดที่ 93 หรือใกล้เคียงที่ระบุว่า prompt: userMsg ด้วยโค้ดต่อไปนี้
    prompt: preparePrompt(userMsg, messages),
  4. บันทึกไฟล์
  5. กลับไปที่เว็บแอปที่ทำงานในเบราว์เซอร์
  6. พิมพ์คำทักทาย (เช่น hi) อีกครั้ง แล้วคลิกส่ง
  7. รอสักครู่เพื่อให้แชทบอทตอบกลับ

6fbe972296fcb4d8.png

แชทบ็อตจะตอบกลับด้วยความรู้ที่อิงตามบริบทที่ระบุใน src/app/lib/context.md แม้ว่าคุณจะไม่ได้พิมพ์คำขอที่เฉพาะเจาะจง แต่โมเดล Gemini ที่อยู่เบื้องหลังจะสร้างคำแนะนำที่ปรับเปลี่ยนในแบบของคุณโดยอิงตามบริบทนี้ รวมถึงวันที่/เวลาปัจจุบัน ตอนนี้คุณสามารถระบุคำถามติดตามและเจาะลึกได้แล้ว

บริบทที่ขยายนี้มีความสำคัญต่อแชทบอท แต่คุณไม่ควรแสดงต่อผู้ใช้เว็บแอป วิธีซ่อนมีดังนี้

  1. เปิดไฟล์ src/app/page.tsx ในเครื่องมือแก้ไขโค้ด
  2. เลื่อนลงและแทนที่โค้ดในหรือใกล้บรรทัดที่ 56 ที่ระบุว่า ...doc.data(), ด้วยโค้ดต่อไปนี้
    ...prepareMessage(doc.data()),
  3. บันทึกไฟล์
  4. กลับไปที่เว็บแอปที่ทำงานในเบราว์เซอร์
  5. โหลดหน้าเว็บซ้ำ

นอกจากนี้ คุณยังลองใช้ความสามารถในการสนทนากับแชทบ็อตโดยใช้บริบทในอดีตได้ด้วย

  1. ในกล่องข้อความพิมพ์ข้อความ ให้ถามคำถาม เช่น Any other interesting talks about AI?แชทบอทจะตอบกลับ
  2. ในกล่องข้อความพิมพ์ข้อความ ให้ถามคำถามติดตามผลที่เกี่ยวข้องกับคำถามก่อนหน้า Give me a few more details about the last one.

แชทบ็อตจะตอบกลับโดยใช้ความรู้ในอดีต เนื่องจากตอนนี้ประวัติการแชทเป็นส่วนหนึ่งของบริบทแล้ว แชทบอทจึงเข้าใจคำถามต่อเนื่อง

7. ตั้งค่าส่วนขยาย "งานมัลติโมดัลด้วย Gemini API"

ส่วนขยาย "งานแบบมัลติโมดัลด้วย Gemini API" จะเรียกใช้ Gemini API ด้วยพรอมต์แบบมัลติโมดัลที่มีพรอมต์ข้อความ รวมถึง URL ของไฟล์ที่รองรับหรือ URL ของ Cloud Storage (โปรดทราบว่าแม้แต่ Google AI Gemini API ก็ใช้ URL ของ Cloud Storage เป็นโครงสร้างพื้นฐานของ URL ของไฟล์) นอกจากนี้ ส่วนขยายยังรองรับตัวแปร Handlebars เพื่อแทนที่ค่าจากเอกสาร Cloud Firestore สำหรับการปรับแต่งพรอมต์ข้อความด้วย

ในแอปของคุณ เมื่อใดก็ตามที่คุณอัปโหลดรูปภาพไปยังที่เก็บข้อมูล Cloud Storage คุณจะสร้าง URL และเพิ่ม URL นั้นลงในเอกสาร Cloud Firestore ใหม่ได้ ซึ่งจะเป็นการทริกเกอร์ส่วนขยายให้สร้างพรอมต์มัลติโมดัลและเรียกใช้ Gemini API ในซอร์สโค้ดของโค้ดแล็บนี้ เราได้ระบุโค้ดสำหรับการอัปโหลดรูปภาพและเขียน URL ลงในเอกสาร Firestore ไว้แล้ว

ติดตั้งส่วนขยาย "งานมัลติโมดัลด้วย Gemini API"

  1. ไปที่ส่วนขยาย "งานมัลติโมดัลด้วย Gemini API"
  2. คลิกติดตั้งในคอนโซล Firebase
  3. เลือกโปรเจ็กต์ Firebase
  4. คลิกถัดไป > ถัดไป > ถัดไป จนกว่าจะถึงส่วนกำหนดค่าส่วนขยาย
    1. ในเมนูผู้ให้บริการ Gemini API ให้เลือกว่าต้องการใช้ Gemini API จาก AI ของ Google หรือ Vertex AI สำหรับนักพัฒนาแอปที่ใช้ Firebase เราขอแนะนำให้ใช้ Vertex AI
    2. ในกล่องข้อความเส้นทางคอลเล็กชัน Firestore ให้ป้อน gallery
    3. ในกล่องข้อความพรอมต์ ให้ป้อน Please describe the provided image; if there is no image, say "no image"
    4. ในกล่องข้อความฟิลด์รูปภาพ ให้ป้อน image
    5. ในเมนูตำแหน่ง Cloud Functions ให้เลือกตำแหน่งที่ต้องการ (เช่น Iowa (us-central1) หรือตำแหน่งที่คุณระบุไว้ก่อนหน้านี้สำหรับฐานข้อมูล Firestore)
    6. ปล่อยให้ค่าอื่นๆ ทั้งหมดเป็นค่าเริ่มต้น
  5. คลิกติดตั้งส่วนขยาย แล้วรอให้ระบบติดตั้งส่วนขยาย

ลองใช้ส่วนขยาย "งานมัลติโมดัลด้วย Gemini API"

แม้ว่าเป้าหมายของ Codelab นี้คือการโต้ตอบกับส่วนขยาย "งานมัลติโมดัลด้วย Gemini API" ผ่านเว็บแอป แต่การเรียนรู้วิธีการทำงานของส่วนขยายโดยลองใช้ในคอนโซล Firebase ก่อนก็เป็นประโยชน์เช่นกัน

ส่วนขยายจะทริกเกอร์เมื่อใดก็ตามที่มีการสร้างเอกสาร Firestore ภายใต้คอลเล็กชัน users/{uid}/gallery ซึ่งคุณสามารถทำได้ในคอนโซล Firebase จากนั้นส่วนขยายจะใช้ URL ของรูปภาพ Cloud Storage ในเอกสาร Cloud Firestore และส่งเป็นส่วนหนึ่งของพรอมต์มัลติโมดอลในการเรียกใช้ Gemini API

ก่อนอื่น ให้อัปโหลดรูปภาพไปยังที่เก็บข้อมูล Cloud Storage โดยทำดังนี้

  1. ไปที่พื้นที่เก็บข้อมูลภายในโปรเจ็กต์ Firebase
  2. คลิก17eeb1712828b84f.pngสร้างโฟลเดอร์
  3. ในกล่องข้อความชื่อโฟลเดอร์ ให้ป้อน galleryba63b07a7a04f055.png
  4. คลิกเพิ่มโฟลเดอร์
  5. ในโฟลเดอร์ gallery ให้คลิกอัปโหลดไฟล์
  6. เลือกไฟล์รูปภาพ JPEG เพื่ออัปโหลด

จากนั้นเพิ่ม URL ของ Cloud Storage สำหรับรูปภาพลงในเอกสาร Firestore (ซึ่งเป็นทริกเกอร์สำหรับส่วนขยาย)

  1. ไปที่ Firestore ภายในโปรเจ็กต์ Firebase
  2. คลิก63873f95ceaf00ac.pngเริ่มการรวบรวมในคอลัมน์แรก
  3. ในกล่องข้อความรหัสคอลเล็กชัน ให้ป้อน gallery แล้วคลิกถัดไป
  4. วิธีเพิ่มเอกสารลงในคอลเล็กชัน
    1. ในกล่องข้อความรหัสเอกสาร ให้คลิกรหัสอัตโนมัติ
    2. ในกล่องข้อความฟิลด์ ให้ป้อน image ในช่องค่า ให้ป้อน URI ตำแหน่งที่จัดเก็บของรูปภาพที่คุณเพิ่งอัปโหลด3af50c4266c2a735.png
  5. คลิกเพิ่มช่อง
  6. ในกล่องข้อความฟิลด์ ให้ป้อน published ในช่อง Type ให้เลือก boolean เลือก true ในช่องค่า9cacd855ff370a9f.png
  7. คลิกบันทึกแล้วรอสักครู่

ตอนนี้คอลเล็กชัน gallery มีเอกสารที่มีคำตอบสำหรับคำค้นหาของคุณแล้ว

  1. ในเบราว์เซอร์ ให้กลับไปที่แท็บที่มีเว็บแอป Friendly Conf ที่ทำงานในเครื่อง
  2. คลิกแท็บการนำทางแกลเลอรี
  3. คุณจะเห็นแกลเลอรีรูปภาพที่อัปโหลดและคำอธิบายที่ AI สร้างขึ้น โดยควรมีรูปภาพที่คุณอัปโหลดไว้ก่อนหน้านี้ในโฟลเดอร์ gallery ในที่เก็บข้อมูล
  4. คลิกปุ่มเพื่อ "อัปโหลด" แล้วเลือกรูปภาพ JPEG อื่น
  5. รอสักครู่เพื่อให้รูปภาพแสดงในแกลเลอรี หลังจากนั้นไม่นาน ระบบจะแสดงรายละเอียดที่ AI สร้างขึ้นสำหรับรูปภาพที่อัปโหลดใหม่ด้วย

หากต้องการทำความเข้าใจโค้ดสำหรับวิธีติดตั้งใช้งาน ให้ดู src/app/gallery/page.tsx ในโค้ดเบสของเว็บแอป

8. โบนัส: ทำให้แอปพลิเคชันใช้งานได้

Firebase มีหลายวิธีในการติดตั้งใช้งานเว็บแอปพลิเคชัน สำหรับ Codelab นี้ ให้เลือกตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้

  • ตัวเลือกที่ 1: Firebase Hosting - ใช้ตัวเลือกนี้หากคุณตัดสินใจไม่สร้างที่เก็บ GitHub ของคุณเอง (และมีเพียงซอร์สโค้ดที่จัดเก็บไว้ในเครื่องของคุณ)
  • ตัวเลือกที่ 2: App Hosting ของ Firebase - ใช้ตัวเลือกนี้หากต้องการให้ระบบทำการติดตั้งใช้งานโดยอัตโนมัติทุกครั้งที่คุณพุชการเปลี่ยนแปลงไปยังที่เก็บ GitHub ของคุณเอง บริการ Firebase ใหม่นี้สร้างขึ้นมาโดยเฉพาะเพื่อตอบสนองความต้องการของแอปพลิเคชัน Next.js และ Angular แบบไดนามิก

ตัวเลือกที่ 1: ทำให้ใช้งานได้โดยใช้โฮสติ้งของ Firebase

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

  1. ในเทอร์มินัล ให้เริ่มต้นใช้งาน Firebase Hosting โดยเรียกใช้คำสั่งต่อไปนี้
    firebase experiments:enable webframeworks
    firebase init hosting
    
  2. สำหรับพรอมต์ Detected an existing Next.js codebase in your current directory, should we use this? ให้กด Y
  3. สำหรับพรอมต์ In which region would you like to host server-side content, if applicable? ให้เลือกสถานที่ตั้งเริ่มต้นหรือสถานที่ตั้งที่คุณใช้ก่อนหน้านี้ใน Codelab นี้ จากนั้นกด Enter (หรือ return ใน macOS)
  4. สำหรับพรอมต์ Set up automatic builds and deploys with GitHub? ให้กด N
  5. ทำให้เว็บแอปใช้งานได้ในโฮสติ้งโดยเรียกใช้คำสั่งนี้
    firebase deploy --only hosting
    

เสร็จเรียบร้อย หากคุณอัปเดตแอปและต้องการทําให้เวอร์ชันใหม่นั้นใช้งานได้ เพียงเรียกใช้ firebase deploy --only hosting อีกครั้ง แล้วโฮสติ้งของ Firebase จะสร้างและทําให้แอปใช้งานได้อีกครั้ง

ตัวเลือกที่ 2: ทำให้ใช้งานได้โดยใช้ Firebase App Hosting

ใช้ตัวเลือกนี้หากต้องการให้มีการติดตั้งใช้งานอัตโนมัติทุกครั้งที่คุณพุชการเปลี่ยนแปลงไปยังที่เก็บ GitHub ของคุณเอง

  1. คอมมิตการเปลี่ยนแปลงไปยัง GitHub
  2. ในคอนโซล Firebase ให้ไปที่ App Hosting ภายในโปรเจ็กต์ Firebase
  3. คลิกเริ่มต้นใช้งาน > เชื่อมต่อกับ GitHub
  4. เลือกบัญชี GitHub และที่เก็บ คลิกถัดไป
  5. ในการตั้งค่าการติดตั้งใช้งาน > ไดเรกทอรีราก ให้ป้อนชื่อโฟลเดอร์ที่มีซอร์สโค้ด (หาก package.json ไม่ได้อยู่ในไดเรกทอรีรากของที่เก็บ)
  6. สำหรับสาขาที่ใช้งานจริง ให้เลือกสาขา main ของที่เก็บ GitHub คลิกถัดไป
  7. ป้อนรหัสสำหรับแบ็กเอนด์ (เช่น chatbot)
  8. คลิกเสร็จสิ้นและทำให้ใช้งานได้

การทำให้ใช้งานได้ใหม่จะใช้เวลาสักครู่จึงจะพร้อม คุณตรวจสอบสถานะการติดตั้งใช้งานได้ในส่วน App Hosting ของคอนโซล Firebase

นับจากนี้เป็นต้นไป ทุกครั้งที่คุณพุชการเปลี่ยนแปลงไปยังที่เก็บ GitHub Firebase App Hosting จะสร้างและติดตั้งใช้งานแอปโดยอัตโนมัติ

9. บทสรุป

ยินดีด้วย คุณทำได้ดีมากในโค้ดแล็บนี้

การติดตั้งและกำหนดค่าส่วนขยาย

คุณใช้คอนโซล Firebase เพื่อกำหนดค่าและติดตั้งส่วนขยาย Firebase ต่างๆ ที่ใช้ Generative AI การใช้ Firebase Extensions นั้นสะดวกเนื่องจากคุณไม่จำเป็นต้องเรียนรู้และเขียนโค้ดบอยเลอร์เพลตจำนวนมากเพื่อจัดการการตรวจสอบสิทธิ์กับบริการ Google Cloud หรือตรรกะ Cloud Functions ของแบ็กเอนด์เพื่อฟังและโต้ตอบกับ Firestore รวมถึงบริการและ API ของ Google Cloud

ลองใช้ส่วนขยายโดยใช้คอนโซล Firebase

คุณใช้เวลาทำความเข้าใจวิธีการทำงานของส่วนขยาย GenAI เหล่านี้โดยอิงตามอินพุตที่คุณระบุผ่าน Firestore หรือ Cloud Storage แทนที่จะรีบเขียนโค้ด ซึ่งจะมีประโยชน์อย่างยิ่งขณะแก้ไขข้อบกพร่องของเอาต์พุตของส่วนขยาย

การสร้างเว็บแอปที่ทำงานด้วยระบบ AI

คุณสร้างเว็บแอปที่ทำงานด้วยระบบ AI ซึ่งใช้ Firebase Extensions เพื่อเข้าถึงความสามารถเพียงไม่กี่อย่างของโมเดล Gemini

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

นอกจากนี้ เว็บแอปยังใช้ส่วนขยาย "งานมัลติโมดัลด้วย Gemini API" เพื่อสร้างคำอธิบายรูปภาพสำหรับรูปภาพที่อัปโหลดโดยอัตโนมัติ

ขั้นตอนถัดไป