1. לפני שמתחילים
תוספים ל-Firebase מאפשרים להוסיף לאפליקציות פונקציונליות מוכנה מראש עם מינימום קוד – כולל פונקציונליות מבוססת-AI. ב-codelab הזה נסביר איך לשלב שני תוספים של Firebase באפליקציית אינטרנט כדי להשתמש ב-Gemini API ליצירת תיאורי תמונות, סיכומים ואפילו המלצות מותאמות אישית על סמך הקשר וקלט של משתמשי קצה.
ב-codelab הזה תלמדו איך ליצור אפליקציית אינטרנט מבוססת-AI שמספקת חוויות משתמש מרתקות באמצעות Firebase Extensions.
דרישות מוקדמות
- ידע ב-Node.js, Next.js ו-TypeScript.
מה תלמדו
- איך משתמשים בתוספים של Firebase ל-Gemini API כדי לעבד שפה.
- איך משתמשים ב-Cloud Functions for Firebase כדי ליצור הקשר מורחב למודל השפה.
- איך משתמשים ב-JavaScript כדי לגשת לפלט שנוצר על ידי Firebase Extensions.
מה צריך להכין
- דפדפן לבחירתכם, כמו Google Chrome
- סביבת פיתוח עם עורך קוד וטרמינל
- חשבון Google ליצירה ולניהול של פרויקט Firebase
2. בדיקת אפליקציית האינטרנט, שירותי Firebase והתוספים
בקטע הזה נסקור את אפליקציית האינטרנט שנבנה באמצעות ה-codelab הזה, וגם נלמד על שירותי Firebase ותוספי Firebase שבהם נשתמש.
אפליקציית אינטרנט
ב-codelab הזה תיצרו אפליקציית אינטרנט בשם Friendly Conf.
צוות Friendly Conference החליט להשתמש ב-AI כדי ליצור חוויית משתמש מהנה ומותאמת אישית למשתתפים. אפליקציית הכנס המוגמרת מספקת למשתתפים צ'אטבוט מבוסס-AI לשיחה, שמופעל על ידי מודל AI גנרטיבי רב-אופנים (שנקרא גם מודל שפה גדול או LLM), ויכול לענות על שאלות בנושאים כלליים, בהתאם ללוח הזמנים ולנושאים של הכנס. לצ'אט בוט יש הקשר היסטורי וידע לגבי התאריך והשעה הנוכחיים, וגם לגבי הנושאים והלוחות זמנים של הכנס, כך שהתשובות שלו יכולות להתבסס על כל ההקשר הזה.
שירותי Firebase
ב-codelab הזה תשתמשו בהרבה שירותים ותכונות של Firebase, ורוב קוד ההתחלה שלהם מסופק לכם. בטבלה הבאה מפורטים השירותים שבהם תשתמשו והסיבות לשימוש בהם.
Service | הסיבה לשימוש |
אתם משתמשים בפונקציונליות של 'כניסה באמצעות חשבון Google' באפליקציית האינטרנט. | |
אתם מאחסנים נתוני טקסט ב-Cloud Firestore, ואז הם עוברים עיבוד על ידי Firebase Extensions. | |
אתם קוראים וכותבים מ-Cloud Storage כדי להציג גלריות תמונות באפליקציית האינטרנט. | |
אתם פורסים כללי אבטחה כדי להגביר את האבטחה של הגישה לשירותי Firebase. | |
אתם מגדירים ומתקינים תוספים של Firebase שקשורים ל-AI ומציגים את התוצאות באפליקציית האינטרנט. | |
בונוס: אירוח ב-Firebase | אפשר גם להשתמש באירוח ב-Firebase כדי להפעיל את אפליקציית האינטרנט (בלי מאגר GitHub). |
בונוס: Firebase App Hosting | אפשר גם להשתמש באירוח החדש והיעיל של אפליקציות ב-Firebase כדי להציג את אפליקציית האינטרנט הדינמית שלכם ב-Next.js (שמקושרת למאגר GitHub). |
תוספים ל-Firebase
התוספים של Firebase שבהם תשתמשו בסדנת הקוד הזו כוללים את התוספים הבאים:
תוספים הם שימושיים כי הם מגיבים לאירועים שקורים בפרויקט Firebase. שני התוספים שבהם נעשה שימוש ב-codelab הזה מגיבים כשיוצרים מסמכים חדשים באוספים שהוגדרו מראש ב-Cloud Firestore.
3. הגדרת סביבת הפיתוח
אימות הגרסה של Node.js
- במסוף, מוודאים שמותקנת גרסה 20.0.0 ואילך של Node.js:
node -v
- אם לא מותקנת אצלכם גרסה 20.0.0 של Node.js או גרסה מתקדמת יותר, מורידים את גרסת ה-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 הזה, תוכלו למצוא את קוד הפתרון בענף end
git.
התקנת Firebase CLI
- מוודאים שה-CLI של Firebase מותקן ושהגרסה שלו היא 13.6 ואילך:
firebase --version
- אם ה-CLI של Firebase מותקן אצלכם, אבל הוא לא בגרסה 13.6 ומעלה, צריך לעדכן אותו:
npm update -g firebase-tools
- אם Firebase CLI לא מותקן, מתקינים אותו:
npm install -g firebase-tools
אם אתם לא מצליחים לעדכן או להתקין את Firebase CLI בגלל שגיאות הרשאה, אפשר לעיין במסמכי התיעוד של npm או להשתמש באפשרות התקנה אחרת.
מתחברים ל-Firebase
- ב-Terminal, עוברים לתיקייה
codelab-gemini-api-extensions
ונכנסים ל-Firebase: אם במסוף מופיע שאתם כבר מחוברים ל-Firebase, אתם יכולים לדלג לקטע הגדרת פרויקט Firebase ב-codelab הזה.cd codelab-gemini-api-extensions firebase login
- בטרמינל, בהתאם לרצון שלכם ש-Firebase יאסוף נתונים, מזינים
Y
אוN
. (כל אחת מהאפשרויות מתאימה ל-Codelab הזה) - בדפדפן, בוחרים את חשבון Google ולוחצים על אישור.
4. הגדרת פרויקט Firebase
בקטע הזה נגדיר פרויקט Firebase ונרשום בו אפליקציית אינטרנט של Firebase. בהמשך תפעילו גם כמה שירותים של Firebase שמשמשים את אפליקציית האינטרנט לדוגמה.
כל השלבים בקטע הזה מתבצעים במסוף Firebase.
יצירת פרויקט Firebase
- נכנסים למסוף Firebase באמצעות אותו חשבון Google שבו השתמשתם בשלב הקודם.
- לוחצים על הלחצן כדי ליצור פרויקט חדש, ואז מזינים שם לפרויקט (לדוגמה,
AI Extensions Codelab
).
- לוחצים על המשך.
- אם מוצגת בקשה לעשות זאת, קוראים ומאשרים את התנאים של Firebase, ואז לוחצים על המשך.
- (אופציונלי) מפעילים את העזרה מבוססת-AI במסוף Firebase (שנקראת Gemini ב-Firebase).
- ב-codelab הזה לא צריך להשתמש ב-Google Analytics, ולכן משביתים את האפשרות Google Analytics.
- לוחצים על יצירת פרויקט, מחכים שהפרויקט יוקצה ולוחצים על המשך.
שדרוג תוכנית התמחור של Firebase
כדי להשתמש בתוספים של Firebase (ובשירותי הענן הבסיסיים שלהם) וגם ב-Cloud Storage for Firebase, הפרויקט שלכם ב-Firebase צריך להיות במסגרת תוכנית התמחור 'תשלום לפי שימוש' (Blaze), כלומר הוא צריך להיות מקושר לחשבון לחיוב ב-Cloud.
- בחשבון לחיוב ב-Cloud צריך להגדיר אמצעי תשלום, כמו כרטיס אשראי.
- אם אתם חדשים ב-Firebase וב-Google Cloud, כדאי לבדוק אם אתם עומדים בדרישות לקבלת קרדיט בסך 300$וחשבון לחיוב ב-Cloud עם תקופת ניסיון בחינם.
- אם אתם משתתפים בסדנת קוד כחלק מאירוע, כדאי לשאול את מארגן האירוע אם יש קרדיטים ל-Cloud.
חשוב גם לדעת שאם החיוב מופעל בפרויקט Firebase, תחויבו על הקריאות שהתוסף מבצע ל-Gemini API (לא משנה באיזה ספק תבחרו, Google AI או Vertex AI). מידע נוסף על התמחור של AI מבית Google ושל Vertex AI
כדי לשדרג את הפרויקט לתוכנית Blaze, פועלים לפי השלבים הבאים:
- במסוף Firebase, בוחרים באפשרות שדרוג התוכנית.
- בוחרים בתוכנית Blaze. פועלים לפי ההוראות במסך כדי לקשר חשבון לחיוב ב-Cloud לפרויקט.
אם הייתם צריכים ליצור חשבון לחיוב ב-Cloud כחלק מהשדרוג, יכול להיות שתצטרכו לחזור לתהליך השדרוג במסוף Firebase כדי להשלים את השדרוג.
הוספת אפליקציית אינטרנט לפרויקט Firebase
- עוברים למסך Project Overview בפרויקט Firebase ולוחצים על
Web.
- בתיבת הטקסט App nickname (כינוי לאפליקציה), מזינים כינוי קליט לאפליקציה, כמו
My AI Extensions
- לוחצים על Register app > Next > Next > Continue to console (רישום האפליקציה > הבא > הבא > המשך אל המסוף).
אתם יכולים לדלג על כל השלבים שקשורים ל'אירוח' בתהליך של אפליקציית האינטרנט, כי בהמשך תהיה לכם אפשרות להגדיר שירות אירוח ב-codelab הזה.
מעולה! סיימתם לרשום אפליקציית אינטרנט בפרויקט Firebase החדש.
הגדרה של אימות ב-Firebase
- בחלונית הניווט הימנית, עוברים אל אימות.
- לוחצים על תחילת העבודה.
- בעמודה ספקים נוספים, לוחצים על Google > הפעלה.
- בתיבת הטקסט Public-facing name for project (שם הפרויקט שמוצג לציבור), מזינים שם שימושי, כמו
My AI Extensions Codelab
. - בתפריט Support email for project, בוחרים את כתובת האימייל שלכם.
- לוחצים על שמירה.
הגדרת Cloud Firestore
- בחלונית הימנית במסוף Firebase, מרחיבים את Build ובוחרים באפשרות Firestore database.
- לוחצים על יצירת מסד נתונים.
- משאירים את הערך
(default)
בשדה מזהה מסד הנתונים. - בוחרים מיקום למסד הנתונים ולוחצים על הבא.
באפליקציה אמיתית, כדאי לבחור מיקום שקרוב למשתמשים. - לוחצים על התחלה במצב בדיקה. קוראים את כתב הוויתור בנוגע לכללי האבטחה.
בהמשך ה-codelab הזה, תוסיפו כללי אבטחה כדי לאבטח את הנתונים. אל תפיצו או תחשפו אפליקציה באופן ציבורי בלי להוסיף כללי אבטחה למסד הנתונים. - לוחצים על יצירה.
הגדרת Cloud Storage for Firebase
- בחלונית הימנית במסוף Firebase, מרחיבים את Build (פיתוח) ובוחרים באפשרות Storage (אחסון).
- לוחצים על תחילת העבודה.
- בוחרים מיקום לקטגוריית האחסון שמוגדרת כברירת מחדל.
קטגוריות ב-US-WEST1
, ב-US-CENTRAL1
וב-US-EAST1
יכולות ליהנות מהמסלול תמיד בחינם של Google Cloud Storage. התמחור והשימוש בקטגוריות בכל המיקומים האחרים מפורטים בתמחור ובשימוש ב-Google Cloud Storage. - לוחצים על התחלה במצב בדיקה. קוראים את כתב הוויתור בנוגע לכללי האבטחה.
בהמשך ה-codelab, תוסיפו כללי אבטחה כדי לאבטח את הנתונים. אל תפיצו או תחשפו אפליקציה לציבור בלי להוסיף כללי אבטחה לדלי שלכם ב-Storage. - לוחצים על יצירה.
בקטע הבא של ה-codelab הזה, תתקינו ותגדירו את שני התוספים של Firebase שבהם תשתמשו באפליקציית האינטרנט במהלך ה-codelab הזה.
5. הגדרת התוסף 'יצירת צ'אטבוט באמצעות Gemini API'
התקנת התוסף 'יצירת צ'אטבוט באמצעות Gemini API'
- עוברים אל התוסף "יצירת צ'אטבוט באמצעות Gemini API".
- לוחצים על התקנה במסוף Firebase.
- בוחרים את פרויקט Firebase ולוחצים על הבא.
- בקטע Review APIs enabled and resources created (בדיקת ממשקי API שהופעלו ומשאבים שנוצרו), לוחצים על Enable (הפעלה) לצד כל שירות שמוצע לכם, ואז לוחצים על Next (הבא).
- אם מוצעות לכם הרשאות, בוחרים באפשרות אישור ולוחצים על הבא.
- מגדירים את התוסף:
- בתפריט Gemini API Provider (ספק Gemini API), בוחרים אם רוצים להשתמש ב-Gemini API מ-Google AI או מ-Vertex AI. למפתחים שמשתמשים ב-Firebase, מומלץ להשתמש ב-
Vertex AI
. - בתיבת הטקסט Firestore Collection Path (הנתיב לאוסף ב-Firestore), מזינים:
users/{uid}/messages
.
בשלבים הבאים של ה-codelab הזה, הוספת מסמכים לאוסף הזה תפעיל את התוסף לקריאה ל-Gemini API. - בתפריט Cloud Functions location, בוחרים את המיקום המועדף (למשל
Iowa (us-central1)
או המיקום שצוין קודם למסד הנתונים של Firestore). - משאירים את כל שאר הערכים בברירת המחדל.
- בתפריט Gemini API Provider (ספק Gemini API), בוחרים אם רוצים להשתמש ב-Gemini API מ-Google AI או מ-Vertex AI. למפתחים שמשתמשים ב-Firebase, מומלץ להשתמש ב-
- לוחצים על התקנת התוסף ומחכים שהתוסף יותקן.
כדאי לנסות את התוסף 'יצירת צ'אטבוט באמצעות Gemini API'
היעד של ה-codelab הזה הוא אינטראקציה עם התוסף Build Chatbot with the Gemini API (יצירת צ'אטבוט באמצעות Gemini API) דרך אפליקציית אינטרנט, אבל כדאי לנסות אותו קודם במסוף Firebase כדי להבין איך הוא עובד.
התוסף מופעל בכל פעם שנוצר מסמך Firestore באוסף users/{uid}/discussion/{discussionId}/messages
, שאפשר ליצור במסוף Firebase.
- במסוף Firebase, עוברים אל Firestore ולוחצים על
Start collection (התחלת איסוף) בעמודה הראשונה.
- בתיבת הטקסט מזהה אוסף, מזינים
users
ולוחצים על הבא. - בתיבת הטקסט מזהה מסמך, לוחצים על מזהה אוטומטי ואז על שמירה.
- באוסף
users
, לוחצים עלהתחלת איסוף.
- בתיבת הטקסט מזהה אוסף, מזינים
messages
ולוחצים על הבא.- בתיבת הטקסט מזהה מסמך, לוחצים על מזהה אוטומטי.
- בתיבת הטקסט Field (שדה), מזינים
prompt
- בתיבת הטקסט Value (ערך), מזינים
Tell me 5 random fruits
- לוחצים על שמירה ומחכים כמה שניות.
כשמוסיפים את המסמך הזה, התוסף מופעל וקורא ל-Gemini API. המסמך שהוספתם לאוסף messages
כולל עכשיו לא רק את prompt
שלכם, אלא גם את response
של המודל בשאילתה.
מפעילים שוב את התוסף על ידי הוספת מסמך נוסף לאוסף messages
:
- באוסף
messages
, לוחצים עלהוספת מסמך.
- בתיבת הטקסט מזהה מסמך, לוחצים על מזהה אוטומטי.
- בתיבת הטקסט Field (שדה), מזינים
prompt
- בתיבת הטקסט Value (ערך), מזינים
And now, vegetables
- לוחצים על שמירה ומחכים כמה שניות. המסמך שזה עתה הוספתם לאוסף
messages
כולל עכשיוresponse
לשאילתה שלכם.
כשנוצרה התשובה הזו, מודל Gemini הבסיסי השתמש בידע היסטורי מהשאילתה הקודמת שלכם.
6. הגדרת אפליקציית האינטרנט
כדי להפעיל את אפליקציית האינטרנט, צריך להריץ פקודות במסוף ולהוסיף קוד בתוך עורך הקוד.
הגדרת Firebase CLI להפעלה מול פרויקט Firebase
בטרמינל, מריצים את הפקודה הבאה כדי להגדיר את ה-CLI לשימוש בפרויקט Firebase:
firebase use YOUR_PROJECT_ID
פריסת כללי אבטחה ל-Firestore ול-Cloud Storage
במאגר הקוד של ה-codelab הזה כבר יש קבוצה של כללי אבטחה של Firestore וכללי אבטחה של Cloud Storage שנכתבו בשבילכם. אחרי שמפעילים את כללי האבטחה האלה, שירותי Firebase בפרויקט Firebase מוגנים טוב יותר מפני שימוש לרעה.
- כדי לפרוס כללי אבטחה, מריצים את הפקודה הבאה בטרמינל:
firebase deploy --only firestore:rules,storage
- אם תתבקשו להעניק ל-Cloud Storage את תפקיד ה-IAM כדי להשתמש בכללים חוצי-שירותים, הזינו
Y
אוN
. (כל אחת מהאפשרויות מתאימה ל-Codelab הזה)
קישור אפליקציית האינטרנט לפרויקט Firebase
בבסיס הקוד של אפליקציית האינטרנט צריך לציין באיזה פרויקט Firebase להשתמש עבור מסד הנתונים, האחסון וכו'. כדי לעשות זאת, מוסיפים את ההגדרה של Firebase לבסיס הקוד של האפליקציה.
- מקבלים את ההגדרה של Firebase:
- במסוף Firebase, עוברים אל הגדרות הפרויקט בפרויקט Firebase.
- גוללים למטה לקטע האפליקציות שלך ובוחרים את אפליקציית האינטרנט הרשומה.
- בחלונית SDK setup and configuration (הגדרה וקביעת הגדרות של SDK), מעתיקים את קוד
initializeApp
המלא, כולל הקבועfirebaseConfig
.
- מוסיפים את ההגדרה של Firebase לבסיס הקוד של אפליקציית האינטרנט:
- בכלי לעריכת קוד, פותחים את הקובץ
src/lib/firebase/firebase.config.js
. - בוחרים את כל התוכן בקובץ ומחליפים אותו בקוד שהעתקתם.
- שומרים את הקובץ.
- בכלי לעריכת קוד, פותחים את הקובץ
תצוגה מקדימה של אפליקציית האינטרנט בדפדפן
- בטרמינל, מתקינים את התלות ואז מריצים את אפליקציית האינטרנט:
npm install npm run dev
- בדפדפן, עוברים לכתובת ה-URL של האירוח שמתארחת באופן מקומי כדי להציג את אפליקציית האינטרנט. לדוגמה, ברוב המקרים כתובת ה-URL היא http://localhost:3000/ או כתובת דומה.
שימוש בצ'אט בוט של אפליקציית האינטרנט
- בדפדפן, חוזרים לכרטיסייה עם אפליקציית האינטרנט Friendly Conf שפועלת באופן מקומי.
- לוחצים על כניסה באמצעות חשבון Google, ואם צריך, בוחרים את חשבון Google.
- אחרי שתיכנסו לחשבון, יופיע חלון צ'אט ריק.
- מקלידים ברכה (למשל
hi
) ולוחצים על שליחה. - ממתינים כמה שניות עד שהצ'אטבוט יגיב.
הצ'אטבוט באפליקציה משיב בתשובה כללית.
התאמה אישית של הצ'אט בוט לאפליקציה
אתם צריכים שמודל Gemini הבסיסי שמשמש את הצ'אטבוט של אפליקציית האינטרנט ידע פרטים ספציפיים על הכנס כשהמודל יוצר תשובות למשתתפים שמשתמשים באפליקציה. יש הרבה דרכים לשלוט בתשובות האלה ולכוון אותן, ובקטע המשנה הזה של ה-codelab אנחנו מראים לכם דרך בסיסית מאוד לעשות את זה – על ידי מתן 'הקשר' בהנחיה הראשונית (ולא רק הקלט מהמשתמש של אפליקציית האינטרנט).
- באתר בדפדפן, מוחקים את השיחה על ידי לחיצה על הכפתור האדום '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 ולהוסיף אותה למסמך חדש ב-Cloud Firestore – וכך להפעיל את התוסף ליצירת הנחיה מולטימודלית ולקרוא ל-Gemini API. בקוד המקור של ה-Codelab הזה, כבר סיפקנו את הקוד להעלאת תמונה ולכתיבת כתובת ה-URL למסמך Firestore.
התקנת התוסף 'משימות מרובות מצבים עם Gemini API'
- עוברים אל התוסף 'משימות מולטימודאליות באמצעות Gemini API'.
- לוחצים על התקנה במסוף Firebase.
- בוחרים את פרויקט Firebase.
- לוחצים על הבא > הבא > הבא עד שמגיעים לקטע הגדרת התוסף.
- בתפריט Gemini API Provider (ספק Gemini API), בוחרים אם רוצים להשתמש ב-Gemini API מ-Google AI או מ-Vertex AI. למפתחים שמשתמשים ב-Firebase, מומלץ להשתמש ב-
Vertex AI
. - בתיבת הטקסט Firestore Collection Path (הנתיב לאוסף Firestore), מזינים:
gallery
- בתיבת הטקסט Prompt (הנחיה), מזינים:
Please describe the provided image; if there is no image, say "no image"
- בתיבת הטקסט Image field (שדה תמונה), מזינים:
image
- בתפריט Cloud Functions location, בוחרים את המיקום המועדף (למשל
Iowa (us-central1)
או המיקום שצוין קודם למסד הנתונים של Firestore). - משאירים את כל שאר הערכים בברירת המחדל.
- בתפריט Gemini API Provider (ספק Gemini API), בוחרים אם רוצים להשתמש ב-Gemini API מ-Google AI או מ-Vertex AI. למפתחים שמשתמשים ב-Firebase, מומלץ להשתמש ב-
- לוחצים על התקנת התוסף ומחכים שהתוסף יותקן.
כדאי לנסות את התוסף 'משימות מולטימודאליות עם Gemini API'
היעד של ה-codelab הזה הוא אינטראקציה עם התוסף Multimodal Tasks with the Gemini API דרך אפליקציית אינטרנט, אבל כדאי לנסות את התוסף במסוף Firebase כדי להבין איך הוא פועל.
התוסף מופעל בכל פעם שנוצר מסמך Firestore באוסף users/{uid}/gallery
, שאפשר ליצור במסוף Firebase. התוסף מקבל את כתובת ה-URL של התמונה ב-Cloud Storage במסמך Cloud Firestore ומעביר אותה כחלק מההנחיה הרב-מודאלית בקריאה ל-Gemini API.
קודם מעלים תמונה לקטגוריה ב-Cloud Storage:
- עוברים אל Storage בפרויקט Firebase.
- לוחצים על
יצירת תיקייה.
- בתיבת הטקסט Folder name (שם התיקייה), מזינים
gallery
- לוחצים על הוספת תיקייה.
- בתיקייה
gallery
, לוחצים על העלאת קובץ. - בוחרים קובץ תמונה בפורמט JPEG להעלאה.
לאחר מכן, מוסיפים את כתובת ה-URL של התמונה ב-Cloud Storage למסמך Firestore (שהוא הטריגר להפעלת התוסף):
- עוברים אל Firestore בפרויקט Firebase.
- לוחצים על
התחלת איסוף בעמודה הראשונה.
- בתיבת הטקסט מזהה אוסף, מזינים:
gallery
, ואז לוחצים על הבא. - כדי להוסיף מסמך לאוסף:
- בתיבת הטקסט מזהה מסמך, לוחצים על מזהה אוטומטי.
- בתיבת הטקסט Field (שדה) מזינים:
image
. בתיבה Value (ערך), מזינים את ה-URI של מיקום האחסון של התמונה שהעליתם.
- לוחצים על הוספת שדה.
- בתיבת הטקסט Field (שדה) מזינים:
published
. בתיבה סוג בוחרים באפשרות boolean. בתיבה ערך בוחרים באפשרותtrue
. - לוחצים על שמירה ומחכים כמה שניות.
אוסף gallery
כולל עכשיו מסמך שמכיל תשובה לשאילתה שלכם.
שימוש בגלריית התמונות של אפליקציית האינטרנט
- בדפדפן, חוזרים לכרטיסייה עם אפליקציית האינטרנט Friendly Conf שפועלת באופן מקומי.
- לוחצים על כרטיסיית הניווט גלריה.
- תוצג גלריה של תמונות שהועלו ותיאורים שנוצרו על ידי AI. התמונה שהעליתם קודם לתיקייה
gallery
בקטגוריית האחסון אמורה להופיע. - לוחצים על הלחצן העלאה ובוחרים תמונה אחרת בפורמט JPEG.
- ממתינים כמה שניות עד שהתמונה תוצג בגלריה. כמה רגעים לאחר מכן, יוצג גם התיאור שנוצר על ידי AI לתמונה שהועלתה.
אם רוצים להבין את הקוד שבאמצעותו בוצעה ההטמעה, אפשר לעיין ב-src/app/gallery/page.tsx
בבסיס הקוד של אפליקציית האינטרנט.
8. בונוס: פריסת האפליקציה
יש כמה דרכים לפרוס אפליקציית אינטרנט ב-Firebase. בסדנת הקוד הזו, בוחרים אחת מהאפשרויות הבאות:
- אפשרות 1: Firebase Hosting – משתמשים באפשרות הזו אם מחליטים לא ליצור מאגר משלכם ב-GitHub (ויש לכם רק קוד מקור שמאוחסן באופן מקומי במחשב).
- אפשרות 2: Firebase App Hosting – משתמשים באפשרות הזו אם רוצים פריסה אוטומטית בכל פעם שדוחפים שינויים למאגר GitHub משלכם. שירות Firebase החדש הזה נועד במיוחד להתאים לצרכים של אפליקציות דינמיות ב-Next.js וב-Angular.
אפשרות 1: פריסה באמצעות Firebase Hosting
משתמשים באפשרות הזו אם החלטתם לא ליצור מאגר 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
. - מריצים את הפקודה הבאה כדי לפרוס את אפליקציית האינטרנט ב-Hosting:
firebase deploy --only hosting
סיימת! אם אתם מעדכנים את האפליקציה ורוצים לפרוס את הגרסה החדשה, פשוט מריצים מחדש את הפקודה firebase deploy --only hosting
ושירות Firebase Hosting יבנה ויפרוס מחדש את האפליקציה.
אפשרות 2: פריסה באמצעות אירוח אפליקציות ב-Firebase
משתמשים באפשרות הזו אם רוצים פריסה אוטומטית בכל פעם שמעלים שינויים למאגר GitHub שלכם.
- שומרים את השינויים ב-GitHub.
- במסוף Firebase, עוברים אל App Hosting בפרויקט Firebase.
- לוחצים על Get started (שנתחיל?) > Connect to GitHub (התחברות ל-GitHub).
- בוחרים את החשבון ב-GitHub ואת המאגר. לוחצים על הבא.
- בקטע הגדרות פריסה > תיקיית שורש, מזינים את שם התיקייה עם קוד המקור (אם קובץ
package.json
לא נמצא בתיקיית השורש של המאגר). - בקטע Live branch, בוחרים את הענף main במאגר GitHub. לוחצים על הבא.
- מזינים מזהה לשרת העורפי (לדוגמה,
chatbot
). - לוחצים על סיום ופריסה.
יחלפו כמה דקות עד שהפריסה החדשה תהיה מוכנה. אפשר לבדוק את סטטוס הפריסה בקטע App Hosting במסוף Firebase.
מעכשיו, בכל פעם שתדחפו שינוי למאגר GitHub, שירות Firebase App Hosting יבנה ויפרוס את האפליקציה באופן אוטומטי.
9. סיכום
כל הכבוד! השגתם הרבה ב-codelab הזה!
התקנה והגדרה של תוספים
השתמשתם במסוף Firebase כדי להגדיר ולהתקין תוספים שונים של Firebase שמתבססים על AI גנרטיבי. השימוש בתוספים של Firebase נוח כי לא צריך ללמוד ולכתוב הרבה קוד סטנדרטי כדי לטפל באימות לשירותי Google Cloud או בלוגיקה של הקצה העורפי של Cloud Functions כדי להאזין ל-Firestore ולממשקי API ולשירותים של Google Cloud ולקיים איתם אינטראקציה.
ניסיון של תוספים באמצעות מסוף Firebase
במקום לקפוץ ישר לכתיבת קוד, הקדשתם זמן כדי להבין איך התוספים האלה של AI גנרטיבי פועלים, על סמך קלט שסיפקתם דרך Firestore או Cloud Storage. האפשרות הזו יכולה להיות שימושית במיוחד כשמבצעים ניפוי באגים בפלט של תוסף.
פיתוח אפליקציית אינטרנט מבוססת-AI
יצרתם אפליקציית אינטרנט מבוססת-AI שמשתמשת בתוספים של Firebase כדי לגשת רק לכמה יכולות של מודל Gemini.
באפליקציית האינטרנט, משתמשים בתוסף Chatbot with Gemini API כדי לספק למשתמש ממשק צ'אט אינטראקטיבי, שכולל הקשר ספציפי לאפליקציה והיסטורי בשיחות – כאשר כל הודעה מאוחסנת במסמך Firestore שמוגדר למשתמש מסוים.
בנוסף, Gemini בדפדפן השתמש בתוסף 'משימות מולטימודאליות עם Gemini API' כדי ליצור תיאורי תמונות אוטומטיים לתמונות שהועלו.
השלבים הבאים
- כדאי להתנסות בהנחיות ולנצל את חלון ההקשר הגדול ב-Google AI Studio או ב-Vertex AI Studio.
- מידע על חיפוש בעזרת בינה מלאכותית גנרטיבית עם אחזור משופר (RAG)
- אפשר לנסות סדנת קוד בקצב אישי שמראה איך להוסיף צ'אטבוט לאפליקציית Firebase קיימת באמצעות Genkit (שירות חדש של מסגרת AI).
- מידע נוסף על יכולות חיפוש דמיון ב-Firestore וב-Cloud SQL ל-PostgreSQL
- אפשר ללמד את הצ'אטבוט להתקשר לאפליקציה הקיימת באמצעות קריאה לפונקציה.