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

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

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

כך פועלת אפליקציית Chat בסביבת קליטת עובדים ותמיכה:

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

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

מטרות

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

ארכיטקטורה

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

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

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

  • משתמש מוסיף את אפליקציית צ'אטבוט התמיכה מבוססת-AI למרחב המשותף ב-Chat:

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

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

    3. אפליקציית Chat מפעילה את השיטה subscriptions.create ב-Google Workspace Event 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 עונה על השאלה, התשובה תפורסם על ידי אפליקציית Chat באמצעות קריאה ל-method spaces.messages.create ב-Chat API באמצעות אימות של אפליקציות.

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

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

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

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

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

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

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

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

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

מכינים את הסביבה

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

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

מסוף Google Cloud

  1. במסוף Google Cloud, נכנסים לתפריט > IAM & Admin > יצירת פרויקט.

    כניסה לדף Create a Project

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

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

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

‫CLI של gcloud

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

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

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

מסוף Google Cloud

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

    לדף 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 Event API, את Eventarc API ואת Cloud Run Admin API.

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

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

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

‫CLI של gcloud

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

    gcloud config set project PROJECT_ID
    

    מחליפים את 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 Event 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 באופן חיצוני, צריך להחליף את ה-placeholders במידע האמיתי שמוצג במסך ההסכמה.

  1. במסוף Google Cloud, נכנסים אל תפריט > APIs & Services > מסך ההסכמה של OAuth.

    מעבר למסך ההסכמה ל-OAuth

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

  3. בשדה App name, מקלידים AI knowledge assistant.

  4. בקטע User support email (אימייל של תמיכת משתמשים), בוחרים את כתובת האימייל שלכם או קבוצה מתאימה ב-Google.

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

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

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

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

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

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

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

  12. מעיינים בסיכום הרישום של האפליקציה ולוחצים על חזרה למרכז השליטה.

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

  1. במסוף Google Cloud, נכנסים אל תפריט > APIs & Services > Credentials.

    כניסה לדף Credentials

  2. לוחצים על Create Credentials > OAuth client ID.

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

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

  5. בקטע מזהי 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 שנוצר, לוחצים על הורדת JSON.

  9. שומרים את הקובץ שהורד בשם client_secrets.json. לאחר מכן, כשיוצרים את שתי הפונקציות של Cloud Functions, כוללים את הקובץ client_secrets.json בכל פריסה.

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

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

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

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

מסוף Google Cloud

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

    כניסה ל-Pub/Sub

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

  3. במזהה הנושא, מקלידים events-api.

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

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

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

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

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

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

    3. בקטע הקצאת תפקידים, בקטע בחירת תפקיד, בוחרים באפשרות Pub/Sub > פרסום הודעות ב-Pub/Sub.

    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.

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

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

הרמה הבסיסית (root) מכילה שני אוספים:

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

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

הצגת הגדרות של אוספים, מסמכים ושדות

spaces

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

שדות
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.

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

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

מסוף Google Cloud

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

    כניסה אל Firestore

  2. לוחצים על Create dataset.

  3. בקטע Select your Firestore mode, לוחצים על Native mode.

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

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

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

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

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

  6. לוחצים על Create dataset.

‫CLI של gcloud

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

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

    מחליפים את LOCATION בשם של אזור אש, כמו us-central1. כדי ליהנות מרמת ביצועים גבוהה ככל האפשר, מומלץ לבחור את אותו מיקום או את המיקום בסביבה של Cloud Functions של אפליקציית Chat.

יצירה ופריסה של אפליקציית 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 Functions האלה ביחד מהווים את הלוגיקה של אפליקציית Chat ל'עוזר דיגיטלי מבוסס-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, מוסיפים את הקובץ client_secrets.json שהורדתם כשיצרתם פרטי כניסה של מזהה לקוח ב-OAuth לצורך אימות והרשאה.

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

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

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

    כניסה ל-Cloud Functions

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

  7. לוחצים על Create Function.

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

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

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

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

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

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

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

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

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

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

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

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

‫CLI של gcloud

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

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

    cd google-chat-samples/node/ai-knowledge-assistant
    
  3. בספרייה google-chat-samples/node/ai-knowledge-assistant, מוסיפים את הקובץ client_secrets.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 Functions, שתואם לערך שהוגדר בקובץ env.js, למשל us-central1.

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

מסוף Google Cloud

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

    כניסה ל-Cloud Functions

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

  2. לוחצים על Create Function.

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

    1. בסביבה, בוחרים באפשרות דור שני.
    2. בשדה Function name, מקלידים eventsApp.
    3. בקטע Region, בוחרים אזור, כמו us-central1. האזור הזה חייב להתאים לאזור שהגדרתם ב-URI המורשה להפניה אוטומטית כשיצרתם פרטי כניסה של מזהה לקוח ב-OAuth לצורך אימות והרשאה.
    4. בקטע Trigger type, בוחרים באפשרות Cloud Pub/Sub.
    5. בנושא Cloud Pub/Sub, בוחרים את שם הנושא ב-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., לוחצים על הענקת הכול.
    7. לוחצים על הבא.
  4. ב-Runtime, בוחרים באפשרות Node.js 20.

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

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

  7. בקטע המיקום של Cloud Storage, לוחצים על עיון.

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

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

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

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

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

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

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

‫CLI של gcloud

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

    cd google-chat-samples/node/ai-knowledge-assistant
    
  2. בספרייה google-chat-samples/node/ai-knowledge-assistant, מוסיפים את הקובץ client_secrets.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 Functions, שתואם לערך שהוגדר בקובץ env.js, למשל us-central1.

העתקת כתובת ה-URL לטריגר של הפונקציה של Cloud Functions app

בקטע הבא מדביקים את כתובת ה-URL לטריגר של הפונקציה app של Cloud Functions כשאתם מגדירים את אפליקציית Chat במסוף Google Cloud.

מסוף Google Cloud

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

    כניסה ל-Cloud Functions

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

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

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

‫CLI של gcloud

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

    gcloud functions describe app
    
  2. מעתיקים את המאפיין url.

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

בחלק הזה מוסבר איך מגדירים את ה-API של Chat במסוף Google Cloud בעזרת מידע על אפליקציית Chat, כולל השם של אפליקציית Chat וכתובת ה-URL שמפעילה את הפונקציה של Cloud Functions שאליה היא שולחת אירועי אינטראקציה ב-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. בשדה Description, מקלידים Answers questions with AI.

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

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

  7. בקטע הגדרות חיבור, בוחרים באפשרות כתובת ה-URL של האפליקציה.

  8. בקטע App URL, מדביקים את כתובת ה-URL של הטריגר מהפונקציה app של Cloud Functions בפורמט https://REGION-PROJECT_ID.cloudfunctions.net/app, כאשר REGION הוא האזור של הפונקציה של Cloud Functions, למשל us-central1 ו-PROJECT_ID הוא Project ID של הפרויקט ב-Cloud שיצרתם.

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

  10. (אופציונלי) בקטע Logs (יומנים), בוחרים באפשרות Log errors to Logging (רישום שגיאות ביומן).

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

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

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

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

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

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

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

    כניסה ל-Google Chat

  2. יצירת מרחב משותף ב-Chat:

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

    2. בשם המרחב המשותף, כותבים Testing AI knowledge assistant app.

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

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

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

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

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

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

  4. כדאי להוסיף את אפליקציית צ'אטבוט התמיכה מבוססת-AI ב-Chat:

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

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

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

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

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

    2. אפליקציית Chat יכולה לענות על שאלות מעוזר הידע ב-AI.

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

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

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

Firestore, Cloud Storage או הודעות ברשימת השיחות ב-Chat API

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

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

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

פתרון בעיות

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

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

הסרת המשאבים

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

  1. במסוף Google Cloud, עוברים לדף Manage resources. לוחצים על תפריט > IAM ואדמין > ניהול משאבים.

    כניסה למנהל המשאבים

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