קבלת החלטות מושכלות באמצעות מאגרי נתונים ומחוללים של Dialogflow CX

1. סקירה כללית

עדכון אחרון:10.10.2023

מה תפַתחו

ב-Codelab הזה, תשתמשו ב-Vertex AI Conversation ו-Dialogflow CX כדי ליצור, לפרוס ולהגדיר סוכן וירטואלי שיעזור לאנשים שרוצים לתרום דם ולוודא שהם עומדים בדרישות הסף הנדרשות. הנציג ישתמש בנתונים ציבוריים אמיתיים ובמודלים גנרטיביים של שפה גדולים (LLMs) של Google במהלך מילוי ההזמנות של Dialogflow CX.

באילו תכונות תשתמשו

כדי להשלים את ה-Codelab, צריך להגדיר שלוש תכונות נפרדות ולהשתמש בהן:

סוכנים של מאגרי נתונים

התכונה שיחה ב-Vertex AI יוצרת סוכן מיוחד ב-Dialogflow בשם סוכן של מאגר נתונים.

התכונה הזו מספקת כתובת אתר, נתונים מובְנים או נתונים לא מובְנים (מאגרי נתונים), ולאחר מכן Google מנתחת את התוכן ויוצרת סוכן וירטואלי שמבוסס על מאגרי נתונים ומודלים גדולים של שפה (LLM). לאחר מכן הלקוחות ומשתמשי הקצה יוכלו לנהל שיחות עם הנציג ולשאול שאלות לגבי התוכן. למידע על סוג הנציג הזה, אפשר לעיין במבוא לשיחה של Vertex AI.

גנרטורים

התכונה מחולל היא תכונה של Dialogflow CX שמאפשרת למפתחים להשתמש במודלים הגנרטיביים האחרונים של Google לשפה גדולה (LLM) ובהנחיות מותאמות אישית כדי ליצור תשובות מנציגים בזמן הריצה. מחולל יכול לטפל בתשובות כלליות שכוללות ידע כללי ממערך נתונים טקסטואלי גדול שהוא אומן לפיו או את ההקשר מהשיחה.

חלופה גנרטיבית

התכונה חלופה גנרטיבית משתמשת במודלים הגנרטיביים האחרונים של Google לשפה גדולה (LLMs) כדי ליצור תשובות של נציגים וירטואליים כשקלט של משתמשי קצה לא תואם לכוונה או לפרמטר למילוי טפסים. אפשר להגדיר את התכונה באמצעות הנחיה טקסט שמנחה את ה-LLM לענות. אתם יכולים להשתמש בהנחיית טקסט מוגדרת מראש או להוסיף הנחיות משלכם. אפשר להפעיל חלופה גנרטיבית לגורמים שמטפלים באירועים ללא התאמה, שנעשה בהם שימוש בתהליכים, בדפים או במהלך מילוי הפרמטרים. כשמפעילים חלופה גנרטיבית לאירוע ללא התאמה, בכל פעם שהאירוע הזה מופעל, מערכת Dialogflow תנסה ליצור תשובה שתימסר חזרה למשתמש. אם לא הצלחתם ליצור את התשובה, התשובה של הנציג הקבוע מראש תונפק. רוצה לקבל מידע נוסף על חלופה גנרטיבית? כדאי לנסות את ה-codelab הזה.

מה תלמדו

  • איך יוצרים סוכן מאגר נתונים מנתונים לא מובְנים
  • איך משתמשים ברכיבי handler של ידע כדי לאפשר למשתמשי הקצה לנהל שיחות עם סוכן וירטואלי לגבי התוכן שנוסף למאגר הנתונים.
  • איך להגדיר הנחיית טקסט של מחולל טקסט ולהפוך אותה להקשר באמצעות שימוש ב-placeholders מובנים של הנחיות ליצירת הנחיות.
  • איך מסמנים מילים כ-placeholders של הנחיות מחולל ובהמשך לשייך אותן לפרמטרים של סשן במילוי הבקשה כדי להשתמש בערכים שלהן בזמן הביצוע.
  • איך להגדיר מחולל שיטפל בתשובות שכוללות ידע מתוך מערך נתונים טקסטואלי גדול והקשר מהשיחה הנוכחית.
  • איך ליצור אימייל רשמי באמצעות מחוללים
  • איך בודקים את הנציג ומדמות שאלות של לקוחות שמפעילות תשובות

למה תזדקק?

  • פרויקט ב-Google Cloud
  • דפדפן כמו Chrome

2. הפעלת ממשקי API

כדי ליצור סוכן של מאגר נתונים ב-Vertex AI Conversation, עליכם להפעיל את Dialogflow וגם את Vertex AI Search ו-Conversation APIs.

כדי להפעיל את Dialogflow API:

  1. בדפדפן, נכנסים לדף Dialogflow API Service Details.
  2. לוחצים על הלחצן Enable כדי להפעיל את Dialogflow API בפרויקט שלכם ב-Google Cloud.

כדי להפעיל את Vertex AI Search and Conversation API, פועלים לפי השלבים הבאים:

  1. במסוף Google Cloud, עוברים אל Vertex AI Search and Conversation console.
  2. קוראים את התנאים וההגבלות ומאשרים אותם, ולוחצים על המשך והפעלה של ה-API.

3. יצירה של אפליקציית צ'אט חדשה ומאגר נתונים לאפליקציה

עכשיו אפשר ליצור אפליקציית צ'אט חדשה לסוכן הווירטואלי ולהגדיר אותה באמצעות מקור נתונים. המטרה של הנציג שבונים היא לעזור ללקוחות שיש להם שאלות לגבי בדיקת הדם. את/ה תשתמש/י ב-Australian Red Lifeblood כמקור האמת, ותיצור מאגר נתונים שמבוסס על נתונים לא מובנים מהאתר של בדיקת הדם.

  1. כדי ליצור אפליקציית צ'אט חדשה ב-Vertex AI Conversation, אפשר:
    1. עוברים למסוף השיחה של Vertex AI ולוחצים על +אפליקציה חדשה בחלק העליון של המסוף.
    2. עוברים למסוף של Dialogflow CX, לוחצים על +Create new Agent ובוחרים את האפשרות Auto-generate (יצירה אוטומטית). לאחר מכן תועברו לשלב הבא במסוף Vertex AI Conversation.
  2. במסוף השיחה של Vertex AI, בוחרים באפשרות Chat בתור סוג האפליקציה שרוצים ליצור.
  3. צריך להזין שם חברה מתוך Save a Life. הפרמטר הזה משמש להגדרת החברה שהנציג מייצג ואת ההיקף שלו.
  4. צריך לציין שם סוכן של Blood Donation Agent.
  5. לוחצים על המשך.
  6. לוחצים על יצירה של מאגר נתונים חדש.
  7. בוחרים את Cloud Storage כמקור הנתונים לאחסון הנתונים.
  8. מציינים את התיקייה הבאה של Google Cloud Storage שמכילה נתונים לדוגמה ל-Codelab הזה, ושימו לב שהקידומת gs:// לא נדרשת:
    cloud-samples-data/dialogflow-cx/arc-lifeblood
    
  9. בוחרים באפשרות מסמכים לא מובנים כסוג הנתונים שמייבאים.
  10. לוחצים על המשך.
  11. מציינים את שם מאגר הנתונים של Australian Red Cross Lifeblood Unstructured.
  12. לוחצים על יצירה כדי ליצור את מאגר הנתונים.
  13. ברשימת מאגרי הנתונים, בוחרים את Australian Red Cross Lifeblood Unstructured החדש שנוצר.
  14. לוחצים על יצירה כדי ליצור את אפליקציית הצ'אט.

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

אבל יש עוד הרבה דברים לעשות כדי שהנציג יהיה נגיש למשתמשים. בקטע הבא משתמשים ב-Knowledge handler כדי להפעיל שיחות בין הנציג לבין משתמשי הקצה לגבי דרישות הסף.

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

צריך להזין את ההנחיה של חנות התאריך

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

  1. במסוף השיחה של Vertex AI, לוחצים על השם של אפליקציית הצ'אט, ואז תועברו למסוף Dialogflow CX להמשך בדיקה והתאמה אישית.
  2. במסוף Dialogflow CX ומתוך הנציג, לוחצים על Agent settings (הגדרות סוכן) (בפינה הימנית העליונה של הדף), עוברים לכרטיסייה ML ולבסוף פותחים את הכרטיסייה AI גנרטיבי.

מעבר להצעה לפעולה של מאגר הנתונים

  1. עליך למלא את הטופס הבא כדי ליצור את הבקשה הבאה במאגר הנתונים: השם שלך הוא Donate ועליך למלא את chatbot באופן מועיל ומנומס בSave a life, a fictitious organization. המשימה שלך היא לעזור ל-humans with eligibility information.

ממלאים את הטופס כדי ליצור את ההנחיה

הפעלת חלופה גנרטיבית לאירוע חוסר התאמה של תהליך ההתחלה שמוגדר כברירת מחדל

  1. עוברים לכרטיסייה Build ופותחים את דף ההתחלה.
  2. לוחצים על הגורם המטפל באירועים sys.no-match-default. מפעילים את תכונת החלופה הגנרטיבית, אלא אם התיבה כבר מסומנת.

הפעלת חלופה גנרטיבית לזרימה ללא התאמה

בדיקת מאגר הנתונים של הנציג

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

עריכת מאגרי הנתונים

מאגר הנתונים שיצרתם קודם כבר נבחר בשבילכם על ידי Dialogflow.

שיוך מאגר הנתונים שיצרתם

גוללים למטה אל Agent Responses בקטע Fulfillment. מילוי הזמנה הוא התגובה של הנציג למשתמש הקצה. Dialogflow אכלס מראש את הפרמטר AgentIdentifie באמצעות הפרמטר $request.knowledge.answers[0], שמכיל בזמן הריצה את התשובה הראשית לשאלה של המשתמש.

התשובה הכי חשובה מנציג/ת התמיכה כוללת את השאלה של המשתמש.

5. בדיקת הנציג

כשהמסמכים יהיו זמינים ומוכנים לשימוש על ידי הנציג שלכם, תוכלו לבדוק עד כמה התשובות טובות.

לוחצים על סוכן בדיקה כדי לפתוח שוב את הסימולטור.

בדיקה חוזרת של הנציג

שואלים שאלות שאתם מצפים למצוא בדף השאלות הנפוצות באתר:

  • What age do I need to be to donate?
  • Can pregnant women donate?
  • I've just come back from a trip to Africa. Can I donate?
  • How can I schedule an appointment?

בדיקה שהתשובות מגיעות ממאגר הידע

שימו לב שהתשובות אוחזרו מהאתר של הצלב האדום האוסטרלי. כפי שצוין בדף הזה, יש גילים מינימליים ומקסימליים לתרומת דם. הגיל המינימלי הוא 18 והגיל המקסימלי הוא 75 לתורמים חדשים. ראיות נוספות לעובדה שאנחנו שולפים מידע ממאגר הנתונים ניתנות על ידי סמל הכוכב הקטן שמופיע בתגובת הסוכן ועל ידי תגובת ה-JSON המקורית.

בדיקת תגובת ה-JSON המקורית

לסיום, ננסה לאתגר את הנציג עם שאלה שלא קשורה בכלל לתרומת דם.

משתמש: "What's the weather like in Melbourne? "

נציג: "לצערי, אני לא יכול לעזור לך בנושא הזה. איך אוכל לעזור לך עם פרטי הזכאות?"

בתשובה הזו יש תוכן שנוצר על ידי AI, והיא נגזרת משורת הטקסט שנוצרה ב-Dialogflow, מההגדרה של מחבר הידע שצוינה קודם: 'השם שלך הוא 'תרומה', ויש לך צ'אט בוט מועיל ומנומס ב-Save a Life. המשימה שלכם היא לעזור לאנשים עם מידע על זכאות. הנחיית הטקסט הזו כוללת את שם החברה, את שם הנציג, והכי חשוב – מה ההיקף שמשמש את Dialogflow כדי ליצור את התשובה של הנציג.

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

6. הגדרת הנציג לבוחן הזכאות

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

הגדרת נתיבים ופרמטרים חדשים

  1. פותחים את דף הפתיחה ולוחצים על עריכת מאגרי הנתונים.
  2. לשנות את התשובה של הנציג הקיים ל-$request.knowledge.answers[0] Would you like to take the eligibility quiz to find out if you can donate blood, and start changing lives?.

העשרת התשובה של הנציג לשאלות הנפוצות של המשתמש

  1. לוחצים על הלחצן שמירה.
  2. עכשיו צריך לתכנן את הנציג כך שיטפל בתשובה "כן" וגם 'לא' תשובות מדויקות. בתור התחלה, צריך ליצור Intent מסוג confirmation.yes ו-Intent מסוג confirmation.no. צריך לפעול לפי ההנחיות האלה לגבי שימוש חוזר ב-Intent.
  3. לאחר מכן, בדף ההתחלה, יוצרים נתיב ל-Intent מסוג confirmation.yes שעובר לדף חדש בוחן זכאות.

יצירת מסלול ל-Intent של הפרמטר approval.yes

כשמפעילים את האפשרות Certificate.yes, היא עוברת לדף חדש לבדיקת הדרישות.

  1. כפי שציינו קודם, נפשט את הבוחן, ואנחנו נביא בחשבון רק את גיל המשתמש והמשקל שלו כדי לקבוע אם הוא זכאי לתרום. פותחים את הדף בוחן זכאות ומוסיפים פרמטר טופס חדש age-weight ואז בוחרים באפשרות @sys.any בתור סוג הישות. צריך לציין "What is your age and weight?" כמילוי ההנחיה הראשונית. אנחנו רוצים לאסוף גם את הגיל וגם את המשקל בבת אחת. שומרים את כל השינויים.

יצירת פרמטר

יצירה והגדרה של מחולל הזכאות

תכונת המחולל היא תכונה של Dialogflow CX שמאפשרת למפתחים להשתמש במודלים הגנרטיביים החדשים ביותר של Google לשפה גדולה (LLM) בזמן מילוי ההזמנות של Dialogflow CX. גנרטורים שיצרו תשובות מנציגים בזמן ריצה. מחולל יכול לטפל בתשובות כלליות שכוללות ידע כללי ממערך נתונים טקסטואלי גדול שהוא אומן לפיו או את ההקשר מהשיחה.

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

  1. במסוף Dialogflow CX, עוברים לכרטיסייה Manage (ניהול), בוחרים באפשרות Generator ולוחצים על Create new (יצירת חדש).

יצירת מחולל חדש

  1. לאחר מכן, נותנים שם תיאורי לתצוגה וכותבים את הנחיית הטקסט. משאירים את הגדרות ברירת המחדל של בקרת האיכות של המודל. לאחר מכן לוחצים על Save (שמירה) כדי ליצור את המחולל.
    • השם המוצג: Blood Donation Eligibility
    • הנחיית טקסט: Check the users eligibility against the following criteria: the minimum age is 18 and the maximum age is 75. Weight should be above 50 Kg. The user age and weight is $last-user-utterance. Be nice and tell the user if they are eligible to donate (also tell them why not in case)

הנחיית הטקסט נשלחת למודל הגנרטיבי בזמן מילוי ההזמנות בזמן הריצה. זו צריכה להיות שאלה או בקשה ברורה כדי שהמודל יוכל להניב תשובה טובה. בשורת הטקסט, אתם יכולים להשתמש ב-placeholders מיוחדים של הנחיות מובנות של הגנרטור:

  • $conversation השיחה בין הנציג לבין המשתמש, לא כולל צורת ההתבטאות האחרונה של המשתמש.
  • $last-user-utterance הביטוי האחרון של המשתמש.

הנחיית הטקסט שהגדרתם מצפה מהמשתמש להזין גיל ומשקל בשיחה אחת ('$last-user-utterance').

שימוש במחולל למילוי הזמנות והגדרת כל הפרמטרים הנדרשים

  1. בדף בוחן דרישות הסף, מוסיפים מסלול חדש שיופעל אחרי שכל הפרמטרים ימולאו. מזינים את דרישת התנאי $page.params.status = "FINAL" ולוחצים על Save (שמירה).

הוספה של מסלול חדש, שיתבצע לאחר שכל הפרמטרים ימולאו

  1. נכנסים לקטע Generator בחלונית Fulfillment ומרחיבים אותה. אחר כך לוחצים על הוספת מחולל ובוחרים את המחולל זכאות לתרומת דם. לאחר בחירת המחולל, עליכם להגדיר את פרמטר הפלט שיכיל את התוצאה של המחולל לאחר הביצוע.

בוחרים את המחולל 'זכאות לתרומת דם', משייכים placeholders של הנחיות לפרמטרים של הסשן ומגדירים את פרמטר הפלט

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

שימוש בפרמטר הפלט בתגובת הנציג

7. איך בודקים מחדש את הנציג

לוחצים על סוכן בדיקה כדי לפתוח אותו שוב.

בדיקה חוזרת של הנציג

בסימולציה, מתחילים שיחה חדשה עם הנציג. תחילה מומלץ לשאול על דרישות הגיל ולאחר מכן להמשיך לבוחן הזכאות. בדיקת "כשירה" קודם כל, מזינים גיל בין 18 ל-75 ומשקל מעל 50 ק"ג.

נתיב מתאים

לאחר מכן, בודקים אם בדיקת הזכאות נכשלת אם אחת מהדרישות או שתיהן לא מתמלאות.

נתיב לא כשיר

נהדר, המחולל פועל כמו שצריך! או שאולי כן? מה קורה אם המשתמש מספק את הגיל אבל לא את המשקל (או להיפך)?

יש לציין גיל, אבל לא משקל

8. כוונון הנחיות בגנרטור

איסוף גיל ומשקל בחשבון אחד לא נראה תקין, אלא אם מספקים גם את הגיל וגם את המשקל. במקום זאת, אנחנו צריכים ליצור טופס שאוסף את שני הערכים כפרמטרים של ישויות. כדי שההנחיה תהיה רלוונטית לכל דרישות הסף (כמו הגיל והמשקל), אפשר להשתמש ב-placeholders על ידי הוספת הסימן $ לפני המילה. בשלב מאוחר יותר נשייך את ה-placeholders האלה של הנחיות המחולל לפרמטרים של סשנים במילוי האוטומטי, והם יוחלפו בערכי הפרמטרים של הסשן במהלך הביצוע.

  1. פותחים את הדף בוחן זכאות ומוסיפים שני פרמטרים נפרדים לטופס: אחד למשקל ואחד לגיל. בוחרים את @sys.number-integer כסוג הישות ומסמנים את הפרמטרים הנדרשים. צריך לספק את ההנחיות הראשוניות למילוי הזמנות, למשל How old are you? ו-What is your correct weight?. שומרים את כל השינויים.

טופס זכאות

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

הסרת המחולל

  1. נכנסים לכרטיסייה ניהול, בוחרים באפשרות גנרטורים ומעדכנים את הנחיית הטקסט במחולל זכאות לתרומת דם כך: Check the users eligibility against the following criteria: the minimum age is 18 and the maximum age is 75. The weight must be at least 50 kg. The user is $age years old and weighs $weight Kg. Craft an email and politely explain to the user if they're eligible to donate and if not why.. מקישים על שמירה.

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

הגדרה מחדש של הנחיית הטקסט

  1. בדף בוחן זכאות, בוחרים את המסלול ומרחיבים את הקטע Generator בחלונית Fulfillment. לאחר מכן, לוחצים על הוספת מחולל ובוחרים את מחולל הזכאות לתרומת דם. אחרי שבוחרים את המחולל, צריך לשייך את ה-placeholders החדשים של ההנחיות לפרמטרים המתאימים של הסשן. בנוסף, צריך להגדיר מחדש את פרמטר הפלט. מקישים על שמירה.

עדכון קישורי המחולל

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

אימייל שמציין שהמשתמש לא עומד בדרישות

אימייל שמציין שהמשתמש עומד בדרישות

9. מזל טוב

כל הכבוד שהשלמת את ה-Codelab הזה!

כל הכבוד על השלמת ה-Codelab!

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

הסרת המשאבים

אפשר לבצע את ניקוי הניקוי הבא כדי להימנע מצבירת חיובים בחשבון Google Cloud עבור המשאבים שבהם נעשה שימוש ב-Codelab הזה:

  • כדי להימנע מחיובים מיותרים ב-Google Cloud, אפשר להשתמש במסוף Google Cloud כדי למחוק את הפרויקט אם אין לכם צורך בו.
  • אם השתמשתם בפרויקט קיים ב-Google Cloud, כדאי למחוק את המשאבים שיצרתם כדי לא לצבור חיובים לחשבון. למידע נוסף, פועלים לפי השלבים למחיקת אפליקציה.
  • אם רוצים להשבית את ממשקי ה-API של Vertex AI Conversation ו-Dialogflow, נכנסים לדף Discovery Engine API Service Details, לוחצים על Disable API, מאשרים. נכנסים לדף Dialogflow API Service Details, לוחצים על Disable API ומאשרים.

מידע נוסף

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

רישיון

היצירה הזו בשימוש ברישיון Creative Commons Attribution 2.0 גנרי.