מענה על שאלות משיחות ב-Chat באמצעות אפליקציית Gemini AI Chat

במדריך הזה מוסבר איך ליצור אפליקציה ל-Google Chat שעונה על שאלות על סמך שיחות במרחבים ב-Chat, באמצעות AI גנרטיבי שמבוסס על Vertex AI עם Gemini. אפליקציית Chat משתמשת ב-Google Workspace Events API וב-Pub/Sub כדי לזהות שאלות שפורסמו במרחבים ב-Chat ולענות עליהן בזמן אמת, גם אם לא תייגו אותה.

אפליקציית Chat משתמשת בכל ההודעות שנשלחו במרחב כמקור נתונים וכבסיס ידע: כשמישהו שואל שאלה, אפליקציית Chat בודקת אם כבר שותפו תשובות בעבר ואז משתפת אחת מהן. אם לא נמצאה תשובה, הוא יגיד שהוא לא יכול לענות. בכל תשובה, המשתמשים יכולים ללחוץ על לחצן פעולה של אביזר כדי לתייג באמצעות @את מנהל המרחב ולבקש תשובה. אפליקציית Google Chat משתמשת ב-AI מבית Gemini כדי להסתגל ולהרחיב את בסיס הידע שלה. היא עוברת אימון מתמשך על שיחות במרחבים שבהם היא נוספה.

כך פועלת אפליקציית Chat במרחב משותף לתמיכה ולצירוף עובדים חדשים:

  • כשמתייגים את אפליקציית העוזר הדיגיטלי מבוסס-AI, היא מצורפת למרחב.
    איור 1. צ'ארלי מוסיף למרחב ב-Chat את אפליקציית ה-Chat של עוזר מבוסס-AI לידע.
  • דנה שואלת שאלה.
    איור 2. דנה שואלת אם החברה מציעה הדרכה בנושא נשיאת דברים בפני קהל.
  • אפליקציית הצ'אט של עוזר ה-AI לענייני ידע עונה על השאלה.
    איור 3. אפליקציית הצ'אט של עוזר ה-AI לידע שולחת הנחיה ל-Vertex AI עם Gemini כדי לענות על השאלה של דנה על סמך היסטוריית השיחות במרחב הצ'אט, ואז משתפת את התשובה.

דרישות מוקדמות

מטרות

  • ליצור אפליקציה ל-Chat שמשתמשת ב-AI גנרטיבי כדי לענות על שאלות שמבוססות על מידע שמשותף בשיחות במרחבים ב-Chat.
  • עם AI גנרטיבי:
    • לזהות שאלות של עובדים ולענות עליהן.
    • לומד באופן רציף משיחות מתמשכות במרחב ב-Chat.
  • להאזין להודעות במרחב ב-Chat ולענות להן בזמן אמת, גם אם לא שולחים הודעות ישירות לאפליקציית Chat.
  • לשמור את ההודעות על ידי כתיבה למסד נתונים של Firestore וקריאה ממנו.
  • כדי לעודד שיתוף פעולה במרחב ב-Chat, אפשר לתייג את מנהלי המרחב אם לא נמצאה תשובה לשאלה.

ארכיטקטורה

בתרשים הבא מוצגת הארכיטקטורה של משאבי Google Workspace ו-Google Cloud שמשמשים את אפליקציית הצ'אט של עוזר ה-AI לידע.

תרשים הארכיטקטורה של אפליקציית הצ'אט של העוזר מבוסס-AI

כך פועלת אפליקציית Chat, העוזרת האישית מבוססת-AI:

  • משתמש מוסיף את אפליקציית העוזר הדיגיטלי מבוסס-AI ל-Chat למרחב ב-Chat:

    1. אפליקציית Chat מבקשת מהמשתמש שהוסיף אותה למרחב ב-Chat להגדיר אימות והרשאה.

    2. אפליקציית Chat מאחזרת את ההודעות במרחב על ידי קריאה לשיטה spaces.messages.list ב-Chat API, ואז מאחסנת את ההודעות שאוחזרו במסד נתונים של Firestore.

    3. אפליקציית Chat קוראת לשיטה subscriptions.create ב-Google Workspace Events API כדי להתחיל להאזין לאירועים כמו הודעות במרחב. נקודת הקצה של ההתראות של המינוי היא נושא ב-Pub/Sub שמשתמש ב-Eventarc כדי להעביר את האירוע לאפליקציית Chat.

    4. אפליקציית Chat מפרסמת הודעת היכרות במרחב.

  • משתמש במרחב ב-Chat מפרסם הודעה:

    1. אפליקציית Chat מקבלת את ההודעה בזמן אמת מנושא Pub/Sub.

    2. האפליקציה ל-Chat מוסיפה את ההודעה למסד הנתונים של Firestore.

      אם משתמש עורך או מוחק את ההודעה בשלב מאוחר יותר, אפליקציית Chat מקבלת את האירוע המעודכן או את אירוע המחיקה בזמן אמת, ואז מעדכנת או מוחקת את ההודעה במסד הנתונים של Firestore.

    3. אפליקציית Chat שולחת את ההודעה אל Vertex AI עם Gemini:

      1. ההנחיה מכוונת את Vertex AI עם Gemini לבדוק אם ההודעה כוללת שאלה. אם כן, Gemini יענה על השאלה על סמך היסטוריית ההודעות במרחב ב-Chat שמאוחסנת ב-Firestore, ואז אפליקציית Google Chat תשלח את ההודעה למרחב ב-Chat. אם לא, אל תשיבו להודעה.

      2. אם Vertex AI עם Gemini עונה על השאלה, אפליקציית הצ'אט מפרסמת את התשובה על ידי קריאה לשיטה spaces.messages.create ב-Chat API באמצעות אימות האפליקציה.

        אם Vertex AI עם Gemini לא יכול לענות על השאלה, אפליקציית Chat מפרסמת הודעה שבה מצוין שלא נמצאה תשובה לשאלה הזו בהיסטוריה של המרחב ב-Chat.

        ההודעות תמיד כוללות לחצן פעולה נלווה שהמשתמשים יכולים ללחוץ עליו, וכתוצאה מכך אפליקציית Chat מתייגת את מנהל המרחב המשותף עם בקשה למענה.

  • אפליקציית Chat מקבלת הודעה על מחזור החיים מ-Google Workspace Events API, שלפיה המינוי למרחב ב-Chat עומד לפוג:

    1. אפליקציית Chat שולחת בקשה לחידוש המינוי על ידי קריאה לשיטה subscriptions.patch ב-Google Workspace Events API.
  • אפליקציית Chat הוסרה ממרחב ב-Chat:

    1. אפליקציית Chat מוחקת את המינוי על ידי קריאה לשיטה subscriptions.delete ב-Google Workspace Events API.

    2. אפליקציית Chat מוחקת את הנתונים של המרחב ב-Firestore.

בדיקת המוצרים שבהם נעשה שימוש באפליקציית Chat של העוזר הדיגיטלי מבוסס-AI

אפליקציית Chat עם AI משתמשת במוצרים הבאים של Google Workspace ו-Google Cloud:

  • Vertex AI API עם Gemini: פלטפורמת AI גנרטיבי שמבוססת על Gemini. עוזר ה-AI החכם אפליקציית הצ'אט משתמשת ב-Vertex AI API עם Gemini כדי לזהות, להבין ולענות על שאלות של עובדים.
  • Chat API: ‫API לפיתוח אפליקציות ל-Google Chat שמקבלות אירועי אינטראקציה ב-Chat ומגיבות להם, כמו הודעות. אפליקציית ה-Chat של עוזר ה-AI משתמשת ב-Chat API כדי:
    • לקבל אירועי אינטראקציה שנשלחים על ידי Chat ולהגיב להם.
    • רשימת ההודעות שנשלחו במרחב.
    • לפרסם תשובות לשאלות של משתמשים במרחב.
    • מגדירים מאפיינים שקובעים איך הוא יופיע בצ'אט, כמו שם ותמונת אווטאר.
  • Google Workspace Events API: ממשק ה-API הזה מאפשר להירשם לאירועים ולנהל התראות על שינויים באפליקציות Google Workspace. אפליקציית Chat של העוזר האישי מבוסס ה-AI משתמשת ב-Google Workspace Events API כדי להאזין להודעות שפורסמו במרחב ב-Chat, וכך היא יכולה לזהות שאלות ולענות עליהן גם כשלא מתייגים אותה.
  • Firestore: מסד נתונים של מסמכים ללא שרת. עוזר מבוסס-AI אפליקציית Chat משתמשת ב-Firestore כדי לאחסן נתונים על הודעות שנשלחות במרחב ב-Chat.
  • Pub/Sub: ‫Pub/Sub הוא שירות העברת הודעות אסינכרוני וניתן להרחבה, שמפריד בין שירותים שיוצרים הודעות לבין שירותים שמבצעים עיבוד של ההודעות האלה. אפליקציית ה-Chat של עוזר ה-AI ליצירת ידע משתמשת ב-Pub/Sub כדי לקבל אירועים של מינויים ממרחבים ב-Chat.
  • Eventarc: ‫Eventarc מאפשר לכם לבנות ארכיטקטורות מבוססות-אירועים בלי שתצטרכו להטמיע, להתאים אישית או לתחזק את התשתית הבסיסית. אפליקציית ה-Chat עם העוזר הדיגיטלי מבוסס ה-AI משתמשת ב-Eventarc כדי לנתב אירועים מ-Pub/Sub למרחב ב-Chat ולפונקציית Cloud שמקבלת ומעבדת את אירועי המינוי.
  • Cloud Functions: שירות מחשוב קל משקל ללא שרת (serverless) שמאפשר ליצור פונקציות עצמאיות למטרה יחידה, שיכולות להגיב לאינטראקציה עם Chat ולאירועי הרשמה, בלי צורך לנהל שרת או סביבת זמן ריצה. אפליקציית Chat של עוזר מבוסס-AI ליצירת ידע משתמשת בשתי פונקציות של Cloud Functions שנקראות:
    • app: מארח את נקודת הקצה (endpoint) של HTTP שאליה Chat שולח אירועי אינטראקציה, ומשמש כפלטפורמת מחשוב להרצת לוגיקה שמבצעת עיבוד של האירועים האלה ומגיבה להם.
    • eventsApp: מקבל ומעבד אירועים במרחב ב-Chat, כמו הודעות ממינוי ל-Pub/Sub.
    ‫Cloud Functions משתמש במוצרי Google Cloud הבאים כדי ליצור ולארח משאבי מחשוב:
    • Cloud Build: פלטפורמה מנוהלת לאינטגרציה רציפה, לפיתוח רציף ולפריסה רציפה, שמריצה גרסאות build אוטומטיות.
    • Cloud Run: סביבה מנוהלת להרצת אפליקציות בקונטיינרים.

הכנת הסביבה

בקטע הזה מוסבר איך ליצור ולהגדיר פרויקט ב-Google Cloud לאפליקציית Chat.

יצירת פרויקט של Google Cloud

מסוף Google Cloud

  1. במסוף Google Cloud, עוברים אל תפריט > IAM & Admin > Create a Project (יצירת פרויקט).

    כניסה לדף Create a Project

  2. בשדה Project Name (שם הפרויקט), מזינים שם תיאורי לפרויקט.

    אופציונלי: כדי לערוך את מזהה הפרויקט, לוחצים על עריכה. אי אפשר לשנות את מזהה הפרויקט אחרי שהוא נוצר, לכן חשוב לבחור מזהה שיענה על הצרכים שלכם למשך כל חיי הפרויקט.

  3. בשדה Location, לוחצים על Browse כדי להציג מיקומים אפשריים לפרויקט. אחר כך לוחצים על בחירה.
  4. לוחצים על יצירה. מערכת Google Cloud מעבירה אתכם לדף Dashboard והפרויקט נוצר תוך כמה דקות.

CLI של gcloud

באחת מסביבות הפיתוח הבאות, ניגשים אל Google Cloud CLI‏ (gcloud):

  • Cloud Shell: כדי להשתמש בטרמינל אונליין שבו כבר מוגדר ה-CLI של gcloud, צריך להפעיל את Cloud Shell.
    הפעלת Cloud Shell
  • מעטפת מקומית: כדי להשתמש בסביבת פיתוח מקומית צריך להתקין ולהפעיל את ה-CLI של gcloud.
    כדי ליצור פרויקט ב-Cloud, משתמשים בפקודה gcloud projects create:
    gcloud projects create PROJECT_ID
    מחליפים את PROJECT_ID במזהה של הפרויקט שרוצים ליצור.

הפעלת החיוב בפרויקט ב-Cloud

מסוף Google Cloud

  1. במסוף Google Cloud, נכנסים לדף Billing. לוחצים על תפריט > חיוב > הפרויקטים שלי.

    כניסה לדף Billing for My Projects

  2. בקטע Select an organization (בחירת ארגון), בוחרים את הארגון שמשויך לפרויקט Google Cloud.
  3. בשורת הפרויקט, פותחים את התפריט Actions (), לוחצים על Change billing ובוחרים את החשבון לחיוב ב-Cloud.
  4. לוחצים על Set account.

CLI של gcloud

  1. כדי להציג רשימה של החשבונות לחיוב שזמינים לכם, מריצים את הפקודה:
    gcloud billing accounts list
  2. קישור חשבון לחיוב לפרויקט ב-Google Cloud:
    gcloud billing projects link PROJECT_ID --billing-account=BILLING_ACCOUNT_ID

    מחליפים את מה שכתוב בשדות הבאים:

    • PROJECT_ID הוא מזהה הפרויקט של פרויקט Cloud שרוצים להפעיל בו חיוב.
    • BILLING_ACCOUNT_ID הוא המזהה של החשבון לחיוב שאליו רוצים לקשר את הפרויקט ב-Google Cloud.

הפעלת ממשקי ה-API

מסוף Google Cloud

  1. במסוף Google Cloud, מפעילים את Google Chat API, את Vertex AI API, את Cloud Functions API, את Firestore API, את Cloud Build API, את Pub/Sub API, את Google Workspace Events API, את Eventarc API ואת Cloud Run Admin API.

    הפעלת ממשקי ה-API

  2. מוודאים שמפעילים את ממשקי ה-API בפרויקט הנכון ב-Cloud ולוחצים על הבא.

  3. מוודאים שמפעילים את ממשקי ה-API הנכונים ולוחצים על הפעלה.

CLI של gcloud

  1. אם צריך, מגדירים את פרויקט Cloud הנוכחי לפרויקט שיצרתם:

    gcloud config set project PROJECT_ID

    מחליפים את PROJECT_ID במזהה הפרויקט של פרויקט Cloud שיצרתם.

  2. מפעילים את Google Chat API, את Vertex AI API, את Cloud Functions API, את Firestore API, את Cloud Build API, את Pub/Sub API, את Google Workspace Events API, את Eventarc API ואת Cloud Run Admin API:

    gcloud services enable chat.googleapis.com \
    aiplatform.googleapis.com \
    cloudfunctions.googleapis.com \
    firestore.googleapis.com \
    cloudbuild.googleapis.com \
    pubsub.googleapis.com \
    workspaceevents.googleapis.com \
    eventarc.googleapis.com \
    run.googleapis.com

הגדרת אימות והרשאה

אימות והרשאה מאפשרים לאפליקציית Chat לגשת למשאבים ב-Google Workspace וב-Google Cloud.

במדריך הזה מפרסמים את אפליקציית Google Chat באופן פנימי, ולכן אפשר להשתמש במידע של placeholder. לפני שמפרסמים את אפליקציית Google Chat באופן חיצוני, צריך להחליף את המידע של placeholder במידע אמיתי במסך ההסכמה.

  1. במסוף Google Cloud, נכנסים לתפריט > > Branding.

    מעבר לדף 'מיתוג'

  2. אם כבר הגדרתם את , תוכלו להגדיר את ההגדרות הבאות של מסך ההסכמה ל-OAuth בקטע מיתוג, קהל וגישה לנתונים. אם מופיעה ההודעה עדיין לא הוגדר, לוחצים על תחילת העבודה:

    1. בקטע App Information (פרטי האפליקציה), בשדה App name (שם האפליקציה), מקלידים AI knowledge assistant.
    2. בקטע User support email (כתובת אימייל לתמיכה במשתמשים), בוחרים את כתובת האימייל או קבוצת Google המתאימה.
    3. לוחצים על הבא.
    4. בקטע קהל, בוחרים באפשרות פנימי. אם אי אפשר לבחור באפשרות פנימי, בוחרים באפשרות חיצוני.
    5. לוחצים על הבא.
    6. בקטע פרטים ליצירת קשר, מזינים כתובת אימייל שאליה אפשר לשלוח התראות על שינויים בפרויקט.
    7. לוחצים על הבא.
    8. בקטע סיום, קוראים את המדיניות של Google בנושא נתוני משתמשים בשירותי API. אם אתם מסכימים, מסמנים את התיבה אני מסכים/ה למדיניות של Google בנושא נתוני משתמשים בשירותי API.
    9. לוחצים על המשך.
    10. לוחצים על יצירה.
    11. אם בחרתם באפשרות חיצוני לסוג המשתמש, מוסיפים משתמשי בדיקה:
      1. לוחצים על קהל.
      2. בקטע משתמשי בדיקה, לוחצים על הוספת משתמשים.
      3. מזינים את כתובת האימייל שלכם ושל משתמשים מורשים אחרים לבדיקה, ואז לוחצים על שמירה.
  3. לוחצים על גישה לנתונים > הוספה או הסרה של היקפי הרשאה. מופיעה חלונית עם רשימת היקפי ההרשאות של כל API שהפעלתם בפרויקט ב-Google Cloud.

    1. בקטע הוספה ידנית של היקפי הרשאה, מדביקים את היקף ההרשאה הבא:

      • https://www.googleapis.com/auth/chat.messages
    2. לוחצים על הוספה לטבלה.

    3. לוחצים על עדכון.

    4. אחרי שבוחרים את ההיקפים שנדרשים לאפליקציה, לוחצים על שמירה בדף גישה לנתונים.

יצירת פרטי כניסה של מזהה לקוח ב-OAuth

  1. במסוף Google Cloud, לוחצים על Menu > APIs & Services > Credentials.

    כניסה לדף Credentials

  2. לוחצים על Create Credentials (יצירת פרטי כניסה) > OAuth client ID (מזהה לקוח OAuth).

  3. לוחצים על Application type > Web application.

  4. בשדה Name, מקלידים שם לפרטי הכניסה. השם הזה מוצג רק במסוף Google Cloud.

  5. בקטע Authorized redirect URIs (מזהי URI מורשים להפניה אוטומטית), לוחצים על Add URI (הוספת URI).

  6. בקטע URIs 1, מקלידים את הטקסט הבא:

    https://REGION-PROJECT_ID.cloudfunctions.net/app/oauth2
    

    מחליפים את מה שכתוב בשדות הבאים:

    • REGION: האזור של Cloud Functions, כמו us-central1. בהמשך, כשתיצרו את שתי הפונקציות של Cloud Functions, תצטרכו להגדיר את האזור שלהן לערך הזה.
    • PROJECT_ID: מזהה הפרויקט של פרויקט Cloud שיצרתם.
  7. לוחצים על יצירה.

  8. בחלון OAuth client created (נוצר לקוח OAuth), לוחצים על Download JSON (הורדת JSON).

  9. שומרים את הקובץ שהורד בפורמט credentials.json. בהמשך, כשיוצרים את שתי פונקציות Cloud, כוללים את הקובץ credentials.json בכל פריסה.

  10. לוחצים על אישור.

יצירת נושא Pub/Sub

נושא ה-Pub/Sub פועל עם Google Workspace Events API כדי להירשם לאירועים במרחב ב-Chat, כמו הודעות, ולשלוח לאפליקציית Chat התראות בזמן אמת.

כך יוצרים את נושא ה-Pub/Sub:

מסוף Google Cloud

  1. במסוף Google Cloud, לוחצים על תפריט > Pub/Sub.

    מעבר אל Pub/Sub

  2. לוחצים על יצירת נושא.

  3. בשדה Topic ID (מזהה הנושא), כותבים events-api.

  4. מבטלים את הסימון של האפשרות הוספת מינוי ברירת מחדל.

  5. בקטע Encryption, בוחרים באפשרות Google-managed encryption key.

  6. לוחצים על יצירה. יוצג נושא Pub/Sub.

  7. כדי שהנושא הזה ב-Pub/Sub ו-Google Workspace Events API יפעלו יחד, צריך לתת למשתמש IAM ב-Chat הרשאה לפרסם בנושא ב-Pub/Sub:

    1. בחלונית events-api, בקטע PERMISSIONS, לוחצים על Add Principal.

    2. בקטע Add principals, בשדה New principals, מקלידים chat-api-push@system.gserviceaccount.com.

    3. בקטע Assign roles, בתפריט Select a role, בוחרים באפשרות Pub/Sub > Pub/Sub Publisher.

    4. לוחצים על שמירה.

CLI של gcloud

  1. יצירת נושא Pub/Sub עם מזהה הנושא events-api:

    gcloud pubsub topics create events-api
  2. נותנים למשתמש ה-IAM של Chat הרשאה לפרסם בנושא Pub/Sub:

    gcloud pubsub topics add-iam-policy-binding events-api \
    --member='serviceAccount:chat-api-push@system.gserviceaccount.com' \
    --role='roles/pubsub.publisher'

יצירת מסד נתונים ב-Firestore

מסד הנתונים של Firestore שומר ומאחזר נתונים ממרחבי Chat, כמו הודעות. לא מגדירים את מודל הנתונים, שמוגדר באופן מרומז בקוד לדוגמה על ידי הקבצים model/message.js ו-services/firestore-service.js.

מסד הנתונים של אפליקציית Chat, עוזר מבוסס-AI לידע, משתמש במודל נתונים של NoSQL שמבוסס על מסמכים שמסודרים ב אוספים. מידע נוסף על מודל הנתונים של Firestore

התרשים הבא הוא סקירה כללית של מודל הנתונים של אפליקציית הצ'אט של עוזר ה-AI:

מודל הנתונים של מסד הנתונים ב-Firestore.

תיקיית הבסיס מכילה שני אוספים:

  1. spaces, כאשר כל מסמך מייצג מרחב ב-Chat שאליו נוספה אפליקציית Chat. כל הודעה מיוצגת על ידי מסמך באוסף המשנה messages.

  2. users, כאשר כל מסמך מייצג משתמש שהוסיף את אפליקציית Chat למרחב ב-Chat.

הצגת הגדרות של אוסף, מסמך ושדה

spaces

מרחב ב-Chat שכולל את אפליקציית Chat, עוזרת מבוססת-AI.

שדות
Document IDString
המזהה הייחודי של מרחב ספציפי. חלק משם המשאב של המרחב ב-Chat API.
messagesSubcollection of Documents (messages)
הודעות שנשלחו במרחב ב-Chat. תואם ל-Document ID של message ב-Firebase.
spaceNameString
השם הייחודי של המרחב ב-Chat API. הערך תואם לשם המשאב של המרחב ב-Chat API.

messages

ההודעות שנשלחות במרחב ב-Chat.

שדות
Document IDString
מזהה ייחודי של הודעה ספציפית.
nameString
השם הייחודי של הודעה ב-Chat API. הערך תואם לשם המשאב של ההודעה ב-Chat API.
textString
גוף ההודעה.
timeString (Timestamp format)
השעה שבה ההודעה נוצרה.

users

משתמשים שהוסיפו את אפליקציית העוזר הדיגיטלי מבוסס-AI ל-Chat למרחב ב-Chat.

שדות
Document IDString
מזהה ייחודי של משתמש ספציפי.
accessTokenString
אסימון הגישה שניתן במהלך הרשאת משתמש ב-OAuth 2.0, שמשמש לקריאה ל-Google Workspace APIs.
refreshTokenString
טוקן הרענון שניתן במהלך הרשאת משתמש ב-OAuth 2.0.

כך יוצרים את מסד הנתונים של Firestore:

מסוף Google Cloud

  1. במסוף Google Cloud, לוחצים על Menu (תפריט) > Firestore.

    כניסה אל Firestore

  2. לוחצים על יצירת מסד נתונים.

  3. בקטע Select your Firestore mode (בחירת מצב Firestore), לוחצים על Native mode (מצב מקורי).

  4. לוחצים על המשך.

  5. מגדירים את מסד הנתונים:

    1. בקטע Name your database (מתן שם למסד הנתונים), משאירים את Database ID (מזהה מסד הנתונים) כ-(default).

    2. בקטע סוג המיקום, בוחרים באפשרות אזור.

    3. בקטע Region (אזור), מציינים אזור למסד הנתונים, כמו us-central1. כדי לקבל את הביצועים הטובים ביותר, כדאי לבחור את אותו מיקום או מיקום סמוך למיקום של Cloud Functions באפליקציית Chat.

  6. לוחצים על יצירת מסד נתונים.

CLI של gcloud

  • יוצרים מסד נתונים של Firestore במצב Native:

    gcloud firestore databases create \
    --location=LOCATION \
    --type=firestore-native

    מחליפים את LOCATION בשם של אזור ב-Firestore, כמו us-central1. כדי לקבל את הביצועים הטובים ביותר, כדאי לבחור מיקום זהה או קרוב למיקום של Cloud Functions באפליקציית הצ'אט.

יצירה ופריסה של אפליקציה ל-Chat

אחרי שיוצרים ומגדירים את הפרויקט ב-Google Cloud, אפשר ליצור ולפרוס את אפליקציית Chat. בקטע הזה נסביר איך:

  1. יוצרים ופורסים שתי פונקציות ב-Cloud Functions. אחד כדי להגיב לאירועים של אינטראקציה ב-Chat ואחד כדי להגיב לאירועים של Pub/Sub.
  2. יוצרים ופורסים אפליקציה ל-Chat בדף ההגדרות של Google Chat API.

יצירה ופריסה של פונקציות ב-Cloud Functions

בקטע הזה יוצרים ופורסים שתי פונקציות ב-Cloud Functions בשמות:

  • app: מארח ומריץ את הקוד של אפליקציית Chat שמגיב לאירועים שמתקבלים מ-Chat כבקשות HTTP.
  • eventsApp: מקבל ומעבד אירועים במרחב ב-Chat, כמו הודעות מ-Pub/Sub.

ביחד, פונקציות Cloud האלה מרכיבות את הלוגיקה של אפליקציית הצ'אט של עוזר הידע מבוסס ה-AI.

אופציונלי: לפני שיוצרים את Cloud Functions, כדאי לעיין בקוד לדוגמה שמתארח ב-GitHub כדי להכיר אותו.

הצגת הקוד ב-GitHub

יצירה ופריסה של app

מסוף Google Cloud

  1. מורידים את הקוד מ-GitHub כקובץ ZIP.

    הורדת קובץ ה-ZIP

  2. מחלצים את קובץ ה-ZIP שהורד.

    התיקייה שחולצה מכילה את כל מאגר הדוגמאות של Google Workspace.

  3. בתיקייה שחולצה, עוברים לספרייה google-chat-samples-main/node/ai-knowledge-assistant.

  4. בספרייה google-chat-samples/node/ai-knowledge-assistant, מוסיפים את הקובץ credentials.json שהורדתם כשיצרתם פרטי כניסה של מזהה לקוח OAuth לאימות ולהרשאה.

  5. דוחסים את התוכן של התיקייה ai-knowledge-assistant לקובץ ZIP.

    קובץ ה-ZIP צריך להכיל את הקבצים והתיקיות הבאים:

    • .gcloudignore
    • .gitignore
    • README.md
    • deploy.sh
    • env.js
    • events_index.js
    • http_index.js
    • index.js
    • credentials.json
    • package-lock.json
    • package.json
    • controllers/
    • model/
    • services/
    • test/
  6. במסוף Google Cloud, לוחצים על תפריט > Cloud Functions.

    כניסה לדף Cloud Functions

    מוודאים שהפרויקט ב-Google Cloud של אפליקציית Chat נבחר.

  7. לוחצים על יצירת פונקציה.

  8. בדף Create function (יצירת פונקציה), מגדירים את הפונקציה:

    1. בקטע סביבה, בוחרים באפשרות פונקציית Cloud Run.
    2. בשדה Function name, כותבים app.
    3. בקטע Region (אזור), בוחרים אזור, כמו us-central1. האזור הזה צריך להיות זהה לאזור שהגדרתם ב-URI המורשה להפניה אוטומטית כשיצרתם פרטי כניסה של מזהה לקוח OAuth לאימות ולהרשאה.
    4. בשדה Trigger type, בוחרים באפשרות HTTPS.
    5. בקטע אימות, בוחרים באפשרות התרת הפעלות לא מאומתות.
    6. לוחצים על הבא.
  9. בקטע סביבת זמן ריצה, בוחרים באפשרות Node.js 20.

  10. בקטע נקודת כניסה, מוחקים את טקסט ברירת המחדל ומזינים app.

  11. בקטע קוד מקור, בוחרים באפשרות העלאת קובץ ZIP.

  12. בקטע Destination bucket, יוצרים או בוחרים קטגוריה:

    1. לוחצים על מה מעניין אותך היום?
    2. בוחרים קטגוריה.
    3. לוחצים על בחירה.

    ‫Google Cloud מעלה את קובץ ה-ZIP ומחלץ את קובצי הרכיבים בקטגוריה הזו. לאחר מכן, שירות Cloud Functions מעתיק את קובצי הרכיב לפונקציה של Cloud Functions.

  13. בקטע Zip file (קובץ ZIP), מעלים את קובץ ה-ZIP שהורדתם מ-GitHub, חילצתם ודחסתם מחדש:

    1. לוחצים על מה מעניין אותך היום?
    2. מנווטים אל קובץ ה-ZIP ובוחרים בו.
    3. לוחצים על פתיחה.
  14. לוחצים על פריסה.

    ייפתח הדף Cloud Functions detail (פרטי Cloud Functions), והפונקציה תופיע עם שני אינדיקטורים להתקדמות: אחד לבנייה ואחד לשירות. כששני סימני ההתקדמות נעלמים ומוחלפים בסימן וי, הפונקציה מוכנה לפריסה.

  15. עורכים את הקוד לדוגמה כדי להגדיר קבועים:

    1. בדף Cloud Function detail (פרטי Cloud Function), לוחצים על Edit (עריכה).
    2. לוחצים על הבא.
    3. בקטע קוד מקור, בוחרים באפשרות עורך בשורה.
    4. בכלי לעריכה ישירה, פותחים את הקובץ env.js ועורכים אותו:
      1. מגדירים את הערך של project למזהה הפרויקט ב-Cloud.
      2. מגדירים את הערך של location לאזור של Cloud Functions, כמו us-central1.
  16. לוחצים על פריסה.

CLI של gcloud

  1. משכפלים את הקוד מ-GitHub:

    git clone https://github.com/googleworkspace/google-chat-samples.git
  2. עוברים לספרייה שמכילה את הקוד של אפליקציית ה-Chat של העוזר הדיגיטלי מבוסס-AI:

    cd google-chat-samples/node/ai-knowledge-assistant
  3. בספרייה google-chat-samples/node/ai-knowledge-assistant, מוסיפים את הקובץ credentials.json שהורדתם כשיצרתם פרטי כניסה של מזהה לקוח OAuth לאימות ולהרשאה.

  4. עורכים את הקובץ env.js כדי להגדיר משתני סביבה:

    1. מגדירים את הערך של project למזהה הפרויקט ב-Cloud.
    2. מגדירים את הערך של location לאזור של Cloud Functions, כמו us-central1.
  5. פורסים את הפונקציה של Cloud Functions ב-Google Cloud:

    gcloud functions deploy app \
    --gen2 \
    --region=REGION \
    --runtime=nodejs20 \
    --source=. \
    --entry-point=app \
    --trigger-http \
    --allow-unauthenticated

    מחליפים את REGION בערך של האזור של Cloud Function, כמו us-central1, כדי שיתאים לערך שמוגדר בקובץ env.js.

יצירה ופריסה של eventsApp

מסוף Google Cloud

  1. במסוף Google Cloud, לוחצים על תפריט > Cloud Functions.

    כניסה לדף Cloud Functions

    מוודאים שהפרויקט ב-Google Cloud של אפליקציית Chat נבחר.

  2. לוחצים על יצירת פונקציה.

  3. בדף Create function (יצירת פונקציה), מגדירים את הפונקציה:

    1. בקטע סביבה, בוחרים באפשרות פונקציית Cloud Run.
    2. בשדה Function name, כותבים eventsApp.
    3. בקטע Region (אזור), בוחרים אזור, כמו us-central1. האזור הזה צריך להיות זהה לאזור שהגדרתם ב-URI המורשה להפניה אוטומטית כשיצרתם פרטי כניסה של מזהה לקוח OAuth לאימות ולהרשאה.
    4. בקטע Trigger type, בוחרים באפשרות Cloud Pub/Sub.
    5. בקטע Cloud Pub/Sub topic, בוחרים את שם הנושא ב-Pub/Sub שיצרתם, בפורמט projects/PROJECT/topics/events-api, כאשר PROJECT הוא מזהה פרויקט Cloud.
    6. אם מופיעה הודעה שמתחילה במילים Service account(s) might not have enough permissions to deploy the function with the selected trigger., לוחצים על Grant All (מתן גישה לכולם).
    7. לוחצים על הבא.
  4. בקטע סביבת זמן ריצה, בוחרים באפשרות Node.js 20.

  5. בקטע נקודת כניסה, מוחקים את טקסט ברירת המחדל ומזינים eventsApp.

  6. בקטע קוד מקור, בוחרים באפשרות Zip from Cloud Storage (קובץ Zip מ-Cloud Storage).

  7. בקטע Cloud Storage location (מיקום ב-Cloud Storage), לוחצים על Browse (עיון).

  8. בוחרים את הקטגוריה שאליה העליתם את קובץ ה-ZIP כשנוצר app Cloud Function.

  9. לוחצים על קובץ ה-ZIP שהעליתם.

  10. לוחצים על בחירה.

  11. לוחצים על פריסה.

    ייפתח הדף Cloud Functions detail (פרטי Cloud Functions), והפונקציה תופיע עם שלושה אינדיקטורים להתקדמות: אחד לבנייה, אחד לשירות ואחד לטריגר. כשכל שלושת מחווני ההתקדמות נעלמים ומוחלפים בסימן וי, הפונקציה מוכנה לפריסה.

  12. עורכים את הקוד לדוגמה כדי להגדיר קבועים:

    1. בדף Cloud Function detail (פרטי Cloud Function), לוחצים על Edit (עריכה).
    2. לוחצים על הבא.
    3. בקטע קוד מקור, בוחרים באפשרות עורך בשורה.
    4. בכלי לעריכה ישירה, פותחים את הקובץ env.js ועורכים אותו:
      1. מגדירים את הערך של project למזהה הפרויקט ב-Cloud.
      2. מגדירים את הערך של location לאזור של Cloud Functions, כמו us-central1.
  13. לוחצים על פריסה.

CLI של gcloud

  1. ב-CLI של gcloud, אם אתם לא נמצאים כבר בספרייה, עוברים לספרייה שכוללת את הקוד של אפליקציית הצ'אט של עוזר ה-AI הזה, ששיכפלתם קודם מ-GitHub:

    cd google-chat-samples/node/ai-knowledge-assistant
  2. בספרייה google-chat-samples/node/ai-knowledge-assistant, מוסיפים את הקובץ credentials.json שהורדתם כשיצרתם פרטי כניסה של מזהה לקוח OAuth לאימות ולהרשאה.

  3. עורכים את הקובץ env.js כדי להגדיר משתני סביבה:

    1. מגדירים את הערך של project למזהה הפרויקט ב-Cloud.
    2. מגדירים את הערך של location לאזור של Cloud Functions, כמו us-central1.
  4. פורסים את הפונקציה של Cloud Functions ב-Google Cloud:

    gcloud functions deploy eventsApp \
    --gen2 \
    --region=REGION \
    --runtime=nodejs20 \
    --source=. \
    --entry-point=eventsApp \
    --trigger-topic=events-api

    מחליפים את REGION בערך של האזור של Cloud Function, כמו us-central1, כדי שיתאים לערך שמוגדר בקובץ env.js.

מעתיקים את כתובת ה-URL של הטריגר של app Cloud Functions

תצטרכו להדביק את כתובת ה-URL של הטריגר של Cloud Function בקטע הבא, כשמגדירים את אפליקציית Chat ב-Google Cloud Console.app

מסוף Google Cloud

  1. במסוף Google Cloud, לוחצים על תפריט > Cloud Functions.

    כניסה לדף Cloud Functions

  2. בעמודה Name (שם) ברשימה של Cloud Functions, לוחצים על app.

  3. לוחצים על Trigger (טריגר).

  4. מעתיקים את כתובת ה-URL.

CLI של gcloud

  1. מתארים את הפונקציה app של Cloud Functions:

    gcloud functions describe app
  2. מעתיקים את url הנכס.

הגדרת אפליקציית Chat במסוף Google Cloud

בקטע הזה מוסבר איך להגדיר את Chat API במסוף Google Cloud עם מידע על אפליקציית Chat, כולל השם של אפליקציית Chat וכתובת ה-URL של הטריגר של Cloud Function של אפליקציית Chat שאליה נשלחים אירועי אינטראקציה ב-Chat.

  1. במסוף Google Cloud, לוחצים על תפריט > מוצרים נוספים > Google Workspace > ספריית מוצרים > Google Chat API > ניהול > הגדרה.

    כניסה להגדרות של Chat API

  2. בשדה App name, כותבים AI knowledge assistant.

  3. בקטע כתובת ה-URL של הדמות, מקלידים https://fonts.gstatic.com/s/i/short-term/release/googlesymbols/live_help/default/24px.svg.

  4. בקטע תיאור, מקלידים Answers questions with AI.

  5. מעבירים את המתג הפעלה של תכונות אינטראקטיביות למצב פעיל.

  6. בקטע פונקציונליות, בוחרים באפשרות הצטרפות למרחבים ולשיחות קבוצתיות.

  7. בקטע Connection settings (הגדרות חיבור), בוחרים באפשרות HTTP endpoint URL (כתובת URL של נקודת קצה בפרוטוקול HTTP).

  8. בקטע HTTP endpoint URL (כתובת URL של נקודת קצה בפרוטוקול HTTP), מדביקים את כתובת ה-URL של הטריגר מ-Cloud Function‏ app בפורמט https://REGION-PROJECT_ID.cloudfunctions.net/app, כאשר REGION הוא האזור של Cloud Function, כמו us-central1, ו-PROJECT_ID הוא מזהה הפרויקט של פרויקט Cloud שיצרתם.

  9. בקטע Visibility (חשיפה), בוחרים באפשרות Make this Chat app available to specific people and groups in your Workspace domain (הפיכת אפליקציית הצ'אט הזו לזמינה לאנשים ולקבוצות ספציפיים בדומיין שלכם ב-Workspace) ומזינים את כתובת האימייל.

  10. אם רוצים, בקטע יומנים, בוחרים באפשרות רישום שגיאות ביומן.

  11. לוחצים על שמירה. תוצג הודעה שההגדרה נשמרה, כלומר אפליקציית הצ'אט מוכנה לבדיקה.

בדיקת אפליקציית Chat

כדי לבדוק את אפליקציית הצ'אט של עוזר הידע מבוסס ה-AI, אפשר לשאול שאלות במרחב ב-Chat שיש בו הודעות, שאלות שאפליקציית הצ'אט של עוזר הידע מבוסס ה-AI יכולה לענות עליהן.

ריכזנו כאן כמה דרכים לבדיקת אפליקציית הצ'אט של עוזר ה-AI החכם:

  • מוסיפים את אפליקציית Chat של העוזר הדיגיטלי מבוסס-AI למרחב קיים ב-Chat ושואלים שאלות שרלוונטיות למרחב הזה.
  • יוצרים מרחב ב-Chat ומפרסמים בו כמה הודעות כדי להשתמש בו כמקור נתונים. אפשר ליצור הודעות באמצעות Gemini עם הנחיה כמו Answer 20 common onboarding questions employees ask their teams. או להדביק כמה פסקאות מהמדריך סקירה כללית על פיתוח באמצעות Chat ואז לשאול שאלות לגביהן.

במדריך הזה, ניצור מרחב ב-Chat ונדביק כמה פסקאות מתוך המדריך סקירה כללית על פיתוח באמצעות Chat.

  1. פותחים את Google Chat.

    מעבר אל Google Chat

  2. כדי ליצור מרחב ב-Chat:

    1. לוחצים על צ'אט חדש > יצירת מרחב.

    2. בשדה Space name, כותבים Testing AI knowledge assistant app.

    3. בקטע למה מיועד המרחב הזה?, בוחרים באפשרות עבודה משותפת.

    4. בקטע הגדרות הגישה, בוחרים מי יכול לגשת למרחב.

    5. לוחצים על יצירה.

  3. הוספת הודעות לשימוש כמקור נתונים:

    1. בדפדפן אינטרנט, עוברים אל המדריך סקירה כללית על פיתוח באמצעות Chat.

    2. מעתיקים את התוכן של המדריך ומדביקים אותו במרחב ב-Chat שיצרתם.

  4. מוסיפים את אפליקציית הצ'אט של עוזר הידע מבוסס-AI:

    1. בסרגל כתיבת ההודעה, מקלידים @AI knowledge assistant. בתפריט ההצעות שמופיע, בוחרים באפשרות 'עוזר מבוסס-AI' ואז באפליקציית הצ'אט, ולוחצים על enter.

    2. תוצג הודעה עם שאלה אם רוצים להוסיף את אפליקציית הצ'אט של עוזר ה-AI החכם למרחב. לוחצים על צירוף למרחב.

    3. אם זו הפעם הראשונה שאתם מוסיפים את אפליקציית Chat למרחב, אתם צריכים להגדיר אימות והרשאה לאפליקציית Chat:

      1. לוחצים על Configure (הגדרה).
      2. ייפתח חלון חדש או כרטיסייה חדשה בדפדפן עם בקשה לבחור חשבון Google. בוחרים את החשבון שבו רוצים לבצע את הבדיקה.
      3. בודקים את ההרשאות שאפליקציית הצ'אט עם העוזר הדיגיטלי מבוסס ה-AI מבקשת. כדי לתת להם הרשאה, לוחצים על אישור.
      4. תוצג הודעה עם הכיתוב You may close this page now.. סוגרים את חלון הדפדפן או את הכרטיסייה וחוזרים למרחב ב-Chat.
  5. שאל שאלה:

    1. בסרגל כתיבת ההודעה, מקלידים שאלה כמו What are Google Chat apps?

    2. התשובות מגיעות מאפליקציית הצ'אט של עוזר הידע מבוסס-AI.

    3. אופציונלי: אם התשובה לא מדויקת או לא מספיקה, כדי לעזור ל-AI לשפר את היסטוריית השיחות שלו, לוחצים על קבלת עזרה. אפליקציית הצ'אט של העוזר הדיגיטלי מבוסס-AI מזכירה את מנהל המרחב ומבקשת ממנו לענות על השאלה. בפעם הבאה, אפליקציית Chat עם עוזר מבוסס-AI לחיפוש מידע תדע את התשובה!

שיקולים, אפשרויות חלופיות לארכיטקטורה והשלבים הבאים

בקטע הזה נסביר על דרכים אחרות ליצירת אפליקציית צ'אט של עוזר מבוסס-AI.

‫Firestore,‏ Cloud Storage או קריאה של List Messages ב-Chat API

במדריך הזה מומלץ לאחסן נתונים של מרחבים ב-Chat, כמו הודעות, במסד נתונים של Firestore, כי זה משפר את הביצועים בהשוואה לקריאה לשיטה list במשאב Message באמצעות Chat API בכל פעם שאפליקציית Chat עונה על שאלה. בנוסף, קריאה חוזרת ל-list messages עלולה לגרום לאפליקציית Chat להגיע למגבלות מכסת ה-API.

עם זאת, אם היסטוריית השיחות במרחב ב-Chat ארוכה מדי, השימוש ב-Firestore עלול להיות יקר.

Cloud Storage היא חלופה ל-Firestore. לכל מרחב שבו אפליקציית הצ'אט של העוזר הדיגיטלי מבוסס ה-AI פעילה יש אובייקט משלו, וכל אובייקט הוא קובץ טקסט שמכיל את כל ההודעות במרחב. היתרון בגישה הזו הוא שאפשר להזין את כל התוכן של קובץ הטקסט ל-Vertex AI עם Gemini בבת אחת, אבל החיסרון הוא שנדרשת יותר עבודה כדי לעדכן את היסטוריית השיחות, כי אי אפשר לצרף תוכן לאובייקט ב-Cloud Storage, אלא רק להחליף אותו. הגישה הזו לא מתאימה אם אתם מעדכנים את היסטוריית ההודעות באופן קבוע, אבל היא יכולה להיות בחירה טובה אם אתם מעדכנים את היסטוריית ההודעות מדי פעם, למשל פעם בשבוע.

פתרון בעיות

כשמוחזרת שגיאה מאפליקציית Google Chat או מכרטיס, מוצגת בממשק של Chat ההודעה 'משהו השתבש'. או 'לא ניתן לעבד את הבקשה שלך'. לפעמים בממשק המשתמש של Chat לא מוצגת הודעת שגיאה, אבל אפליקציית Chat או הכרטיס מפיקים תוצאה לא צפויה. לדוגמה, יכול להיות שהודעה בכרטיס לא תופיע.

יכול להיות שלא תוצג הודעת שגיאה בממשק המשתמש של Chat, אבל אם הפעלתם את רישום השגיאות באפליקציות של Chat, תוכלו לראות הודעות שגיאה תיאוריות ונתוני יומן שיעזרו לכם לתקן את השגיאות. לקבלת עזרה בצפייה בשגיאות, באיתור באגים ובתיקון שלהן, אפשר לעיין במאמר פתרון בעיות ב-Google Chat.

הסרת המשאבים

כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, מומלץ למחוק את פרויקט Cloud.

  1. במסוף Google Cloud, עוברים לדף Manage resources. לוחצים על תפריט > IAM & Admin > Manage Resources.

    כניסה ל-Resource Manager

  2. ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete .
  3. כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.