1. ก่อนเริ่มต้น
ใน Codelab นี้ คุณจะได้เรียนรู้วิธีใช้ Firebase Genkit ในการผสานรวม Generative AI เข้ากับแอปของคุณ Firebase Genkit เป็นเฟรมเวิร์กโอเพนซอร์สที่จะช่วยคุณสร้าง ติดตั้งใช้งาน และตรวจสอบแอปที่ทำงานด้วยระบบ AI ที่พร้อมใช้งานจริง
Genkit ออกแบบมาสำหรับนักพัฒนาแอป เพื่อช่วยให้คุณผสานรวมความสามารถของ AI ที่ทรงพลังเข้ากับแอปได้ง่ายๆ ด้วยรูปแบบและกระบวนทัศน์ที่คุ้นเคย เครื่องมือนี้สร้างโดยทีม Firebase โดยใช้ประโยชน์จากประสบการณ์ของเราในการสร้างเครื่องมือที่นักพัฒนาซอฟต์แวร์นับล้านทั่วโลกใช้งาน
ข้อกำหนดเบื้องต้น
- มีความคุ้นเคยกับ Firestore, Node.js และ TypeScript
สิ่งที่คุณจะได้เรียนรู้
- วิธีสร้างแอปที่ชาญฉลาดยิ่งขึ้นด้วยความสามารถในการค้นหาเวกเตอร์ที่คล้ายกับเวกเตอร์ขั้นสูงของ Firestore
- วิธีใช้ Generative AI ในแอปด้วย Firebase Genkit
- เตรียมโซลูชันให้พร้อมสำหรับการติดตั้งใช้งานและการผสานรวม
สิ่งที่ต้องมี
- เบราว์เซอร์ที่คุณเลือก เช่น Google Chrome
- สภาพแวดล้อมในการพัฒนาซอฟต์แวร์ที่มีตัวแก้ไขโค้ดและเทอร์มินัล
- บัญชี Google สำหรับสร้างและจัดการโปรเจ็กต์ Firebase
2. ตรวจสอบเว็บแอปและบริการระบบคลาวด์ที่ใช้
ในส่วนนี้ คุณจะได้ตรวจสอบเว็บแอปที่คุณจะสร้างด้วย Codelab นี้ รวมถึงเรียนรู้เกี่ยวกับบริการระบบคลาวด์ที่คุณจะใช้
เว็บแอป
ใน Codelab นี้ คุณจะได้ทำงานในฐานของโค้ดของแอปชื่อ Compass ซึ่งเป็นแอปวางแผนวันหยุด ผู้ใช้สามารถเลือกจุดหมาย ดูกิจกรรมที่จุดหมาย และสร้างแผนการเดินทางสำหรับการเดินทาง
ใน Codelab นี้ คุณจะได้ติดตั้งฟีเจอร์ใหม่ 2 อย่างที่มีไว้เพื่อปรับปรุงการมีส่วนร่วมของผู้ใช้กับหน้าแรกของแอป โดยทั้ง 2 ฟีเจอร์นี้ขับเคลื่อนโดย Generative AI
- ปัจจุบันแอปแสดงรายการปลายทางแบบคงที่ คุณจะเปลี่ยนเป็นแบบไดนามิกได้
- คุณจะใช้แผนการเดินทางที่มีการป้อนข้อมูลอัตโนมัติเพื่อเพิ่มความสามารถในการดึงดูดผู้ใช้
บริการที่ใช้
ใน Codelab นี้ คุณจะต้องใช้บริการและฟีเจอร์ของ Firebase และ Cloud มากมาย โดยมีโค้ดเริ่มต้นสำหรับสิ่งเหล่านี้ให้คุณเอง ตารางต่อไปนี้แสดงบริการที่คุณจะใช้และเหตุผลในการใช้บริการ
บริการ | เหตุผลในการใช้ |
คุณใช้ Genkit เพื่อนำ Generative AI ไปใช้ในแอปพลิเคชัน Node.js / Next.js | |
คุณเก็บข้อมูลใน Cloud Firestore ซึ่งจะนำไปใช้เพื่อค้นหาความคล้ายคลึงกันของเวกเตอร์ | |
คุณใช้โมเดลพื้นฐานจาก Vertex AI (เช่น Gemini) เพื่อขับเคลื่อนฟีเจอร์ AI | |
คุณสามารถเลือกใช้โฮสติ้งแอป Firebase ใหม่ที่มีประสิทธิภาพยิ่งขึ้นเพื่อแสดงเว็บแอป Next.js แบบไดนามิกของคุณ (เชื่อมต่อกับที่เก็บ GitHub) |
3. ตั้งค่าสภาพแวดล้อมในการพัฒนาซอฟต์แวร์
ยืนยันเวอร์ชัน Node.js
- ในเทอร์มินัล ให้ตรวจสอบว่าคุณได้ติดตั้ง Node.js เวอร์ชัน 20.0.0 ขึ้นไปแล้ว ดังนี้
node -v
- หากคุณไม่มี Node.js เวอร์ชัน 20.0.0 ขึ้นไป ให้ดาวน์โหลด LTS เวอร์ชันล่าสุดและติดตั้ง
รับซอร์สโค้ดสำหรับ Codelab
หากคุณมีบัญชี GitHub ให้ทำดังนี้
- สร้างที่เก็บใหม่โดยใช้เทมเพลตจาก github.com/FirebaseExtended/codelab-ai-genkit-rag
- สร้างโคลนของที่เก็บ GitHub ของ Codelab ที่คุณเพิ่งสร้าง โดยทำดังนี้
git clone https://github.com/<your-github-handle>/codelab-ai-genkit-rag
หากยังไม่ได้ติดตั้ง git หรือไม่ต้องการสร้างที่เก็บใหม่ ให้ทำดังนี้
ดาวน์โหลดที่เก็บ GitHub เป็นไฟล์ ZIP
ตรวจสอบโครงสร้างโฟลเดอร์
ค้นหาที่เก็บที่โคลนในเครื่องของคุณและตรวจสอบโครงสร้างโฟลเดอร์
โฟลเดอร์ | คำอธิบาย |
| รหัส Genkit ของแบ็กเอนด์ |
| เครื่องมือบรรทัดคำสั่งของ Helper เพื่อเติมข้อมูลคอลเล็กชัน Firestore ล่วงหน้าอย่างรวดเร็ว |
*อื่นๆ ที่เหลือ | รหัสเว็บแอป Next.js |
โฟลเดอร์รากจะมีไฟล์ 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
- ในเทอร์มินัล ให้เข้าสู่ระบบ Firebase ดังนี้
หากเทอร์มินัลระบุว่าคุณลงชื่อเข้าใช้ Firebase แล้ว ให้ข้ามไปที่ส่วนตั้งค่าโปรเจ็กต์ Firebase ของ Codelab นี้firebase login
- ในเทอร์มินัล ให้กรอก
Y
หรือN
โดยขึ้นอยู่กับว่าคุณต้องการให้ Firebase รวบรวมข้อมูล (เลือกแบบใดแบบหนึ่งก็ได้สำหรับ Codelab นี้) - ในเบราว์เซอร์ ให้เลือกบัญชี Google แล้วคลิกอนุญาต
ติดตั้ง gcloud CLI ของ Google Cloud
- ติดตั้ง gcloud CLI
- ในเทอร์มินัล ให้เข้าสู่ระบบ Google Cloud ดังนี้
gcloud auth login
4. สร้างโปรเจ็กต์ Firebase
ในส่วนนี้ คุณจะตั้งค่าโปรเจ็กต์ Firebase และลงทะเบียนเว็บแอป Firebase ในโปรเจ็กต์ดังกล่าว นอกจากนี้คุณยังเปิดใช้บริการบางรายการที่เว็บแอปตัวอย่างใช้อยู่ได้ภายหลังใน Codelab นี้
ขั้นตอนทั้งหมดในส่วนนี้ดำเนินการในคอนโซล Firebase
สร้างโปรเจ็กต์ Firebase
- ลงชื่อเข้าใช้คอนโซล Firebase โดยใช้บัญชี Google เดียวกันกับที่ใช้ในขั้นตอนก่อนหน้า
- คลิกสร้างโปรเจ็กต์ แล้วป้อนชื่อโปรเจ็กต์ (เช่น
Compass Codelab
)
จำรหัสโปรเจ็กต์ที่กำหนดให้โดยอัตโนมัติสำหรับโปรเจ็กต์ Firebase ของคุณ (หรือคลิกไอคอนแก้ไขเพื่อตั้งค่ารหัสโปรเจ็กต์ที่ต้องการ) คุณจะต้องใช้รหัสนี้ในภายหลังเพื่อระบุโปรเจ็กต์ Firebase ใน Firebase CLI หากลืมรหัส คุณสามารถค้นหารหัสในภายหลังได้ทุกเมื่อในการตั้งค่าโปรเจ็กต์ - คลิกต่อไป
- หากได้รับข้อความแจ้ง ให้ตรวจสอบและยอมรับข้อกำหนดของ Firebase แล้วคลิกดำเนินการต่อ
- สําหรับ Codelab นี้ คุณไม่ต้องใช้ Google Analytics ดังนั้นให้ปิดตัวเลือก Google Analytics
- คลิกสร้างโปรเจ็กต์ แล้วรอให้โปรเจ็กต์จัดสรร แล้วคลิกต่อไป
เพิ่มเว็บแอปลงในโปรเจ็กต์ Firebase
- ไปที่หน้าจอภาพรวมโปรเจ็กต์ในโปรเจ็กต์ Firebase แล้วคลิก เว็บ
- ในกล่องข้อความชื่อเล่นแอป ให้ป้อนชื่อเล่นของแอปที่จำได้ง่าย เช่น
My Compass Codelab App
คุณเว้นช่องทำเครื่องหมายสำหรับการตั้งค่าโฮสติ้งของ Firebase ไว้ได้โดยไม่ต้องเลือก เนื่องจากคุณสามารถเลือกตั้งค่าบริการโฮสติ้งในขั้นตอนสุดท้ายของ Codelab นี้ได้ - คลิกลงทะเบียนแอป > ไปที่คอนโซล
เยี่ยมเลย คุณได้ลงทะเบียนเว็บแอปในโปรเจ็กต์ Firebase ใหม่แล้ว
อัปเกรดแผนการเรียกเก็บเงินของ Firebase
หากต้องการใช้ Firebase Genkit และ Vertex AI (รวมถึงบริการระบบคลาวด์ที่สำคัญ) คุณต้องอัปเกรดโปรเจ็กต์ Firebase เพื่อเปิดใช้การเรียกเก็บเงิน
หากต้องการอัปเกรดแผนการเรียกเก็บเงินของโปรเจ็กต์ ให้ทำตามขั้นตอนต่อไปนี้
- ไปที่แผนการเรียกเก็บเงินของ Firebase ในโปรเจ็กต์ Firebase
- ในกล่องโต้ตอบแพ็กเกจการเรียกเก็บเงินของ Firebase ให้เลือกแพ็กเกจ Blaze แล้วซื้อ
เปิดใช้ Cloud Firestore
- ไปที่สร้าง > ฐานข้อมูล Firestore โดยใช้แผงการนำทางด้านซ้าย
- คลิกสร้างฐานข้อมูล
- ปล่อยการตั้งค่ารหัสฐานข้อมูลเป็น
(default)
- เลือกตำแหน่ง Cloud Firestore ที่ต้องการ (หรือปล่อยไว้เป็นค่าเริ่มต้น)
- คลิกถัดไป
- เลือกเริ่มต้นในโหมดทดสอบ
- คลิกสร้าง
เปิดใช้ Vertex AI
ใช้ gcloud
CLI เพื่อตั้งค่า Vertex AI สำหรับคำสั่งทั้งหมดในหน้านี้ โปรดแทนที่ YOUR_PROJECT_ID
ด้วยรหัสของโปรเจ็กต์ Firebase
- ในเทอร์มินัล ให้ตั้งค่าโปรเจ็กต์เริ่มต้นสำหรับ Google Cloud SDK ดังนี้
gcloud config set project YOUR_PROJECT_ID
- หากคุณเห็นข้อความเตือนว่า "คำเตือน: โปรเจ็กต์ที่ใช้งานอยู่ของคุณไม่ตรงกับโปรเจ็กต์โควต้าในไฟล์ข้อมูลเข้าสู่ระบบเริ่มต้นของแอปพลิเคชันในเครื่อง ซึ่งอาจทำให้เกิดปัญหาโควต้าที่ไม่คาดคิด" แล้วเรียกใช้คำสั่งต่อไปนี้เพื่อตั้งค่าโปรเจ็กต์โควต้า
gcloud auth application-default set-quota-project YOUR_PROJECT_ID
- เปิดใช้บริการ Vertex AI ในโปรเจ็กต์ของคุณ
gcloud services enable aiplatform.googleapis.com
- ให้สิทธิ์แก่บัญชีบริการดังนี้
gcloud projects add-iam-policy-binding YOUR_PROJECT_ID \ --member "serviceAccount:firebase-app-hosting-compute@YOUR_PROJECT_ID.iam.gserviceaccount.com" \ --role "roles/aiplatform.user"
5. ตั้งค่าเว็บแอป
หากต้องการเรียกใช้เว็บแอป คุณจะต้องเรียกใช้คำสั่งในเทอร์มินัลและเพิ่มโค้ดลงในตัวแก้ไขโค้ด สำหรับคำสั่งทั้งหมดในหน้านี้ โปรดแทนที่ YOUR_PROJECT_ID
ด้วยรหัสของโปรเจ็กต์ Firebase
กำหนดค่า Firebase CLI เพื่อกำหนดเป้าหมายโปรเจ็กต์
- ในเทอร์มินัล ให้ไปที่ไดเรกทอรีรากของโปรเจ็กต์ Codelab
- หากต้องการทำให้ Firebase CLI เรียกใช้คำสั่งทั้งหมดกับโปรเจ็กต์ Firebase ของคุณ ให้เรียกใช้คำสั่งต่อไปนี้
firebase use YOUR_PROJECT_ID
นำเข้าข้อมูลตัวอย่างไปยัง Firestore
Codelab นี้มีข้อมูลตัวอย่างที่สร้างไว้ล่วงหน้าสำหรับ Firestore เพื่อให้คุณเริ่มต้นใช้งานได้อย่างรวดเร็ว
- หากต้องการอนุญาตให้ Codebase ในเครื่องเรียกใช้โค้ดที่โดยปกติแล้วจะใช้บัญชีบริการ ให้เรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัล
ซึ่งจะเป็นการเปิดแท็บใหม่ในเบราว์เซอร์ของคุณ เข้าสู่ระบบโดยใช้บัญชี Google เดียวกับที่คุณใช้ในขั้นตอนก่อนหน้านี้gcloud auth application-default login
- หากต้องการนำเข้าข้อมูล Firestore ตัวอย่าง ให้เรียกใช้คำสั่งต่อไปนี้
cd load-firestore-data npm ci node index.js YOUR_PROJECT_ID cd ..
- ตรวจสอบว่าได้เพิ่มข้อมูลลงในฐานข้อมูลเรียบร้อยแล้วโดยไปที่ส่วน Firestore ของโปรเจ็กต์ Firebase ในคอนโซล Firebase คุณจะเห็นสคีมาข้อมูลที่นำเข้าและเนื้อหาในไฟล์แสดงอยู่
เชื่อมต่อเว็บแอปกับโปรเจ็กต์ Firebase
คุณต้องเชื่อมโยงโค้ดเบสของเว็บแอปกับโปรเจ็กต์ Firebase ที่ถูกต้องเพื่อใช้บริการ เช่น ฐานข้อมูล คุณต้องเพิ่มการกำหนดค่า Firebase ลงในฐานของโค้ดของแอป การกำหนดค่านี้ประกอบด้วยค่าที่สำคัญ เช่น รหัสโปรเจ็กต์ คีย์ API และรหัสแอปของแอป รวมทั้งค่าอื่นๆ ที่อนุญาตให้แอปโต้ตอบกับ Firebase ได้
- รับการกำหนดค่า Firebase ของแอป
- ไปที่โปรเจ็กต์ Firebase ในคอนโซล Firebase
- ในแผงด้านซ้าย ให้คลิกไอคอนรูปเฟืองข้างภาพรวมโครงการ แล้วเลือกการตั้งค่าโปรเจ็กต์
- ใน "แอปของคุณ" ให้เลือกเว็บแอป
- ในส่วน "การตั้งค่าและการกำหนดค่า SDK" เลือกตัวเลือก Config
- คัดลอกข้อมูลโค้ด โดยขึ้นต้นด้วย
const firebaseConfig ...
- เพิ่มการกำหนดค่า Firebase ลงในฐานของโค้ดของเว็บแอป โดยทำดังนี้
- เปิดไฟล์
src/lib/genkit/genkit.config.ts
ในตัวแก้ไขโค้ด - แทนที่ส่วนที่เกี่ยวข้องด้วยโค้ดที่คุณคัดลอกไว้
- บันทึกไฟล์
- เปิดไฟล์
แสดงตัวอย่างเว็บแอปในเบราว์เซอร์
- ในเทอร์มินัล ให้ติดตั้งทรัพยากร Dependency แล้วเรียกใช้เว็บแอปด้วยคำสั่งต่อไปนี้
npm install npm run dev
- ในเบราว์เซอร์ ให้ไปที่ URL โฮสติ้งที่โฮสต์ในเครื่องเพื่อดูเว็บแอป ตัวอย่างเช่น ในกรณีส่วนใหญ่ URL จะเป็น http://localhost:3000/ หรือชื่ออื่นที่คล้ายกัน
Compass เป็นแอป Next.js ที่ใช้ React Server Components ซึ่งเป็นหน้าแรก
คลิกค้นหาการเดินทางในฝัน ตอนนี้คุณจะเห็นว่าปัจจุบันระบบแสดงข้อมูลแบบฮาร์ดโค้ดสำหรับปลายทางแบบคงที่บางแห่ง ดังนี้
สำรวจได้เลย เมื่อพร้อมที่จะดำเนินการต่อแล้ว ให้คลิกปุ่มหน้าแรก (ที่มุมบนขวา)
6. สำรวจ Generative AI ด้วย Genkit
ตอนนี้คุณพร้อมใช้พลังของ Generative AI ในแอปพลิเคชันของคุณแล้ว ส่วนของ Codelab นี้จะแนะนำคุณตลอดขั้นตอนการใช้ฟีเจอร์ที่แนะนำปลายทางโดยอิงตามแรงบันดาลใจที่ผู้ใช้ให้ไว้ คุณจะใช้ Firebase Genkit และ Vertex AI ของ Google Cloud เป็นผู้ให้บริการสำหรับโมเดล Generative (คุณจะใช้ Gemini)
Genkit จะจัดเก็บการติดตามและสถานะโฟลว์ได้ (ซึ่งช่วยให้คุณตรวจสอบผลลัพธ์ของการดำเนินการของโฟลว์ Genkit ได้) คุณจะใช้ Firestore ในการจัดเก็บการติดตามเหล่านี้ใน Codelab ได้
ขั้นตอนสุดท้ายใน Codelab นี้ คุณจะต้องทำให้แอป Genkit ใช้งานได้ใน Firebase App Hosting
เชื่อมต่อแอป Genkit กับโปรเจ็กต์ Firebase
ก่อนจะเริ่ม Genkit ได้ คุณต้องเชื่อมโยงฐานของโค้ดกับโปรเจ็กต์ Firebase ที่ถูกต้องเพื่อใช้บริการของโปรเจ็กต์ เช่น ฐานข้อมูล คุณต้องเพิ่มการกำหนดค่า Firebase ลงในฐานของโค้ดของแอป Genkit การกำหนดค่านี้ประกอบด้วยค่าที่สำคัญ เช่น รหัสโปรเจ็กต์ คีย์ API และรหัสแอปของแอป รวมทั้งค่าอื่นๆ ที่อนุญาตให้แอปโต้ตอบกับ Firebase ได้
- รับการกำหนดค่า Firebase ของแอป
- ไปที่โปรเจ็กต์ Firebase ในคอนโซล Firebase
- ในแผงด้านซ้าย ให้คลิกไอคอนรูปเฟืองข้างภาพรวมโครงการ แล้วเลือกการตั้งค่าโปรเจ็กต์
- ใน "แอปของคุณ" ให้เลือกเว็บแอป
- ในส่วน "การตั้งค่าและการกำหนดค่า SDK" เลือกตัวเลือก Config
- คัดลอกข้อมูลโค้ด โดยขึ้นต้นด้วย
const firebaseConfig ...
- เพิ่มการกำหนดค่า Firebase ของแอปไปยังฐานของโค้ดของแอป Genkit โดยทำดังนี้
- เปิดไฟล์
genkit-functions/src/lib/genkit.config.ts
ในตัวแก้ไขโค้ด - แทนที่ส่วนที่เกี่ยวข้องด้วยโค้ดที่คุณคัดลอกไว้
- บันทึกไฟล์
- เปิดไฟล์
เปิด UI สำหรับนักพัฒนาซอฟต์แวร์ Genkit
Genkit มาพร้อมกับ UI บนเว็บที่ให้คุณโต้ตอบกับ LLM, ขั้นตอนของ Genkit, รีทรีฟเวอร์ และคอมโพเนนต์ AI อื่นๆ ได้
- เปิด UI สำหรับนักพัฒนาซอฟต์แวร์ Genkit:
- เปิดหน้าต่างเทอร์มินัลใหม่
- ไปที่รูทของไดเรกทอรี
genkit-functions
- เรียกใช้คำสั่งต่อไปนี้เพื่อเริ่ม UI สำหรับนักพัฒนาซอฟต์แวร์ Genkit
cd genkit-functions npx genkit start
- ในเบราว์เซอร์ ให้ไปที่ URL ของ Genkit ที่โฮสต์ไว้ในเครื่อง โดยทั่วไป URL จะเป็น http://localhost:4000/
โต้ตอบกับ Gemini
ตอนนี้คุณสามารถใช้ UI สำหรับนักพัฒนาซอฟต์แวร์ Genkit เพื่อโต้ตอบกับโมเดลที่รองรับหรือคอมโพเนนต์ AI อื่นๆ เช่น พรอมต์ รีทรีฟเวอร์ และขั้นตอน Genkit
เช่น ลองขอให้ Gemini แนะนำวันหยุดพักผ่อนในวันหยุด ดูว่าคุณจะใช้คำสั่งของระบบเพื่อกำหนดลักษณะการทำงานของโมเดลตามความต้องการเฉพาะของคุณได้อย่างไร ซึ่งวิธีนี้ยังใช้ได้กับโมเดลที่ไม่รองรับคำสั่งของระบบโดยตรงด้วย
จัดการข้อความแจ้ง
Firebase Genkit เปิดตัว Dotprompt ซึ่งเป็นปลั๊กอินและรูปแบบข้อความที่ออกแบบมาเพื่อเพิ่มประสิทธิภาพการสร้างและจัดการพรอมต์ Generative AI แนวคิดหลักของ Dotprompt คือถือว่าข้อความแจ้งเป็นโค้ด ซึ่งช่วยให้คุณเขียน ดูแลรักษา และควบคุมเวอร์ชันควบคู่กับโค้ดของแอปพลิเคชัน
หากต้องการใช้ Dotprompt ให้เริ่มต้นด้วย Hello-world:
- เปิดไฟล์
genkit-functions/prompts/1-hello-world.prompt
ในตัวแก้ไขโค้ด - เปิด
dotprompt/1-hello-world
ใน UI ของนักพัฒนาซอฟต์แวร์ Genkit - ใช้ชื่อหรือรหัสภาษาที่คุณคุ้นเคย หรือปล่อยไว้เป็นสตริงว่าง
- คลิก Run
- ลองใช้ค่าที่แตกต่างกันสัก 2-3 ค่า โมเดลภาษาขนาดใหญ่สามารถเข้าใจพรอมต์ที่เป็นตัวย่อ สะกดผิด หรือไม่สมบูรณ์ในคำค้นหาง่ายๆ อย่างเช่นตัวอย่างนี้
เพิ่มคุณภาพเอาต์พุตด้วยข้อมูลที่มีโครงสร้าง
นอกเหนือจากการสร้างข้อความธรรมดาแล้ว Genkit ยังช่วยให้คุณวางโครงสร้างผลลัพธ์เพื่อการนำเสนอและการผสานรวมที่ดียิ่งขึ้นภายใน UI ของแอปได้อีกด้วย การกำหนดสคีมาจะช่วยให้คุณสั่งให้ LLM สร้างข้อมูลที่มีโครงสร้างที่สอดคล้องกับรูปแบบที่คุณต้องการได้
การสำรวจสคีมาเอาต์พุต
คุณยังระบุสคีมาเอาต์พุตของการเรียกใช้ LLM ได้ด้วย
- ในตัวแก้ไขโค้ด ให้ตรวจสอบไฟล์ข้อความแจ้งต่อไปนี้
- เปิดไฟล์
dotprompt/2-simple-itinerary
- ตรวจสอบสคีมาอินพุตและเอาต์พุตที่กำหนดไว้
- เปิดไฟล์
- โต้ตอบกับ UI:
- ไปที่ส่วน
dotprompt/2-simple-itinerary
ใน UI สำหรับนักพัฒนาซอฟต์แวร์ Genkit - ป้อนข้อมูลด้วยการใส่ข้อมูลตัวอย่างในช่อง
place
และinterests
{ "interests": [ "Museums" ], "place": "Paris" }
- คลิกเรียกใช้
- ไปที่ส่วน
ทําความเข้าใจเอาต์พุตที่มาจากสคีมา
โปรดสังเกตว่าเอาต์พุตที่สร้างขึ้นสอดคล้องกับสคีมาที่กำหนดไว้อย่างไร การระบุโครงสร้างที่ต้องการเป็นการสั่งให้ LLM สร้างข้อมูลที่แยกวิเคราะห์และผสานรวมในแอปพลิเคชันของคุณได้อย่างง่ายดาย Genkit จะตรวจสอบเอาต์พุตของสคีมาโดยอัตโนมัติเพื่อให้แน่ใจว่าข้อมูลสมบูรณ์
นอกจากนี้ คุณยังกำหนดค่า Genkit เพื่อลองอีกครั้งหรือพยายามซ่อมแซมเอาต์พุตหากไม่ตรงกับสคีมา
ประโยชน์หลักๆ ของสคีมาเอาต์พุต
- การผสานรวมที่ง่ายขึ้น: รวมข้อมูลที่มีโครงสร้างลงในองค์ประกอบ UI ของแอปได้ง่ายๆ
- การตรวจสอบข้อมูล: ตรวจสอบความถูกต้องและความสอดคล้องของเอาต์พุตที่สร้างขึ้น
- การจัดการข้อผิดพลาด: ใช้กลไกเพื่อแก้ไขสคีมาที่ไม่ตรงกัน
การใช้ประโยชน์จากสคีมาเอาต์พุตจะช่วยยกระดับประสบการณ์การใช้งาน Genkit โดยช่วยให้คุณสร้าง Structured Data ที่ปรับแต่งมาเพื่อประสบการณ์ของผู้ใช้ที่สมบูรณ์และหลากหลายมากยิ่งขึ้น
ใช้การป้อนข้อมูลหลายรูปแบบ
ลองจินตนาการว่าแอปของคุณแนะนำสถานที่พักผ่อนวันหยุดที่ปรับเปลี่ยนในแบบของคุณโดยใช้รูปภาพที่ผู้ใช้คิดว่าเป็นแรงบันดาลใจ นอกจากนี้ Genkit ยังผสานรวมเข้ากับโมเดล Generative แบบหลายโมดัลและยังช่วยส่งเสริมคุณในการต่อยอดวิสัยทัศน์นี้
- ในตัวแก้ไขโค้ด ให้ตรวจสอบไฟล์ข้อความแจ้งต่อไปนี้
- เปิดไฟล์
genkit-functions/prompts/imgDescription.prompt
- โปรดสังเกตการรวม
{{media url=this}}
ซึ่งเป็นองค์ประกอบไวยากรณ์ของแฮนเดิลบาร์ที่ช่วยให้ใส่รูปภาพลงในพรอมต์ได้สะดวกขึ้น
- เปิดไฟล์
- โต้ตอบกับ UI:
- เปิดข้อความแจ้ง
dotprompt/imgDescription
ใน UI สำหรับนักพัฒนาซอฟต์แวร์ Genkit - ป้อน URL ของรูปภาพในช่อง
imageUrls
โดยการวาง URL ของรูปภาพ เช่น คุณสามารถใช้ภาพขนาดย่อจาก Wikipedia ที่แสดงหอไอเฟล ดังนี้{ "imageUrls": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4b/La_Tour_Eiffel_vue_de_la_Tour_Saint-Jacques%2C_Paris_ao%C3%BBt_2014_%282%29.jpg/556px-La_Tour_Eiffel_vue_de_la_Tour_Saint-Jacques%2C_Paris_ao%C3%BBt_2014_%282%29.jpg" ] }
- คลิกเรียกใช้
- เปิดข้อความแจ้ง
7. ใช้การดึงข้อมูลด้วยการค้นหาความคล้ายคลึงของเวกเตอร์
แม้ว่าการสร้างเนื้อหาอย่างสร้างสรรค์ด้วยโมเดล AI จะน่าประทับใจ แต่การใช้งานในทางปฏิบัติก็มักจะต้องกำหนดผลลัพธ์ในบริบทที่เฉพาะเจาะจง
ในกรณีของ Codelab นี้ คุณมีฐานข้อมูลของปลายทาง (สถานที่และกิจกรรม) และมุ่งหวังให้คำแนะนำที่โมเดล Gemini สร้างขึ้นอ้างอิงรายการภายในฐานข้อมูลนี้เท่านั้น
ในการลดช่องว่างระหว่างคำค้นหาที่ไม่มีโครงสร้างและเนื้อหาที่เกี่ยวข้อง คุณจะสามารถใช้ประโยชน์จากการค้นหาความคล้ายคลึงกันของเวกเตอร์ในการฝังที่สร้างขึ้น
การทำความเข้าใจการฝังและความเหมือนของเวกเตอร์
- เวกเตอร์: เวกเตอร์คือสัญลักษณ์ตัวเลขของจุดข้อมูล มักใช้สร้างแบบจำลองข้อมูลที่ซับซ้อน เช่น ข้อความหรือรูปภาพ มิติข้อมูลแต่ละรายการในเวกเตอร์จะสอดคล้องกับคุณลักษณะเฉพาะของข้อมูล
- โมเดลการฝัง: โมเดล AI เฉพาะทางเหล่านี้จะเปลี่ยนข้อมูลอินพุต เช่น ข้อความ ให้เป็นเวกเตอร์ที่มีมิติสูง แง่มุมที่น่าสนใจคือระบบจะแมปอินพุตที่คล้ายกันกับเวกเตอร์ที่อยู่ใกล้กันในพื้นที่ที่มีมิติสูงนี้
- การค้นหาความคล้ายคลึงของเวกเตอร์: เทคนิคนี้ใช้ประโยชน์จากความใกล้ของเวกเตอร์การฝังเพื่อระบุจุดข้อมูลที่เกี่ยวข้อง ตัวระบุสำหรับการค้นหาอินพุตจะค้นหารายการในฐานข้อมูลที่มีเวกเตอร์การฝังที่คล้ายกัน ซึ่งบ่งชี้ถึงความเกี่ยวข้องทางอรรถศาสตร์
การทำความเข้าใจกระบวนการดึงข้อมูล
- การฝังคำค้นหา: ข้อมูลที่ป้อนของผู้ใช้ (เช่น "อาหารค่ำโรแมนติกในปารีส") จะถูกส่งผ่านโมเดลการฝังเพื่อสร้างเวกเตอร์การค้นหา
- การฝังฐานข้อมูล: ตามหลักการแล้ว คุณจะได้ประมวลผลฐานข้อมูลของปลายทางไว้ล่วงหน้าแล้ว ซึ่งเป็นการสร้างเวกเตอร์ที่มีการฝังสำหรับแต่ละรายการ
- การคำนวณความคล้ายคลึง: ระบบจะเปรียบเทียบเวกเตอร์การค้นหากับเวกเตอร์ที่ฝังแต่ละรายการในฐานข้อมูลโดยใช้เมตริกความคล้ายคลึงกัน (เช่น ความคล้ายคลึงของโคไซน์)
- การดึงข้อมูล: ระบบจะดึงข้อมูลรายการที่คล้ายกันมากที่สุดจากฐานข้อมูล โดยพิจารณาจากระยะห่างกับเวกเตอร์การค้นหาเป็นคำแนะนำที่เกี่ยวข้อง
การรวมกลไกการดึงข้อมูลนี้เข้ากับแอปพลิเคชันของคุณ คุณใช้ประโยชน์จากโมเดล Gemini เพื่อสร้างคำแนะนำที่ไม่เพียงแค่สร้างสรรค์ แต่ยังสร้างขึ้นจากชุดข้อมูลเฉพาะของคุณอย่างเหนียวแน่นอีกด้วย วิธีนี้ทำให้ผลลัพธ์ที่สร้างขึ้นยังคงเกี่ยวข้องทางบริบทและสอดคล้องกับข้อมูลที่มีอยู่ในฐานข้อมูล
เปิดใช้การค้นหาความคล้ายคลึงกันของเวกเตอร์ใน Firestore
ในขั้นตอนก่อนหน้าของ Codelab นี้ คุณได้ป้อนข้อมูลในฐานข้อมูล Firestore ด้วยสถานที่และกิจกรรมตัวอย่างแล้ว แต่ละรายการจะมีช่องข้อความ knownFor
ที่อธิบายแอตทริบิวต์ที่สำคัญ พร้อมด้วยฟิลด์ embedding
ที่สอดคล้องกันซึ่งมีการแสดงเวกเตอร์ของคำอธิบายนี้
หากต้องการใช้ประโยชน์จากการค้นหาความคล้ายคลึงกันของเวกเตอร์ในการฝังเหล่านี้ คุณจะต้องสร้างดัชนี Firestore ดัชนีนี้ช่วยให้ดึงข้อมูลสถานที่ได้อย่างมีประสิทธิภาพ โดยพิจารณาจากความคล้ายคลึงกันของเวกเตอร์การฝังของเวกเตอร์เหล่านั้นกับคำค้นหาที่ระบุ
- ในเทอร์มินัล ให้เรียกใช้คำสั่งต่อไปนี้เพื่อติดตั้งคอมโพเนนต์อัลฟ่าล่าสุด คุณต้องมีเวอร์ชัน
2024.05.03
ขึ้นไป:gcloud components install alpha
- สร้างดัชนี โดยแทนที่
YOUR_PROJECT_ID
ด้วยรหัสโปรเจ็กต์ของคุณgcloud alpha firestore indexes composite create --project=YOUR_PROJECT_ID --collection-group=places --query-scope=COLLECTION --field-config=vector-config='{"dimension":"768","flat": "{}"}',field-path=embedding
- เปิด
placesRetriever
ใน UI ของนักพัฒนาซอฟต์แวร์ Genkit - คลิกเรียกใช้ สังเกตวัตถุที่มีโครงเป็นร่างพร้อมกับข้อความตัวยึดตำแหน่ง ซึ่งระบุตำแหน่งที่คุณจะใช้ตรรกะรีทรีฟเวอร์
- เปิดไฟล์
genkit-functions/src/lib/placesRetriever.ts
ในตัวแก้ไขโค้ด - เลื่อนลงจนสุดและแทนที่ตัวยึดตำแหน่ง
placesRetriever
ด้วยข้อมูลต่อไปนี้export const placesRetriever = defineFirestoreRetriever({ name: 'placesRetriever', firestore, collection: 'places', contentField: 'knownFor', vectorField: 'embedding', embedder: textEmbeddingGecko, distanceMeasure: 'COSINE', });
ทดสอบรีทรีฟเวอร์
- ใน UI ของนักพัฒนาซอฟต์แวร์ Genkit ให้เปิดรีทรีฟเวอร์
placesRetriever
- ระบุคำค้นหาต่อไปนี้
{ "content": [ { "text": "UNESCO" } ] }
- หรือจะระบุตัวเลือกก็ได้ เช่น วิธีระบุจำนวนเอกสารที่รีทรีฟเวอร์ควรส่งคืน
{ "limit": 4 }
- คลิกเรียกใช้
คุณกรองข้อมูลเพิ่มเติมนอกเหนือจากความคล้ายคลึงกันได้โดยเพิ่มวลี where
ลงในตัวเลือก
8. การดึงข้อมูล Augmented Generation (RAG) ด้วย Genkit
ในส่วนก่อนหน้านี้ คุณได้สร้างพรอมต์แต่ละรายการที่สามารถจัดการข้อความ, JSON และรูปภาพ รวมถึงสร้างจุดหมายปลายทางสำหรับวันหยุดพักผ่อนและเนื้อหาอื่นๆ ที่น่าสนใจสำหรับผู้ใช้ คุณยังใช้พรอมต์ที่เรียกข้อมูลปลายทางที่เกี่ยวข้องจากฐานข้อมูล Firestore ด้วย ตอนนี้ถึงเวลาที่จะรวบรวมองค์ประกอบเหล่านี้เข้าด้วยกันเป็นขั้นตอน Augmented Generation (RAG) แบบดึงข้อมูลที่สอดคล้องกัน
ส่วนนี้จะแนะนําแนวคิด Genkit ที่สำคัญที่เรียกว่าโฟลว์ โฟลว์เป็นฟังก์ชันที่มีการพิมพ์อย่างรวดเร็วและสตรีมได้ ซึ่งเรียกใช้ได้ทั้งในเครื่องและจากระยะไกล โดยความสามารถในการสังเกตแบบเต็ม คุณสามารถจัดการและเรียกใช้โฟลว์ได้จากทั้ง CLI ของ Genkit และ UI สำหรับนักพัฒนาซอฟต์แวร์ Genkit
- ในตัวแก้ไขโค้ด ให้ตรวจสอบข้อความแจ้งแผนการเดินทาง ดังนี้
- เปิดไฟล์
genkit-functions/prompts/itineraryGen.prompt
- โปรดสังเกตวิธีขยายพรอมต์ให้ยอมรับอินพุตเพิ่มเติม โดยเฉพาะข้อมูลกิจกรรมที่มาจากรีทรีฟเวอร์
- เปิดไฟล์
- ใน UI ของนักพัฒนาซอฟต์แวร์ Genkit ให้ดูขั้นตอน Genkit ในไฟล์
genkit-functions/src/lib/itineraryFlow.ts
เคล็ดลับ: หากต้องการปรับปรุงการแก้ไขข้อบกพร่อง ให้ลองแบ่งขั้นตอนยาวๆ ออกเป็นขั้นตอนที่เล็กลงและจัดการได้ - ปรับปรุงโฟลว์โดยการผสานรวม "คำอธิบายรูปภาพ" ขั้นตอน:
- ค้นหาความคิดเห็นที่
TODO: 2
(ประมาณบรรทัดที่ 70) ซึ่งจะทำเครื่องหมายจุดที่คุณจะปรับปรุงการไหลเวียนได้ - แทนที่ตัวยึดตำแหน่ง
imgDescription
ที่ว่างเปล่าด้วยเอาต์พุตที่สร้างขึ้นโดยการเรียกใช้พรอมต์imgDescription
- ค้นหาความคิดเห็นที่
- ทดสอบขั้นตอนการทำงาน:
- ไปที่
itineraryFlow
- ใช้อินพุตต่อไปนี้เพื่อทดสอบการดำเนินการ
itineraryFlow
ที่สำเร็จด้วยขั้นตอนที่เพิ่มใหม่{ "request": "Sightseeing in Paris", "imageUrls": [ "https://upload.wikimedia.org/wikipedia/commons/thumb/4/4b/La_Tour_Eiffel_vue_de_la_Tour_Saint-Jacques%2C_Paris_ao%C3%BBt_2014_%282%29.jpg/556px-La_Tour_Eiffel_vue_de_la_Tour_Saint-Jacques%2C_Paris_ao%C3%BBt_2014_%282%29.jpg" ] }
- คลิกเรียกใช้
- สังเกตเอาต์พุตที่สร้างขึ้น ซึ่งควรรวมคำอธิบายรูปภาพไว้ในคำแนะนำแผนการเดินทาง
- ไปที่
- หากคุณพบข้อผิดพลาดหรือลักษณะการทำงานที่ไม่คาดคิด ให้ดูรายละเอียดในแท็บตรวจสอบ คุณยังใช้แท็บนี้เพื่อตรวจสอบประวัติการดำเนินการจาก Trace Store ได้อีกด้วย
RAG สำหรับเว็บแอปพลิเคชันของคุณ
- ตรวจสอบว่าเว็บแอปยังทำงานอยู่ โดยไปที่ http://localhost:3000/ ในเบราว์เซอร์
- หากเว็บแอปไม่ทำงานแล้ว ให้เรียกใช้คำสั่งต่อไปนี้ในเทอร์มินัล
npm install npm run dev
- ดูหน้าแอปฝันในวันหยุด (http://localhost:3000/gemini)
- ดูซอร์สโค้ด (
src/app/gemini/page.tsx
) สำหรับตัวอย่างการผสานรวม Next.js
9. ทำให้แอปพลิเคชันของคุณใช้งานได้ด้วยโฮสติ้งแอปของ Firebase
ขั้นตอนสุดท้ายของเส้นทางนี้คือการทำให้เว็บแอปใช้งานได้ คุณจะได้ใช้ประโยชน์จากโฮสติ้งแอป Firebase ซึ่งเป็นโซลูชันโฮสติ้งที่คำนึงถึงเฟรมเวิร์กที่ออกแบบมาเพื่อทำให้การติดตั้งใช้งานแอป Next.js และ Angular ง่ายขึ้นในแบ็กเอนด์แบบ Serverless
- ทำการเปลี่ยนแปลงกับที่เก็บ Git ในเครื่อง จากนั้นพุชไปยัง GitHub
- ในคอนโซล Firebase ให้ไปที่โฮสติ้งแอปในโปรเจ็กต์ Firebase
- คลิกเริ่มต้นใช้งาน > เชื่อมต่อกับ GitHub
- เลือกบัญชี GitHub และที่เก็บ คลิกถัดไป
- ในการตั้งค่าการทำให้ใช้งานได้ > ไดเรกทอรีราก ให้คงค่าเริ่มต้นไว้
- สำหรับ Branch ของ Live ให้เลือก Branch หลักของที่เก็บ GitHub คลิกถัดไป
- ป้อนรหัสของแบ็กเอนด์ (เช่น
compass
) - เมื่อระบบถามว่าจะสร้างหรือเชื่อมโยงเว็บแอป Firebase หรือไม่ ให้เลือกเลือกเว็บแอป Firebase ที่มีอยู่ แล้วเลือกแอปที่คุณสร้างในขั้นตอนก่อนหน้าใน Codelab นี้
- คลิกเสร็จสิ้นและทำให้ใช้งานได้
การตรวจสอบสถานะการทำให้ใช้งานได้
กระบวนการทำให้ใช้งานได้จะใช้เวลาไม่กี่นาที คุณสามารถติดตามความคืบหน้าได้ในส่วนโฮสติ้งแอปของคอนโซล Firebase เมื่อทำเสร็จ ผู้ใช้จะเข้าถึงเว็บแอปได้
การทำให้ใช้งานได้ใหม่โดยอัตโนมัติ
โฮสติ้งแอปของ Firebase จะช่วยเพิ่มความคล่องตัวในการอัปเดตในอนาคต เมื่อใดก็ตามที่คุณพุชการเปลี่ยนแปลงไปยัง Branch หลักของที่เก็บ GitHub โฮสติ้งแอปของ Firebase จะสร้างและทำให้แอปใช้งานได้อีกครั้งโดยอัตโนมัติ เพื่อให้มั่นใจว่าผู้ใช้จะได้รับประสบการณ์การใช้งานเวอร์ชันล่าสุดอยู่เสมอ
10. บทสรุป
ขอแสดงความยินดีที่ผ่าน Codelab ที่ครอบคลุมนี้
คุณประสบความสำเร็จจากการใช้ความสามารถของ Firebase Genkit, Firestore และ Vertex AI ในการสร้าง "โฟลว์" ที่ซับซ้อน ที่ช่วยสร้างคำแนะนำการพักร้อนที่ปรับเปลี่ยนในแบบของคุณโดยอิงตามความต้องการและแรงบันดาลใจของผู้ใช้ ขณะเดียวกันก็กำหนดคำแนะนำจากข้อมูลแอปพลิเคชันของคุณด้วย
ตลอดเส้นทางนี้ คุณจะได้สัมผัสกับรูปแบบทางวิศวกรรมซอฟต์แวร์ที่สำคัญและสำคัญต่อการสร้างแอปพลิเคชัน Generative AI ที่มีประสิทธิภาพสูง รูปแบบเหล่านี้รวมถึง
- การจัดการพรอมต์: จัดระเบียบและดูแลรักษาพรอมต์เป็นโค้ดเพื่อการทำงานร่วมกันและการควบคุมเวอร์ชันที่ดียิ่งขึ้น
- เนื้อหาหลายรูปแบบ: การผสานรวมข้อมูลประเภทต่างๆ เช่น รูปภาพและข้อความ เพื่อปรับปรุงการโต้ตอบกับ AI
- สคีมาอินพุต/เอาต์พุต: การจัดโครงสร้างข้อมูลสำหรับการผสานรวมและตรวจสอบแอปพลิเคชันอย่างราบรื่น
- ที่เก็บเวกเตอร์: การใช้ประโยชน์จากการฝังเวกเตอร์เพื่อการค้นหาและการดึงข้อมูลที่เกี่ยวข้องซึ่งมีความคล้ายคลึงอย่างมีประสิทธิภาพ
- การดึงข้อมูล: การใช้กลไกเพื่อดึงข้อมูลและรวมข้อมูลจากฐานข้อมูลไว้ในเนื้อหาที่ AI สร้างขึ้น
- การดึงข้อมูล Augmented Generation (RAG): การผสมผสานเทคนิคการดึงข้อมูลกับ Generative AI เพื่อให้ได้ผลลัพธ์ที่แม่นยำและมีความเกี่ยวข้องตามบริบท
- เครื่องมือโฟลว์: การสร้างและจัดการเวิร์กโฟลว์ AI ที่ซับซ้อนเพื่อการดำเนินการที่ราบรื่นและสังเกตได้
การฝึกฝนแนวคิดเหล่านี้ให้เชี่ยวชาญและนำไปใช้ภายในระบบนิเวศของ Firebase จะทำให้คุณพร้อมเริ่มการผจญภัยเกี่ยวกับ GenAI ของคุณเอง สำรวจความเป็นไปได้มากมาย สร้างแอปพลิเคชันสุดล้ำ และก้าวข้ามขอบเขตของสิ่งที่ทำได้ด้วย Generative AI
การสำรวจทางเลือกในการติดตั้งใช้งาน
Genkit มีตัวเลือกการติดตั้งใช้งานมากมายที่เหมาะกับความต้องการเฉพาะของคุณ รวมถึง
- ฟังก์ชันระบบคลาวด์สำหรับ Firebase
- Cloud Run
- Next.js
- สภาพแวดล้อม Node.js ทั้งหมด
- Genkit ยังรองรับ Go
เพียงเลือกตัวเลือกที่เหมาะกับคุณที่สุดโดยเรียกใช้คำสั่งต่อไปนี้ในโฟลเดอร์โหนด (package.json
)
npx genkit init
ขั้นตอนถัดไป
- ทดลองใช้พรอมต์และใช้ประโยชน์จากหน้าต่างบริบทขนาดใหญ่ใน Google AI Studio หรือ Vertex AI Studio
- ดูข้อมูลเพิ่มเติมเกี่ยวกับการค้นหา Augmented Generation (RAG) ด้วย AI
- ดูเอกสารอย่างเป็นทางการสำหรับ Firebase Genkit
- ดูข้อมูลเพิ่มเติมเกี่ยวกับความสามารถในการค้นหาความคล้ายคลึงกันใน Firestore และ Cloud SQL สำหรับ PostgreSQL
- เจาะลึกการทำงานของ GenAI ด้วยการเรียกใช้ฟังก์ชัน