1. מבוא
בשיעור Codelab הזה נסביר איך להוסיף ווידג'ט צ'אט חכם לתמיכת לקוחות בחנות מסחר אלקטרוני לציוד לטיולים בשם Rugged Terrain Guide. תשתמשו ב-Firebase AI Logic כדי לבנות את הסוכן הזה, ותלמדו איך להגדיר תבנית לפרומפט בצד השרת (product-agent) שמטפלת באישיות של ה-AI, בכללים מחמירים של תקציב לפיצוי משתמשים ומשתמשת באופן דינמי בקטלוג המוצרים כהקשר.
מה עושים:
- מקבלים את קוד לתחילת הדרך של אפליקציית האינטרנט של ה-Codelab הזה.
- מגדירים פרויקט Firebase.
- הגדרה ואתחול של שירותי Firebase (כמו Firebase AI Logic) באפליקציית אינטרנט.
- מגדירים תבנית לפרומפט בצד השרת במסוף Firebase.
- גישה לתבנית מתוך קריאה לשירות ה-AI הגנרטיבי מקצה קדמי של TypeScript שדומה ל-React.
מה דרוש לכם?
- דפדפן אינטרנט כמו 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 צריך להגדיר אמצעי תשלום, כמו כרטיס אשראי.
- במהלך מבצעים מיוחדים או אם אתם משתתפים בסדנת ה-codelab הזו כחלק מאירוע, יכול להיות שיהיו לכם קרדיטים ל-Google Cloud.
- אם אתם חדשים ב-Firebase וב-Google Cloud, כדאי לבדוק אם אתם עומדים בדרישות לקבלת קרדיט בשווי 300$ותקופת ניסיון בחינם בחשבון לחיוב ב-Cloud.
כדי לשדרג את הפרויקט לתוכנית Blaze, פועלים לפי השלבים הבאים:
- במסוף Firebase, בוחרים באפשרות שדרוג התוכנית.
- בוחרים בתוכנית Blaze. פועלים לפי ההוראות במסך כדי לקשר חשבון לחיוב ב-Cloud לפרויקט.
- אם אתם משתמשים בקרדיטים של Google Cloud בשביל ה-codelab הזה, סביר להניח שהחשבון לחיוב נקרא
Google Cloud Platform Trial Billing AccountאוMy Billing Account. - אם הייתם צריכים ליצור חשבון לחיוב ב-Cloud כחלק מהשדרוג, יכול להיות שתצטרכו לחזור לתהליך השדרוג במסוף Firebase כדי להשלים את השדרוג.
- אם אתם משתמשים בקרדיטים של Google Cloud בשביל ה-codelab הזה, סביר להניח שהחשבון לחיוב נקרא
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; } } } - לוחצים על פרסום.
- מעלים את תיאורי המוצרים מקוד ההתחלה:
- לוחצים על הכרטיסייה Files (קבצים) של קטגוריית האחסון.
- לוחצים על העלאת קובץ ומעלים את הקובץ
products.txtמקוד ההתחלה. הקובץ הזה נמצא במיקום:src/data/products.txt.
הגדרת Firebase AI Logic
Firebase AI Logic הוא שירות Firebase העיקרי שבו תשתמשו בשיעור Codelab הזה.
- במסוף Firebase, עוברים אל AI Services (שירותי AI) > AI Logic (לוגיקת AI).
- לוחצים על שנתחיל?.
- בכרטיס Agent Platform Gemini API, לוחצים על Get started with this API (תחילת העבודה עם ה-API הזה) ופועלים לפי ההוראות במסך. תהליך העבודה הזה יאפשר לכם להפעיל את ממשקי ה-API הנדרשים כדי להשתמש ב-Firebase AI Logic עם Agent Platform 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, AgentPlatformBackend } 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 AgentPlatformBackend() });
5. יצירת תבנית לפרומפט בצד השרת
במקום להטמיע הנחיות מורכבות ל-AI באפליקציית הלקוח, תוכלו להשתמש בתחביר Dotprompt כדי לנהל את ההוראות בצורה מאובטחת בשרת.
כך משתמשי הקצה לא יכולים לראות את הכללים הסודיים של 'תקציב הפיצויים'.
- במסוף Firebase, עוברים אל AI Services (שירותי AI) > AI Logic (לוגיקת AI) > הכרטיסייה Prompt templates (תבניות של הנחיות).
- לוחצים על יצירת תבנית ובוחרים באפשרות תבנית ריקה.
- מגדירים את שם התבנית ל-
Product Agentואת המזהה ל-product-agent. - מגדירים את המודל ל-
gemini-3.1-flash-lite(או לגרסה העדכנית ביותר שזמינה). - מהקוד לתחילת הדרך שסופק ל-Codelab הזה, מעתיקים את התוכן של
product-agent.prompt(הקובץ הזה נמצא בתיקיית השורש). לאחר מכן, הדביקו את התוכן הזה בשדה הנחיה ו (אופציונלי) הוראות מערכת בתבנית לפרומפט של השרת במסוף Firebase. התוכן הזה נותן למודל הוראות מאובטחות לגבי ההתנהגות שלו כ'מפעיל מחוספס' ולגבי השימוש בקטלוג המוצרים. - בשדה Test input מגדירים את סכימת הקלט בדיוק כך:
{ "type": "object", "required": [ "query" ], "properties": { "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" } } } } } } - לוחצים על שמירת תבנית כדי לשמור ולפרסם את תבנית
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 כדי לוודא שרק אפליקציית האינטרנט האמיתית שלכם יכולה לשלוח בקשות מוצלחות אל Gemini API, וכך לחסום בוטים ולקוחות לא מורשים.
- במסוף Google Cloud, עוברים אל Security (אבטחה) > Fraud Defense (הגנה מפני הונאה).
- לוחצים על יצירת מפתח וממלאים את השדות:
- שם לתצוגה:
Codelab Key - סוג האפליקציה: אתר
- רשימת דומיינים: מוסיפים את
localhostואת127.0.0.1כדי לאפשר לשרת Vite המקומי לשלוח בקשות.
- שם לתצוגה:
- לוחצים על Create key כדי לרשום את המפתח.
- בחלק העליון של הדף 'פרטים של מפתח Fraud Defense', מעתיקים את מזהה מפתח האתר ללוח.
- במסוף Firebase, עוברים אל Security (אבטחה) > App Check (בדיקת אפליקציות).
- לוחצים על הכרטיסייה אפליקציות, מרחיבים את אפליקציית האינטרנט (
Rugged Web) ולוחצים על הספק reCAPTCHA Enterprise. - בשדה מפתח האתר של reCAPTCHA Enterprise, מדביקים את מזהה מפתח האתר מהדף 'פרטי מפתח להגנה מפני הונאה' ולוחצים על שמירה.
- בעורך הקוד, פותחים שוב את
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'), isTokenAutoRefreshEnabled: true }); - צריך לעדכן את הקריאה לפונקציה
getAI()כדי להשתמש בטוקנים האלה. מבצעים את השינוי הבא: אם מגדירים את הערך שלconst ai = getAI(app, { backend: new AgentPlatformBackend(), useLimitedUseAppCheckTokens: true });useLimitedUseAppCheckTokensל-true, מוודאים שאסימונים לטווח קצר יחולו כדי לעזור להגביל את הניצול לרעה שהקצה העורפי עשוי לקבל.
8. הפעלת האפליקציה
אחרי שמגדירים את Firebase ומקשרים את הווידג'ט של הצ'אט עם התמיכה, אפשר להפעיל את האפליקציה.
- בטרמינל, מריצים את שרת הפיתוח של Vite:
npm run dev - פותחים את כתובת ה-URL המקומית שסופקה (בדרך כלל
http://localhost:5173/). - לוחצים על כפתור הפעולה הצף (FAB) תמיכה טקטית בפינה השמאלית התחתונה.
- אפשר לנסות לשאול שאלות על המוצרים, למשל:
- "I'm looking for a weatherproof shell" (אני מחפש מעיל עמיד בפני מזג אוויר)
- "My sub-zero beanie is defective, what can I do?"
- כדאי להמשיך לדחות את ההמלצות כדי להפעיל את הלוגיקה של 'תקציב הפיוס' של ה-AI.
9. (אופציונלי) מחיקת משאבים מ-Codelab
כדי להימנע מחיובים אפשריים בחשבון לחיוב ב-Google Cloud, אפשר למחוק את המשאבים שנוצרו במהלך ה-codelab הזה.
- במסוף Firebase, עוברים אל הגדרות > הכרטיסייה כללי.
- מוודאים שהפרויקט שמוצג הוא הפרויקט שבו השתמשתם ב-codelab הזה. אם זה לא הפרויקט של ה-Codelab, אפשר להשתמש בכלי לבחירת פרויקטים בפינה הימנית העליונה כדי לשנות את הפרויקט.
- גוללים לתחתית הדף ולוחצים על מחיקת הפרויקט.
- פועלים לפי ההוראות במסך כדי לאשר את המחיקה.
10. כל הכבוד!
🎊 המשימה הושלמה! שילבתם בהצלחה סוכן תמיכת לקוחות מבוסס-AI חזק שמבוסס על תבניות.
מה השגתם:
- אתחול Firebase ו-Agent Platform בק-אנד באפליקציית לקוח.
- הגדרת תבנית מאובטחת לפרומפט בצד השרת באמצעות Handlebars וסכימות קלט מחמירות כדי להגדיר את ההתנהגות המורכבת של הסוכן.
- קורא באופן דינמי ל-LLM ומעביר בצורה מאובטחת את היסטוריית הצ'אט ומזהי מוצרים הקשריים, בלי לחשוף את הלוגיקה הפנימית של ההנחיות ללקוח.
מה השלב הבא?
- Firebase App Check: מאבטח את נקודות הקצה של ה-AI מפני שימוש לרעה.