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 ดังนั้นคำตอบของแชทบ็อตจึงพิจารณาบริบททั้งหมดนี้ได้
บริการของ Firebase
ในโค้ดแล็บนี้ คุณจะได้ใช้บริการและฟีเจอร์ต่างๆ ของ Firebase มากมาย และเราได้เตรียมโค้ดเริ่มต้นส่วนใหญ่ไว้ให้คุณแล้ว ตารางต่อไปนี้แสดงบริการที่คุณจะใช้และเหตุผลในการใช้บริการเหล่านั้น
บริการ | เหตุผลในการใช้งาน |
คุณใช้ฟังก์ชันการลงชื่อเข้าใช้ด้วย Google สำหรับเว็บแอป | |
คุณจัดเก็บข้อมูลข้อความใน Cloud Firestore ซึ่งส่วนขยาย Firebase จะประมวลผลข้อมูลนั้น | |
คุณอ่านและเขียนจาก Cloud Storage เพื่อแสดงแกลเลอรีรูปภาพภายในเว็บแอป | |
คุณจะนำกฎความปลอดภัยไปใช้เพื่อช่วยรักษาความปลอดภัยในการเข้าถึงบริการ Firebase | |
คุณกำหนดค่าและติดตั้ง 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
- ในเทอร์มินัล ให้ตรวจสอบว่าคุณได้ติดตั้ง Node.js เวอร์ชัน 20.0.0 ขึ้นไปแล้ว
node -v
- หากคุณไม่มี Node.js เวอร์ชัน 20.0.0 ขึ้นไป ให้ดาวน์โหลดเวอร์ชัน LTS ล่าสุดและติดตั้ง
ดูซอร์สโค้ดสำหรับ Codelab
หากคุณมีบัญชี GitHub ให้ทำดังนี้
- สร้างที่เก็บใหม่โดยใช้เทมเพลตจาก github.com/FirebaseExtended/codelab-gemini-api-extensions
- โคลนที่เก็บ 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
- ตรวจสอบว่าคุณได้ติดตั้ง Firebase CLI และเป็นเวอร์ชัน 13.6 ขึ้นไป
firebase --version
- หากคุณติดตั้ง Firebase CLI ไว้แล้ว แต่ไม่ใช่เวอร์ชัน 13.6 ขึ้นไป ให้อัปเดตโดยทำดังนี้
npm update -g firebase-tools
- หากยังไม่ได้ติดตั้ง Firebase CLI ให้ติดตั้งโดยทำดังนี้
npm install -g firebase-tools
หากอัปเดตหรือติดตั้ง Firebase CLI ไม่ได้เนื่องจากข้อผิดพลาดเกี่ยวกับสิทธิ์ โปรดดูเอกสารประกอบของ npm หรือใช้ตัวเลือกการติดตั้งอื่น
เข้าสู่ระบบ Firebase
- ในเทอร์มินัล ให้ไปที่โฟลเดอร์
codelab-gemini-api-extensions
แล้วเข้าสู่ระบบ Firebase โดยทำดังนี้ หากเทอร์มินัลระบุว่าคุณเข้าสู่ระบบ Firebase แล้ว ให้ข้ามไปที่ส่วนตั้งค่าโปรเจ็กต์ Firebase ของ Codelab นี้cd codelab-gemini-api-extensions firebase login
- ในเทอร์มินัล ให้ป้อน
Y
หรือN
ขึ้นอยู่กับว่าคุณต้องการให้ Firebase รวบรวมข้อมูลหรือไม่ (ตัวเลือกใดก็ได้สำหรับ Codelab นี้) - ในเบราว์เซอร์ ให้เลือกบัญชี Google แล้วคลิกอนุญาต
4. ตั้งค่าโปรเจ็กต์ Firebase
ในส่วนนี้ คุณจะตั้งค่าโปรเจ็กต์ Firebase และลงทะเบียน Firebase Web App ในโปรเจ็กต์ นอกจากนี้ คุณยังจะเปิดใช้บริการ Firebase บางอย่างที่เว็บแอปตัวอย่างใช้ในภายหลังใน Codelab นี้ด้วย
ขั้นตอนทั้งหมดในส่วนนี้จะดำเนินการในคอนโซล Firebase
สร้างโปรเจ็กต์ Firebase
- ลงชื่อเข้าใช้คอนโซล Firebase โดยใช้บัญชี Google เดียวกับที่คุณใช้ในขั้นตอนก่อนหน้า
- คลิกปุ่มเพื่อสร้างโปรเจ็กต์ใหม่ แล้วป้อนชื่อโปรเจ็กต์ (เช่น
AI Extensions Codelab
)
- คลิกต่อไป
- หากได้รับแจ้ง ให้อ่านและยอมรับข้อกำหนดของ Firebase แล้วคลิกต่อไป
- (ไม่บังคับ) เปิดใช้ความช่วยเหลือจาก AI ในคอนโซล Firebase (เรียกว่า "Gemini ใน Firebase")
- สำหรับ Codelab นี้ คุณไม่จำเป็นต้องใช้ Google Analytics ดังนั้นให้ปิดตัวเลือก Google Analytics
- คลิกสร้างโปรเจ็กต์ รอให้ระบบจัดสรรโปรเจ็กต์ แล้วคลิกดำเนินการต่อ
อัปเกรดแพ็กเกจราคาของ Firebase
หากต้องการใช้ Firebase Extensions (และบริการระบบคลาวด์ที่เกี่ยวข้อง) รวมถึง Cloud Storage สำหรับ Firebase โปรเจ็กต์ Firebase ของคุณต้องอยู่ในแพ็กเกจราคาแบบจ่ายเมื่อใช้ (Blaze) ซึ่งหมายความว่าโปรเจ็กต์ต้องลิงก์กับบัญชีการเรียกเก็บเงินในระบบคลาวด์
- บัญชีสำหรับการเรียกเก็บเงินของ Cloud ต้องมีวิธีการชำระเงิน เช่น บัตรเครดิต
- หากเพิ่งเริ่มใช้ Firebase และ Google Cloud โปรดตรวจสอบว่าคุณมีสิทธิ์รับเครดิต$300 และบัญชีสำหรับการเรียกเก็บเงินในระบบคลาวด์แบบทดลองใช้ฟรีหรือไม่
- หากคุณกำลังทำ Codelab นี้เป็นส่วนหนึ่งของกิจกรรม โปรดสอบถามผู้จัดว่ามีเครดิต Cloud ให้หรือไม่
โปรดทราบว่าเมื่อเปิดใช้การเรียกเก็บเงินในโปรเจ็กต์ Firebase ระบบจะเรียกเก็บเงินสำหรับการเรียกที่ส่วนขยายทำกับ Gemini API (ไม่ว่าคุณจะเลือกผู้ให้บริการรายใดก็ตาม ไม่ว่าจะเป็น Google AI หรือ Vertex AI) ดูข้อมูลเพิ่มเติมเกี่ยวกับราคาสำหรับ Google AI และสำหรับ Vertex AI
หากต้องการอัปเกรดโปรเจ็กต์เป็นแพ็กเกจ Blaze ให้ทำตามขั้นตอนต่อไปนี้
- ในคอนโซล Firebase ให้เลือกอัปเกรดแพ็กเกจ
- เลือกแพ็กเกจ Blaze ทำตามวิธีการบนหน้าจอเพื่อลิงก์บัญชีสำหรับการเรียกเก็บเงินใน Cloud กับโปรเจ็กต์
หากคุณต้องสร้างบัญชีสำหรับการเรียกเก็บเงินใน Cloud เป็นส่วนหนึ่งของการอัปเกรดนี้ คุณอาจต้องกลับไปที่ขั้นตอนการอัปเกรดใน Firebase Console เพื่อทำการอัปเกรดให้เสร็จสมบูรณ์
เพิ่มเว็บแอปไปยังโปรเจ็กต์ Firebase
- ไปที่หน้าจอภาพรวมโปรเจ็กต์ในโปรเจ็กต์ Firebase แล้วคลิก
Web
- ในกล่องข้อความชื่อเล่นของแอป ให้ป้อนชื่อเล่นของแอปที่จำง่าย เช่น
My AI Extensions
- คลิกลงทะเบียนแอป > ถัดไป > ถัดไป > ไปที่คอนโซล
คุณข้ามขั้นตอนทั้งหมดที่เกี่ยวข้องกับ "การโฮสต์" ในขั้นตอนของเว็บแอปได้ เนื่องจากคุณจะตั้งค่าบริการโฮสติ้งในภายหลังใน Codelab นี้ (ไม่บังคับ)
เยี่ยมเลย ตอนนี้คุณได้ลงทะเบียนเว็บแอปในโปรเจ็กต์ Firebase ใหม่แล้ว
ตั้งค่าการตรวจสอบสิทธิ์ Firebase
- ไปที่การตรวจสอบสิทธิ์โดยใช้แผงการนำทางด้านซ้าย
- คลิกเริ่มต้นใช้งาน
- ในคอลัมน์ผู้ให้บริการเพิ่มเติม ให้คลิก Google > เปิดใช้
- ในกล่องข้อความชื่อที่เปิดเผยต่อสาธารณะสำหรับโปรเจ็กต์ ให้ป้อนชื่อที่มีประโยชน์ เช่น
My AI Extensions Codelab
- เลือกอีเมลของคุณในเมนูอีเมลสนับสนุนสำหรับโปรเจ็กต์
- คลิกบันทึก
ตั้งค่า Cloud Firestore
- ในแผงด้านซ้ายของคอนโซล Firebase ให้ขยายสร้าง แล้วเลือกฐานข้อมูล Firestore
- คลิกสร้างฐานข้อมูล
- ตั้งค่ารหัสฐานข้อมูลเป็น
(default)
ไว้ดังเดิม - เลือกตำแหน่งสำหรับฐานข้อมูล แล้วคลิกถัดไป
สำหรับแอปจริง คุณควรเลือกตำแหน่งที่อยู่ใกล้กับผู้ใช้ - คลิกเริ่มในโหมดทดสอบ อ่านข้อจำกัดความรับผิดเกี่ยวกับกฎความปลอดภัย
ในภายหลังใน Codelab นี้ คุณจะเพิ่มกฎความปลอดภัยเพื่อรักษาความปลอดภัยของข้อมูล อย่าเผยแพร่หรือเปิดเผยแอปต่อสาธารณะโดยไม่ได้เพิ่มกฎความปลอดภัยสำหรับฐานข้อมูล - คลิกสร้าง
ตั้งค่า Cloud Storage for Firebase
- ในแผงด้านซ้ายของคอนโซล Firebase ให้ขยายสร้าง แล้วเลือก Storage
- คลิกเริ่มต้นใช้งาน
- เลือกตำแหน่งสำหรับที่เก็บข้อมูลเริ่มต้น
ที่เก็บข้อมูลในUS-WEST1
,US-CENTRAL1
และUS-EAST1
จะใช้ประโยชน์จากระดับ"ใช้งานฟรีเสมอ" สำหรับ Google Cloud Storage ได้ ที่เก็บข้อมูลในตำแหน่งอื่นๆ ทั้งหมดจะเป็นไปตามราคาและการใช้งาน Google Cloud Storage - คลิกเริ่มในโหมดทดสอบ อ่านข้อจำกัดความรับผิดเกี่ยวกับกฎความปลอดภัย
ในภายหลังใน Codelab นี้ คุณจะเพิ่มกฎความปลอดภัยเพื่อรักษาความปลอดภัยของข้อมูล อย่าเผยแพร่หรือแสดงแอปต่อสาธารณะโดยไม่ได้เพิ่มกฎความปลอดภัยสำหรับที่เก็บข้อมูล - คลิกสร้าง
ในส่วนถัดไปของโค้ดแล็บนี้ คุณจะได้ติดตั้งและกำหนดค่าส่วนขยาย Firebase 2 รายการที่จะใช้ในเว็บแอปตลอดโค้ดแล็บนี้
5. ตั้งค่าส่วนขยาย "สร้างแชทบอทด้วย Gemini API"
ติดตั้งส่วนขยาย "สร้างแชทบอทด้วย Gemini API"
- ไปที่ส่วนขยาย "สร้างแชทบ็อตด้วย Gemini API"
- คลิกติดตั้งในคอนโซล Firebase
- เลือกโปรเจ็กต์ Firebase แล้วคลิกถัดไป
- ในส่วนตรวจสอบว่าเปิดใช้ API และสร้างทรัพยากรแล้ว ให้คลิกเปิดใช้ข้างบริการที่ระบบแนะนำ แล้วคลิกถัดไป
- สำหรับสิทธิ์ที่ระบบแนะนำ ให้เลือกให้สิทธิ์ แล้วคลิกถัดไป
- วิธีกําหนดค่าส่วนขยาย
- ในเมนูผู้ให้บริการ Gemini API ให้เลือกว่าต้องการใช้ Gemini API จาก AI ของ Google หรือ Vertex AI สำหรับนักพัฒนาแอปที่ใช้ Firebase เราขอแนะนำให้ใช้
Vertex AI
- ในกล่องข้อความเส้นทางคอลเล็กชัน Firestore ให้ป้อน
users/{uid}/messages
ในขั้นตอนถัดไปของโค้ดแล็บนี้ การเพิ่มเอกสารลงในคอลเล็กชันนี้จะทริกเกอร์ส่วนขยายให้เรียกใช้ Gemini API - ในเมนูตำแหน่ง Cloud Functions ให้เลือกตำแหน่งที่ต้องการ (เช่น
Iowa (us-central1)
หรือตำแหน่งที่คุณระบุไว้ก่อนหน้านี้สำหรับฐานข้อมูล Firestore) - ปล่อยให้ค่าอื่นๆ ทั้งหมดเป็นค่าเริ่มต้น
- ในเมนูผู้ให้บริการ Gemini API ให้เลือกว่าต้องการใช้ Gemini API จาก AI ของ Google หรือ Vertex AI สำหรับนักพัฒนาแอปที่ใช้ Firebase เราขอแนะนำให้ใช้
- คลิกติดตั้งส่วนขยาย แล้วรอให้ระบบติดตั้งส่วนขยาย
ลองใช้ส่วนขยาย "สร้างแชทบอทด้วย Gemini API"
แม้ว่าเป้าหมายของ Codelab นี้คือการโต้ตอบกับส่วนขยาย "สร้างแชทบอทด้วย Gemini API" ผ่านเว็บแอป แต่การเรียนรู้วิธีการทำงานของส่วนขยายโดยลองใช้ใน Firebase Console ก่อนก็เป็นประโยชน์เช่นกัน
ส่วนขยายจะทริกเกอร์เมื่อใดก็ตามที่มีการสร้างเอกสาร Firestore ภายใต้คอลเล็กชัน users/{uid}/discussion/{discussionId}/messages
ซึ่งคุณสามารถทำได้ในคอนโซล Firebase
- ในคอนโซล Firebase ให้ไปที่ Firestore แล้วคลิก
เริ่มคอลเล็กชันในคอลัมน์แรก
- ในกล่องข้อความรหัสคอลเล็กชัน ให้ป้อน
users
แล้วคลิกถัดไป - ในกล่องข้อความรหัสเอกสาร ให้คลิกรหัสอัตโนมัติ แล้วคลิกบันทึก
- ในคอลเล็กชัน
users
ให้คลิกเริ่มคอลเล็กชัน
- ในกล่องข้อความรหัสคอลเล็กชัน ให้ป้อน
messages
แล้วคลิกถัดไป- ในกล่องข้อความรหัสเอกสาร ให้คลิกรหัสอัตโนมัติ
- ในกล่องข้อความ Field ให้ป้อน
prompt
- ในกล่องข้อความค่า ให้ป้อน
Tell me 5 random fruits
- คลิกบันทึกแล้วรอสักครู่
เมื่อคุณเพิ่มเอกสารนี้ ระบบจะทริกเกอร์ส่วนขยายให้เรียกใช้ Gemini API เอกสารที่คุณเพิ่งเพิ่มลงในคอลเล็กชัน messages
จะมีไม่เพียงแค่ prompt
แต่ยังมี response
ของโมเดลในคำค้นหาของคุณด้วย
เรียกใช้ส่วนขยายอีกครั้งโดยเพิ่มเอกสารอื่นลงในคอลเล็กชัน messages
- ในคอลเล็กชัน
messages
ให้คลิกเพิ่มเอกสาร
- ในกล่องข้อความรหัสเอกสาร ให้คลิกรหัสอัตโนมัติ
- ในกล่องข้อความ Field ให้ป้อน
prompt
- ในกล่องข้อความค่า ให้ป้อน
And now, vegetables
- คลิกบันทึกแล้วรอสักครู่ ตอนนี้เอกสารที่คุณเพิ่งเพิ่มลงในคอลเล็กชัน
messages
มีresponse
ในคำค้นหาของคุณแล้ว
เมื่อสร้างคำตอบนี้ โมเดล Gemini ที่อยู่เบื้องหลังได้ใช้ความรู้ในอดีตจากคำค้นหาก่อนหน้าของคุณ
6. ตั้งค่าเว็บแอป
หากต้องการเรียกใช้เว็บแอป คุณจะต้องเรียกใช้คำสั่งในเทอร์มินัลและเพิ่มโค้ดภายในเครื่องมือแก้ไขโค้ด
ตั้งค่า Firebase CLI ให้ทำงานกับโปรเจ็กต์ Firebase
ในเทอร์มินัล ให้บอก CLI ให้ใช้โปรเจ็กต์ Firebase โดยเรียกใช้คำสั่งต่อไปนี้
firebase use YOUR_PROJECT_ID
ทําให้กฎความปลอดภัยสําหรับ Firestore และ Cloud Storage ใช้งานได้
โค้ดเบสของโค้ดแล็บนี้มีชุดกฎความปลอดภัยของ Firestore และกฎความปลอดภัยของ Cloud Storage ที่เขียนไว้ให้คุณแล้ว เมื่อคุณใช้กฎการรักษาความปลอดภัยเหล่านี้แล้ว บริการ Firebase ในโปรเจ็กต์ Firebase จะได้รับการปกป้องจากการละเมิดได้ดียิ่งขึ้น
- หากต้องการใช้กฎความปลอดภัย ให้เรียกใช้คำสั่งนี้ในเทอร์มินัล
firebase deploy --only firestore:rules,storage
- หากระบบถามว่าจะให้บทบาท IAM แก่ Cloud Storage เพื่อใช้กฎข้ามบริการหรือไม่ ให้ป้อน
Y
หรือN
(ตัวเลือกใดก็ได้สำหรับ Codelab นี้)
เชื่อมต่อเว็บแอปกับโปรเจ็กต์ Firebase
โค้ดเบสของเว็บแอปต้องทราบว่าควรใช้โปรเจ็กต์ Firebase ใดสำหรับฐานข้อมูล พื้นที่เก็บข้อมูล ฯลฯ คุณทำได้โดยเพิ่มการกำหนดค่า Firebase ลงในโค้ดเบสของแอป
- รับการกำหนดค่า Firebase
- ในคอนโซล Firebase ให้ไปที่การตั้งค่าโปรเจ็กต์ภายในโปรเจ็กต์ Firebase
- เลื่อนลงไปที่ส่วนแอปของคุณ แล้วเลือกเว็บแอปที่ลงทะเบียนไว้
- ในแผงการตั้งค่าและการกำหนดค่า SDK ให้คัดลอก
initializeApp
โค้ดทั้งหมด รวมถึงfirebaseConfig
const
- เพิ่มการกำหนดค่า Firebase ลงในโค้ดเบสของเว็บแอป
- เปิดไฟล์
src/lib/firebase/firebase.config.js
ในเครื่องมือแก้ไขโค้ด - เลือกทั้งหมดในไฟล์ แล้วแทนที่ด้วยโค้ดที่คุณคัดลอก
- บันทึกไฟล์
- เปิดไฟล์
แสดงตัวอย่างเว็บแอปในเบราว์เซอร์
- ในเทอร์มินัล ให้ติดตั้งการอ้างอิง แล้วเรียกใช้เว็บแอปโดยใช้คำสั่งต่อไปนี้
npm install npm run dev
- ในเบราว์เซอร์ ให้ไปที่ URL การโฮสต์ที่โฮสต์ไว้ในเครื่องเพื่อดูเว็บแอป เช่น ในกรณีส่วนใหญ่ URL คือ http://localhost:3000/ หรือ URL ที่คล้ายกัน
ใช้แชทบ็อตของเว็บแอป
- ในเบราว์เซอร์ ให้กลับไปที่แท็บที่มีเว็บแอป Friendly Conf ที่ทำงานในเครื่อง
- คลิกลงชื่อเข้าใช้ด้วย Google แล้วเลือกบัญชี Google หากจำเป็น
- หลังจากลงชื่อเข้าใช้แล้ว คุณจะเห็นหน้าต่างแชทว่างเปล่า
- พิมพ์คำทักทาย (เช่น
hi
) แล้วคลิกส่ง - รอสักครู่เพื่อให้แชทบอทตอบกลับ
แชทบอทในแอปจะตอบกลับด้วยคำตอบทั่วไป
ปรับแต่งแชทบ็อตให้เหมาะกับแอป
คุณต้องใช้โมเดล Gemini พื้นฐานที่แชทบอทของเว็บแอปใช้เพื่อทราบรายละเอียดเฉพาะการประชุมเมื่อโมเดลสร้างคำตอบสำหรับผู้เข้าร่วมที่ใช้แอป มีหลายวิธีในการควบคุมและกำหนดทิศทางคำตอบเหล่านี้ และในส่วนย่อยของโค้ดแล็บนี้ เราจะแสดงวิธีพื้นฐานมากโดยการระบุ "บริบท" ในพรอมต์เริ่มต้น (แทนที่จะใช้เฉพาะอินพุตจากผู้ใช้เว็บแอป)
- ในเว็บแอปในเบราว์เซอร์ ให้ล้างการสนทนาโดยคลิกปุ่ม "x" สีแดง (ข้างข้อความในประวัติการแชท)
- เปิดไฟล์
src/app/page.tsx
ในเครื่องมือแก้ไขโค้ด - เลื่อนลงและแทนที่โค้ดในบรรทัดที่ 93 หรือใกล้เคียงที่ระบุว่า
prompt: userMsg
ด้วยโค้ดต่อไปนี้prompt: preparePrompt(userMsg, messages),
- บันทึกไฟล์
- กลับไปที่เว็บแอปที่ทำงานในเบราว์เซอร์
- พิมพ์คำทักทาย (เช่น
hi
) อีกครั้ง แล้วคลิกส่ง - รอสักครู่เพื่อให้แชทบอทตอบกลับ
แชทบ็อตจะตอบกลับด้วยความรู้ที่อิงตามบริบทที่ระบุใน src/app/lib/context.md
แม้ว่าคุณจะไม่ได้พิมพ์คำขอที่เฉพาะเจาะจง แต่โมเดล Gemini ที่อยู่เบื้องหลังจะสร้างคำแนะนำที่ปรับเปลี่ยนในแบบของคุณโดยอิงตามบริบทนี้ รวมถึงวันที่/เวลาปัจจุบัน ตอนนี้คุณสามารถระบุคำถามติดตามและเจาะลึกได้แล้ว
บริบทที่ขยายนี้มีความสำคัญต่อแชทบอท แต่คุณไม่ควรแสดงต่อผู้ใช้เว็บแอป วิธีซ่อนมีดังนี้
- เปิดไฟล์
src/app/page.tsx
ในเครื่องมือแก้ไขโค้ด - เลื่อนลงและแทนที่โค้ดในหรือใกล้บรรทัดที่ 56 ที่ระบุว่า
...doc.data(),
ด้วยโค้ดต่อไปนี้...prepareMessage(doc.data()),
- บันทึกไฟล์
- กลับไปที่เว็บแอปที่ทำงานในเบราว์เซอร์
- โหลดหน้าเว็บซ้ำ
นอกจากนี้ คุณยังลองใช้ความสามารถในการสนทนากับแชทบ็อตโดยใช้บริบทในอดีตได้ด้วย
- ในกล่องข้อความพิมพ์ข้อความ ให้ถามคำถาม เช่น
Any other interesting talks about AI?
แชทบอทจะตอบกลับ - ในกล่องข้อความพิมพ์ข้อความ ให้ถามคำถามติดตามผลที่เกี่ยวข้องกับคำถามก่อนหน้า
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"
- ไปที่ส่วนขยาย "งานมัลติโมดัลด้วย Gemini API"
- คลิกติดตั้งในคอนโซล Firebase
- เลือกโปรเจ็กต์ Firebase
- คลิกถัดไป > ถัดไป > ถัดไป จนกว่าจะถึงส่วนกำหนดค่าส่วนขยาย
- ในเมนูผู้ให้บริการ Gemini API ให้เลือกว่าต้องการใช้ Gemini API จาก AI ของ Google หรือ Vertex AI สำหรับนักพัฒนาแอปที่ใช้ Firebase เราขอแนะนำให้ใช้
Vertex AI
- ในกล่องข้อความเส้นทางคอลเล็กชัน Firestore ให้ป้อน
gallery
- ในกล่องข้อความพรอมต์ ให้ป้อน
Please describe the provided image; if there is no image, say "no image"
- ในกล่องข้อความฟิลด์รูปภาพ ให้ป้อน
image
- ในเมนูตำแหน่ง Cloud Functions ให้เลือกตำแหน่งที่ต้องการ (เช่น
Iowa (us-central1)
หรือตำแหน่งที่คุณระบุไว้ก่อนหน้านี้สำหรับฐานข้อมูล Firestore) - ปล่อยให้ค่าอื่นๆ ทั้งหมดเป็นค่าเริ่มต้น
- ในเมนูผู้ให้บริการ Gemini API ให้เลือกว่าต้องการใช้ Gemini API จาก AI ของ Google หรือ Vertex AI สำหรับนักพัฒนาแอปที่ใช้ Firebase เราขอแนะนำให้ใช้
- คลิกติดตั้งส่วนขยาย แล้วรอให้ระบบติดตั้งส่วนขยาย
ลองใช้ส่วนขยาย "งานมัลติโมดัลด้วย Gemini API"
แม้ว่าเป้าหมายของ Codelab นี้คือการโต้ตอบกับส่วนขยาย "งานมัลติโมดัลด้วย Gemini API" ผ่านเว็บแอป แต่การเรียนรู้วิธีการทำงานของส่วนขยายโดยลองใช้ในคอนโซล Firebase ก่อนก็เป็นประโยชน์เช่นกัน
ส่วนขยายจะทริกเกอร์เมื่อใดก็ตามที่มีการสร้างเอกสาร Firestore ภายใต้คอลเล็กชัน users/{uid}/gallery
ซึ่งคุณสามารถทำได้ในคอนโซล Firebase จากนั้นส่วนขยายจะใช้ URL ของรูปภาพ Cloud Storage ในเอกสาร Cloud Firestore และส่งเป็นส่วนหนึ่งของพรอมต์มัลติโมดอลในการเรียกใช้ Gemini API
ก่อนอื่น ให้อัปโหลดรูปภาพไปยังที่เก็บข้อมูล Cloud Storage โดยทำดังนี้
- ไปที่พื้นที่เก็บข้อมูลภายในโปรเจ็กต์ Firebase
- คลิก
สร้างโฟลเดอร์
- ในกล่องข้อความชื่อโฟลเดอร์ ให้ป้อน
gallery
- คลิกเพิ่มโฟลเดอร์
- ในโฟลเดอร์
gallery
ให้คลิกอัปโหลดไฟล์ - เลือกไฟล์รูปภาพ JPEG เพื่ออัปโหลด
จากนั้นเพิ่ม URL ของ Cloud Storage สำหรับรูปภาพลงในเอกสาร Firestore (ซึ่งเป็นทริกเกอร์สำหรับส่วนขยาย)
- ไปที่ Firestore ภายในโปรเจ็กต์ Firebase
- คลิก
เริ่มการรวบรวมในคอลัมน์แรก
- ในกล่องข้อความรหัสคอลเล็กชัน ให้ป้อน
gallery
แล้วคลิกถัดไป - วิธีเพิ่มเอกสารลงในคอลเล็กชัน
- ในกล่องข้อความรหัสเอกสาร ให้คลิกรหัสอัตโนมัติ
- ในกล่องข้อความฟิลด์ ให้ป้อน
image
ในช่องค่า ให้ป้อน URI ตำแหน่งที่จัดเก็บของรูปภาพที่คุณเพิ่งอัปโหลด
- คลิกเพิ่มช่อง
- ในกล่องข้อความฟิลด์ ให้ป้อน
published
ในช่อง Type ให้เลือก boolean เลือกtrue
ในช่องค่า - คลิกบันทึกแล้วรอสักครู่
ตอนนี้คอลเล็กชัน gallery
มีเอกสารที่มีคำตอบสำหรับคำค้นหาของคุณแล้ว
ใช้แกลเลอรีรูปภาพของเว็บแอป
- ในเบราว์เซอร์ ให้กลับไปที่แท็บที่มีเว็บแอป Friendly Conf ที่ทำงานในเครื่อง
- คลิกแท็บการนำทางแกลเลอรี
- คุณจะเห็นแกลเลอรีรูปภาพที่อัปโหลดและคำอธิบายที่ AI สร้างขึ้น โดยควรมีรูปภาพที่คุณอัปโหลดไว้ก่อนหน้านี้ในโฟลเดอร์
gallery
ในที่เก็บข้อมูล - คลิกปุ่มเพื่อ "อัปโหลด" แล้วเลือกรูปภาพ JPEG อื่น
- รอสักครู่เพื่อให้รูปภาพแสดงในแกลเลอรี หลังจากนั้นไม่นาน ระบบจะแสดงรายละเอียดที่ 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 ของคุณเอง (และมีเพียงซอร์สโค้ดที่จัดเก็บไว้ในเครื่องเท่านั้น)
- ในเทอร์มินัล ให้เริ่มต้นใช้งาน Firebase Hosting โดยเรียกใช้คำสั่งต่อไปนี้
firebase experiments:enable webframeworks firebase init hosting
- สำหรับพรอมต์
Detected an existing Next.js codebase in your current directory, should we use this?
ให้กดY
- สำหรับพรอมต์
In which region would you like to host server-side content, if applicable?
ให้เลือกสถานที่ตั้งเริ่มต้นหรือสถานที่ตั้งที่คุณใช้ก่อนหน้านี้ใน Codelab นี้ จากนั้นกดEnter
(หรือreturn
ใน macOS) - สำหรับพรอมต์
Set up automatic builds and deploys with GitHub?
ให้กดN
- ทำให้เว็บแอปใช้งานได้ในโฮสติ้งโดยเรียกใช้คำสั่งนี้
firebase deploy --only hosting
เสร็จเรียบร้อย หากคุณอัปเดตแอปและต้องการทําให้เวอร์ชันใหม่นั้นใช้งานได้ เพียงเรียกใช้ firebase deploy --only hosting
อีกครั้ง แล้วโฮสติ้งของ Firebase จะสร้างและทําให้แอปใช้งานได้อีกครั้ง
ตัวเลือกที่ 2: ทำให้ใช้งานได้โดยใช้ Firebase App Hosting
ใช้ตัวเลือกนี้หากต้องการให้มีการติดตั้งใช้งานอัตโนมัติทุกครั้งที่คุณพุชการเปลี่ยนแปลงไปยังที่เก็บ GitHub ของคุณเอง
- คอมมิตการเปลี่ยนแปลงไปยัง GitHub
- ในคอนโซล Firebase ให้ไปที่ App Hosting ภายในโปรเจ็กต์ Firebase
- คลิกเริ่มต้นใช้งาน > เชื่อมต่อกับ GitHub
- เลือกบัญชี GitHub และที่เก็บ คลิกถัดไป
- ในการตั้งค่าการติดตั้งใช้งาน > ไดเรกทอรีราก ให้ป้อนชื่อโฟลเดอร์ที่มีซอร์สโค้ด (หาก
package.json
ไม่ได้อยู่ในไดเรกทอรีรากของที่เก็บ) - สำหรับสาขาที่ใช้งานจริง ให้เลือกสาขา main ของที่เก็บ GitHub คลิกถัดไป
- ป้อนรหัสสำหรับแบ็กเอนด์ (เช่น
chatbot
) - คลิกเสร็จสิ้นและทำให้ใช้งานได้
การทำให้ใช้งานได้ใหม่จะใช้เวลาสักครู่จึงจะพร้อม คุณตรวจสอบสถานะการติดตั้งใช้งานได้ในส่วน 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" เพื่อสร้างคำอธิบายรูปภาพสำหรับรูปภาพที่อัปโหลดโดยอัตโนมัติ
ขั้นตอนถัดไป
- ทดลองใช้พรอมต์และใช้ประโยชน์จากหน้าต่างบริบทขนาดใหญ่ใน Google AI Studio หรือ Vertex AI Studio
- ดูข้อมูลเกี่ยวกับการค้นหาด้วยการสร้างการดึงข้อมูลที่เพิ่มประสิทธิภาพด้วย AI (RAG)
- ลองใช้ Codelab แบบเรียนรู้ด้วยตนเองที่แสดงวิธีเพิ่มแชทบ็อทลงในแอป Firebase ที่มีอยู่โดยใช้ Genkit (ซึ่งเป็นบริการเฟรมเวิร์ก AI ใหม่)
- ดูข้อมูลเกี่ยวกับความสามารถในการค้นหาความคล้ายคลึงกันใน Firestore และ Cloud SQL สำหรับ PostgreSQL
- สอนแชทบอทให้โทรเข้าแอปที่มีอยู่ด้วยการเรียกใช้ฟังก์ชัน