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

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

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

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

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

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

מטרות

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

ארכיטקטורה

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

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

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

  • משתמש מוסיף את אפליקציית ה-Chat של העוזר האישי מבוסס-AI למרחב ב-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 מקבלת הודעה על מחזור החיים מ-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.

בדיקת המוצרים שבהם נעשה שימוש באפליקציית הצ'אט של עוזר הידע מבוסס-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 ולהגיב להם.
    • רשימת ההודעות שנשלחו במרחב.
    • לפרסם תשובות לשאלות של משתמשים במרחב.
    • קובעים מאפיינים שקובעים איך הוא יופיע ב-Chat, כמו שם ותמונת אווטאר.
  • Google Workspace Events API: ממשק ה-API הזה מאפשר להירשם לאירועים ולנהל התראות על שינויים באפליקציות של Google Workspace. אפליקציית Chat של עוזר ה-AI לחיפוש מידע משתמשת ב-Google Workspace Events API כדי להאזין להודעות שפורסמו במרחב ב-Chat, וכך היא יכולה לזהות שאלות ולענות עליהן גם אם לא תייגו אותה.
  • Firestore: מסד נתונים של מסמכים בלי שרת (serverless). עוזר מבוסס-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 API Console

  1. ב-Google API Console, נכנסים לתפריט > IAM & Admin (ניהול הרשאות גישה) > Create a Project (יצירת פרויקט).

    כניסה לדף Create a Project

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

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

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

‫CLI של gcloud

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

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

הפעלת החיוב בפרויקט בענן

Google API Console

  1. ב-Google API Console, עוברים אל 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 הוא מזהה הפרויקט של פרויקט בענן שרוצים להפעיל בו חיוב.
    • BILLING_ACCOUNT_ID הוא המזהה של החשבון לחיוב שאליו רוצים לקשר את פרויקט בענן ב-Google Cloud.

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

Google API Console

  1. במסוף ממשקי ה-API של Google, מפעילים את 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 במזהה הפרויקט של פרויקט בענן שיצרתם.

  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 API Console, לוחצים על סמל התפריט > פלטפורמת אימות של Google > מיתוג.

    מעבר לדף Branding

  2. אם כבר הגדרתם את פלטפורמת האימות של Google, אתם יכולים לקבוע את ההגדרות הבאות של מסך ההסכמה ל-OAuth בקטעים Branding,‏ Audience וData Access. אם מופיעה ההודעה Google Auth platform not configured yet, לוחצים על Get Started:

    1. בקטע App Information בשדה App name, מקלידים AI knowledge assistant.
    2. בקטע User support email, בוחרים את כתובת האימייל שלכם או קבוצת Google מתאימה.
    3. לוחצים על הבא.
    4. בקטע Audience, לוחצים על Internal. אם אי אפשר לבחור באפשרות פנימי, בוחרים באפשרות חיצוני.
    5. לוחצים על הבא.
    6. בקטע Contact Information, מזינים כתובת אימייל שאליה אפשר לשלוח התראות על שינויים בפרויקט.
    7. לוחצים על הבא.
    8. בקטע Finish, קוראים את המדיניות של Google בנושא נתוני משתמשים בשירותי API. אם אתם מסכימים, מסמנים את התיבה I agree to the Google API Services: User Data Policy.
    9. לוחצים על המשך.
    10. לוחצים על יצירה.
    11. אם בחרתם באפשרות חיצוני לסוג המשתמש, מוסיפים משתמשי בדיקה:
      1. לוחצים על קהל.
      2. בקטע משתמשי בדיקה, לוחצים על הוספת משתמשים.
      3. מזינים את כתובת האימייל שלכם ושל משתמשים מורשים אחרים לבדיקה, ואז לוחצים על שמירה.
  3. לוחצים על גישה לנתונים > הוספה או הסרה של היקפי הרשאה. מופיעה חלונית עם רשימה של היקפי גישה לכל API שהפעלתם בפרויקט בענן של Google Cloud.

    1. בקטע Manually add scopes (הוספת היקפי הרשאה באופן ידני), מדביקים את היקף ההרשאה הבא:

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

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

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

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

  1. במסוף Google API, לוחצים על תפריט > APIs & Services > Credentials.

    כניסה לדף Credentials

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

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

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

  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: מזהה הפרויקט של פרויקט הענן שיצרתם.
  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 API Console

  1. במסוף Google API, נכנסים אל תפריט > 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 יפעלו יחד, צריך לתת למשתמש Chat IAM הרשאה לפרסם בנושא 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.

מסד הנתונים של אפליקציית הצ'אט של העוזר הדיגיטלי מבוסס על מודל נתונים של 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, שמשמש לקריאה ל-ממשקי API של Google Workspace.
refreshTokenString
טוקן הרענון שניתן במהלך הרשאת משתמש ב-OAuth 2.0.

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

Google API Console

  1. ב-Google API Console, עוברים אל תפריט > Firestore.

    כניסה אל Firestore

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

  3. בקטע בחירת מצב Firestore, לוחצים על מצב Native.

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

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

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

    2. בקטע Location type, בוחרים באפשרות Region.

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

  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 Functions מרכיבות את הלוגיקה של אפליקציית הצ'אט של עוזר ה-AI.

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

הצגת הקוד ב-GitHub

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

Google API Console

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

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

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

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

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

  4. בספרייה add-ons-samples/node/chat/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 API Console, עוברים אל Menu > Cloud Functions.

    כניסה לדף Cloud Functions

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

  7. לוחצים על Create Function (יצירת פונקציה).

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

    1. בקטע Environment (סביבה), בוחרים באפשרות Cloud Run Function (פונקציית 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, והפונקציה שלכם תופיע עם שני אינדיקטורים להתקדמות: אחד לבנייה ואחד לשירות. כששני סימני ההתקדמות נעלמים ומוחלפים בסימן וי, הפונקציה מוכנה לפריסה.

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

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

‫CLI של gcloud

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

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

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

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

    1. מגדירים את הערך של project למזהה הפרויקט בענן.
    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 API Console

  1. ב-Google API Console, עוברים אל Menu > Cloud Functions.

    כניסה לדף Cloud Functions

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

  2. לוחצים על Create Function (יצירת פונקציה).

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

    1. בקטע Environment (סביבה), בוחרים באפשרות Cloud Run Function (פונקציית 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 הוא מזהה פרויקט בענן.
    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.

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

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

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

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

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

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

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

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

‫CLI של gcloud

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

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

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

    1. מגדירים את הערך של project למזהה הפרויקט בענן.
    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 Function

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

Google API Console

  1. ב-Google API Console, עוברים אל Menu > 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 API Console

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

  1. ב-Google API Console, לוחצים על Menu > APIs & Services > Enabled APIs & Services > Google Chat API > Configuration.

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

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

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

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

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

  13. לוחצים על שמירה. תוצג הודעה שההגדרה נשמרה.

אפליקציית Chat מוכנה לקבל הודעות ב-Chat ולענות להן.

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

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

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

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

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

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

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

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

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