1. מבוא
בשיעור Codelab הזה תוסיפו ווידג'ט חכם של צ'אט לתמיכת לקוחות לחנות מסחר אלקטרוני לציוד לטיולים בטבע שנקראת Rugged Terrain Guide. תשתמשו ב-Firebase AI Logic כדי לבנות את הסוכן הזה, ותלמדו איך להגדיר תבנית הנחיה בצד השרת (product-agent) שמטפלת בדמות של ה-AI, בכללים מחמירים של תקציב פיוס ומשתמשת באופן דינמי בקטלוג המוצרים כהקשר.
מה עושים:
- מקבלים את קוד לתחילת הדרך לאפליקציית האינטרנט של ה-Codelab הזה.
- מגדירים פרויקט Firebase.
- הגדרה ואתחול של שירותי Firebase (כמו Firebase AI Logic) באפליקציית אינטרנט.
- מגדירים תבנית הנחיה בצד השרת במסוף Firebase.
- גישה לתבנית מקריאה לשירות ה-AI הגנרטיבי מחזית דומה ל-React של TypeScript.
מה דרוש לכם?
- דפדפן אינטרנט כמו Chrome.
- היכרות בסיסית עם TypeScript ו-Node.js.
- סביבת פיתוח משולבת (IDE) או עורך טקסט לפי בחירתכם. Antigravity היא בחירה טובה.
2. קבלת קוד לתחילת הדרך
- במסוף, משכפלים את מאגר הקוד ההתחלתי:
git clone https://github.com/GoogleCloudPlatform/devrel-demos.git - עוברים לספריית הקוד ומתקינים את יחסי התלות:
cd devrel-demos/codelabs/firebase-server-prompt-templates-codelab npm install
3. הגדרת פרויקט Firebase
יצירת פרויקט Firebase
- נכנסים למסוף Firebase באמצעות חשבון Google.
- לוחצים על הלחצן כדי ליצור פרויקט חדש, ואז מזינים שם לפרויקט (לדוגמה,
rugged-terrain-ai).
- לוחצים על המשך.
- אם מוצגת בקשה לעשות זאת, קוראים ומאשרים את התנאים של Firebase, ואז לוחצים על המשך.
- (אופציונלי) מפעילים את העזרה מבוססת-AI במסוף Firebase (שנקראת Gemini ב-Firebase).
- ב-codelab הזה לא צריך להשתמש ב-Google Analytics, ולכן משביתים את האפשרות Google Analytics.
- לוחצים על יצירת פרויקט, מחכים שהפרויקט יוקצה ולוחצים על המשך.
שדרוג תוכנית התשלומים של Firebase
כדי להשתמש בשירותי Firebase ב-codelab הזה, הפרויקט שלכם ב-Firebase צריך להיות בתוכנית התמחור pay-as-you-go (Blaze), כלומר הוא צריך להיות מקושר לחשבון לחיוב ב-Cloud.
- בחשבון לחיוב ב-Cloud צריך להגדיר אמצעי תשלום, כמו כרטיס אשראי.
- אם אתם חדשים ב-Firebase וב-Google Cloud, כדאי לבדוק אם אתם עומדים בדרישות לקבלת קרדיט בשווי 300$ותקופת ניסיון בחינם בחשבון לחיוב ב-Cloud.
- אם אתם משתתפים ב-Codelab כחלק מאירוע, כדאי לשאול את מארגן האירוע אם יש קרדיטים ל-Cloud.
כדי לשדרג את הפרויקט לתוכנית Blaze, פועלים לפי השלבים הבאים:
- במסוף Firebase, בוחרים באפשרות שדרוג התוכנית.
- בוחרים בתוכנית Blaze. פועלים לפי ההוראות במסך כדי לקשר חשבון לחיוב ב-Cloud לפרויקט.
אם הייתם צריכים ליצור חשבון לחיוב ב-Cloud כחלק מהשדרוג, יכול להיות שתצטרכו לחזור לתהליך השדרוג במסוף Firebase כדי להשלים את השדרוג.
4. הגדרת שירותי Firebase וקישור האפליקציה
ב-codelab הזה, צריך להגדיר את Cloud Storage for Firebase ואת Firebase AI Logic בפרויקט Firebase. צריך גם לקשר את קוד המקור של האפליקציה לפרויקט Firebase.
הגדרת Cloud Storage for Firebase
ב-Codelab הזה משתמשים ב-Cloud Storage for Firebase כדי לאחסן תיאורי מוצרים.
- במסוף Firebase, עוברים אל Databases & Storage (מסדי נתונים ואחסון) > Storage (אחסון).
- לוחצים על שנתחיל?.
- בוחרים מיקום לקטגוריית האחסון שמוגדרת כברירת מחדל.
אפשר להשתמש בקטגוריות במיקומיםUS-WEST1,US-CENTRAL1ו-US-EAST1במסגרת המסלול תמיד בחינם של Google Cloud Storage. התמחור והשימוש בקטגוריות בכל המיקומים האחרים מפורטים במאמר בנושא תמחור ושימוש ב-Google Cloud Storage. - לוחצים על מצב הפקה. בשלבים הבאים נעדכן את כללי האבטחה האלה כך שיהיו ספציפיים ל-codelab הזה.
- לוחצים על יצירה.
- עדכון כללי האבטחה:
- אחרי שהבאקט מוקצה, עוברים לכרטיסייה כללים.
- מעתיקים את הכללים הבאים ומדביקים אותם:
rules_version = '2'; service firebase.storage { match /b/{bucket}/o { match /products.txt { allow read; } } } - לוחצים על פרסום.
- מעלים את תיאורי המוצרים מקוד לתחילת הדרך:
- לוחצים על הכרטיסייה קבצים של קטגוריית האחסון.
- לוחצים על העלאת קובץ ומעלים את הקובץ
products.txtמקוד לתחילת הדרך. הקובץ הזה נמצא במיקום:src/data/products.txt.
הגדרת Firebase AI Logic
Firebase AI Logic הוא שירות Firebase העיקרי שבו תשתמשו ב-codelab הזה.
- במסוף Firebase, עוברים אל AI Services (שירותי AI) > AI Logic (לוגיקת AI).
- לוחצים על שנתחיל?.
- בכרטיס Vertex AI Gemini API, לוחצים על Get started with this API (תחילת העבודה עם ה-API הזה) ופועלים לפי ההוראות במסך. בתהליך הזה יופעלו ממשקי ה-API הנדרשים כדי שתוכלו להשתמש ב-Firebase AI Logic עם Vertex AI Gemini API.
- (אופציונלי) בוחרים באפשרות מעקב אחרי שימוש בתכונות AI כדי שתוכלו לעקוב אחרי מדדים שונים ברמת האפליקציה ונתוני שימוש, ולקבל תמונה מקיפה של הבקשות שלכם באמצעות Firebase AI Logic.
קישור הקוד לפרויקט Firebase
במסגרת ההגדרה של Firebase AI Logic, תתבקשו ליצור אפליקציית אינטרנט ב-Firebase ולהוסיף את ההגדרה לקוד המקור.
- כשמוצגת הנחיה בתהליך ההגדרה של Firebase AI Logic, לוחצים על סמל האינטרנט (
) כדי לרשום אפליקציית אינטרנט חדשה. - נותנים לאפליקציה שם (לדוגמה,
Rugged Web). - מעתיקים את אובייקט
firebaseConfigמהוראות ההגדרה.
בשלב הבא, מעדכנים את הקוד לתחילת הדרך:
- בעורך הקוד, פותחים את
src/firebase.ts. - מחליפים את
firebaseConfigהקיים בזה שהעתקתם ממסוף Firebase.
הקובץ אמור להיראות כך:
import { getAI, getTemplateGenerativeModel, VertexAIBackend } from "firebase/ai";
import { initializeApp } from "firebase/app";
// Your web app's Firebase configuration
const firebaseConfig = {
apiKey: "YOUR_API_KEY",
authDomain: "YOUR_PROJECT_ID.firebaseapp.com",
projectId: "YOUR_PROJECT_ID",
storageBucket: "YOUR_PROJECT_ID.firebasestorage.app",
messagingSenderId: "YOUR_MESSAGING_SENDER_ID",
appId: "YOUR_APP_ID"
};
// Initialize Firebase
export const app = initializeApp(firebaseConfig);
const ai = getAI(app, { backend: new VertexAIBackend() });
5. יצירת תבנית הנחיה בצד השרת
במקום להטמיע הנחיות מורכבות ל-AI באפליקציית הלקוח, תוכלו להשתמש בתחביר Dotprompt כדי לנהל את ההוראות בצורה מאובטחת בשרת.
כך משתמשי הקצה לא יכולים לראות את הכללים הסודיים של 'תקציב הפיצוי'.
- במסוף Firebase, עוברים לקטע Vertex AI או Prompt Management.
- יוצרים תבנית חדשה להנחיות ונותנים לה את השם
product-agent. - מגדירים את המודל ל-
gemini-2.5-flash. - מגדירים את סכימת הקלט בדיוק באופן הבא:
input: schema: query: type: string description: the customers ask of the robot productId?: type: string description: the product the customer is looking at right now history?: type: array description: list of previous history between the user and system items: type: object required: [role, contents] properties: role: type: string contents: type: string - מעתיקים את התוכן של
agent-product.promptמספריית הבסיס לשדה הנחיה והוראות מערכת אופציונליות. ההוראה הזו מנחה את המודל בצורה מאובטחת איך להתנהג בתור 'מפעיל חזק' ומוסיפה את קטלוג המוצרים. - במסוף Firebase, שומרים ומפרסמים את תבנית
product-agent.
6. הפעלת מודל ה-AI
עכשיו, אחרי שהתבנית מוגדרת בצורה מאובטחת בשרת, צריך רק לקרוא לה מהקצה הקדמי של האפליקציה.
- בעורך הקוד, חוזרים אל
src/firebase.ts. - מתחת לאתחול, משתמשים ב-
getTemplateGenerativeModelכדי להתחבר לתבנית:const model = getTemplateGenerativeModel(ai); export const callCustomerSupportModel = async (query: string, productId?: string, history?: { role: string, contents: string }[]) => { // Generate content using the published 'product-agent' template const result = await model.generateContent('product-agent', { query, productId, history, }); return result.response.text(); }
7. אבטחת הסוכן באמצעות Firebase App Check
מודלים של AI הם עוצמתיים, אבל אפשר גם לעשות בהם שימוש לרעה אם נקודות קצה ציבוריות לא מוגנות. מומלץ להשתמש תמיד ב-Firebase App Check כדי לוודא שרק אפליקציית האינטרנט האמיתית שלכם יכולה לקרוא למודל הגנרטיבי של Vertex AI, ולחסום בוטים ולקוחות לא מורשים.
- במסוף Firebase, עוברים אל Build (פיתוח) > App Check.
- לוחצים על הכרטיסייה אפליקציות, מרחיבים את אפליקציית האינטרנט (
Rugged Web) ולוחצים על הספק reCAPTCHA Enterprise. - בוחרים באפשרות יצירת מפתח חדש של reCAPTCHA Enterprise וממלאים את ההנחיה:
- Name (שם):
Codelab Key - Domains: מוסיפים את
localhostואת127.0.0.1כדי לאפשר לשרת Vite המקומי לשלוח בקשות.
- Name (שם):
- לוחצים על שמירה כדי לרשום את האפליקציה.
- אחרי הרישום, מפתח האתר יופיע במסוף Firebase. מעתיקים את המחרוזת הזו.
- בכלי לעריכת קוד, פותחים שוב את
src/firebase.ts. - מוסיפים את שורות הייבוא הבאות בחלק העליון:
import { initializeAppCheck, ReCaptchaEnterpriseProvider } from "firebase/app-check"; - מוסיפים את ההפעלה של App Check מיד אחרי הקריאה ל-
initializeApp(firebaseConfig)ומדביקים את מפתח האתר שהעתקתם:// Initialize App Check const appCheck = initializeAppCheck(app, { provider: new ReCaptchaEnterpriseProvider('YOUR_RECAPTCHA_ENTERPRISE_SITE_KEY'), useLimitedUseAppCheckTokens: true }); - עדכן את
getAI()בקשה להפעלת פונקציה כדי להשתמש בטוקנים האלה. צריך לבצע את השינוי הבא: אם מגדירים את הערך שלconst ai = getAI(app, { backend: new VertexAIBackend(), useLimitedUseAppCheckTokens: true });useLimitedUseAppCheckTokensכ-TRUE, מוודאים שטוקנים לטווח קצר יחולו כדי לעזור להגביל את הניצול לרעה שהבק-אנד עשוי לקבל.
8. הפעלת האפליקציה
אחרי שמגדירים את Firebase ומחברים את הווידג'ט של הצ'אט עם התמיכה, אפשר להריץ את האפליקציה.
- בטרמינל, מריצים את שרת הפיתוח של Vite:
npm run dev - פותחים את כתובת ה-URL המקומית שסופקה (בדרך כלל
http://localhost:5173/). - לוחצים על כפתור הפעולה הצף (FAB) תמיכה טקטית בפינה השמאלית התחתונה.
- אפשר לנסות לשאול שאלות על המוצרים, למשל:
- "I'm looking for a weatherproof shell"
- "הכובע שלי עם הציטוט 'Sub-Zero' פגום, מה אפשר לעשות?"
- תמשיכו להתנגד כדי להפעיל את הלוגיקה של ה-AI בנושא 'תקציב פיוס'!
9. (אופציונלי) מחיקת המשאבים משיעור ה-Codelab
כדי להימנע מחיובים אפשריים בחשבון לחיוב ב-Google Cloud, אפשר למחוק את המשאבים שנוצרו במהלך ה-codelab הזה.
- עוברים אל מסוף Firebase.
- בוחרים את הפרויקט
rugged-terrain-ai. - עוברים אל הגדרות הפרויקט (סמל גלגל השיניים).
- גוללים לחלק התחתון של הדף ולוחצים על מחיקת הפרויקט.
- פועלים לפי ההוראות במסך כדי לאשר את המחיקה.
10. כל הכבוד!
🎊 המשימה הושלמה! שילבתם בהצלחה סוכן תמיכת לקוחות מבוסס-AI, חזק ומונע-תבניות.
מה השגתם:
- הפעלת Firebase וקצה העורפי של Vertex AI באפליקציית לקוח.
- הגדרתם תבנית מאובטחת להנחיה בצד השרת באמצעות Handlebars וסכימות קפדניות של קלט, כדי להגדיר את ההתנהגות המורכבת של הסוכן.
- קורא באופן דינמי ל-LLM ומעביר בצורה מאובטחת את היסטוריית הצ'אט ומזהי מוצרים הקשריים בלי לחשוף ללקוח את הלוגיקה הפנימית של ההנחיות.
מה השלב הבא?
- Firebase App Check: מאבטח את נקודות הקצה של ה-AI מפני שימוש לרעה.