1. סקירה כללית
העדכון האחרון: 2023-08-07
מה תפַתחו
ב-Codelab הזה נסביר איך ליצור, לפרוס ולהגדיר נציג וירטואלי פשוט ב-Dialogflow CX שיעזור לצוללנים שנוסעים לחו"ל להזמין מקומות לקבוצות ולשכור סירות פרטיות. הנציג הווירטואלי ישתמש ב-AI גנרטיבי ובמודלים הגדולים העדכניים של שפה (LLM) של Google כדי ליצור תשובות של נציג וירטואלי.
מה תלמדו
- איך מפעילים את ממשקי ה-API הרלוונטיים
- איך Dialogflow מאכלס מראש באופן אוטומטי ערכים של פרמטרים בטופס בדף מפרמטרים של כוונות
- איך מגדירים גורמים שמטפלים באירועים ב-Dialogflow
- איך מפעילים מענה גנרטיבי כגיבוי לגורמים שמטפלים באירועים ללא התאמה שמשמשים בתהליכים ובמהלך מילוי פרמטרים
- איך מגדירים פרומפט טקסטואלי משלכם לטיפול במצבים בסיסיים ובמצבים ספציפיים לסוכן
- איך כותבים תיאורים טובים של כוונות ופרמטרים כדי ליצור אמצעי טיפול בהנחיות חוזרות לפרמטרים נדרשים (בנוסף להנחיות חוזרות שהוגדרו על ידי המשתמש)
- איך בודקים את הסוכן ומדמים שאלות של לקוחות שמפעילות מענה גנרטיבי כגיבוי
מה תצטרכו
- פרויקט ב-Google Cloud
- דפדפן כמו Chrome
2. תהליך ההגדרה
כדי להתחיל להשתמש בתכונת מענה גנרטיבי כגיבוי ב-Dialogflow CX, צריך להפעיל את Dialogflow API.
הפעלת Dialogflow API באמצעות Cloud Console
- פותחים את מסוף Google Cloud בדפדפן.
- במסוף Google Cloud, עוברים אל API Library כדי לעיין בממשקי ה-API ובשירותים שאפשר להפעיל.
- משתמשים בסרגל החיפוש בחלק העליון של הדף API Library (ספריית ממשקי API), מחפשים את
Dialogflow APIולוחצים על השירות שמופיע בתוצאות. - לוחצים על הלחצן Enable כדי להפעיל את Dialogflow API בפרויקט בענן ב-Google Cloud.
באמצעות ה-CLI של gcloud (חלופה)
לחלופין, אפשר להפעיל את ה-API באמצעות פקודת gcloud הבאה:
gcloud services enable dialogflow.googleapis.com
אם ה-API הופעל בהצלחה, תוצג הודעה דומה לזו:
Operation "operations/..." finished successfully.
קבלת הקוד
לא תידרשו ליצור את הנציג הווירטואלי מאפס, אלא תקבלו סוכן שיהיה עליכם לשחזר ממסוף Dialogflow CX ואז לשפר אותו.
כדי להוריד את קוד המקור:
- פותחים כרטיסייה חדשה בדפדפן, עוברים אל מאגר הסוכנים ומשכפלים אותו משורת הפקודה.
- הסוכן המקורי יוצא כחבילת JSON. פותחים את הקובץ, בודקים את הגדרות הסוכן, מעיינים בהגדרת התהליך
Liveaboards.jsonולבסוף עוברים בין דפי התהליך, הכוונות והישויות.
3. יצירת סוכן חדש
פתיחת מסוף Dialogflow
תשתמשו במסוף Dialogflow CX יחד עם פרויקט Google Cloud כדי לבצע את השלבים שנותרו ב-codelab הזה.
- בדפדפן, עוברים אל מסוף Dialogflow CX.
- בוחרים את הפרויקט בענן ב-Google Cloud שבו רוצים להשתמש, או יוצרים פרויקט חדש.
- רשימת הסוכנים אמורה להופיע במסוף Dialogflow CX.
אם זו הפעם הראשונה שאתם משתמשים ב-Dialogflow CX, כדאי לעיין במסמכי התיעוד של Dialogflow CX כדי לקבל מידע נוסף על הגדרת הפרויקט וההגדרות בהתאם לצרכים שלכם.
יצירת סוכן חדש ב-Dialogflow CX
- כדי לשחזר את הסוכן שהורדתם ממאגר GitHub, אתם צריכים ליצור סוכן חדש. במסוף Dialogflow CX, לוחצים על Create new agent (יצירת סוכן חדש) בפינה השמאלית העליונה של הדף.

- בוחרים באפשרות יצירת סוכן משלך.

- ממלאים את הטופס עם הגדרות הסוכן שבהמשך ולוחצים על יצירה כדי ליצור את הסוכן.
- בשם המוצג בוחרים באפשרות:
Divebooker - בקטע 'מיקום' בוחרים:
us-central1 - בחירת אזור הזמן המועדף
- בחירה ב
en - Englishכשפת ברירת המחדל
- מערכת Dialogflow תפתח את הסוכן באופן אוטומטי. עוד לא סיימנו!
שחזור הסוכן של Divebooker
- חוזרים לדף רשימת הסוכנים ומאתרים את הסוכן שיצרתם. לוחצים על האפשרות
ואז על הלחצן שחזור. - בוחרים באפשרות Upload וגוררים את קובץ ה-ZIP שהורדתם קודם ממאגר GitHub או בוחרים אותו.
- לוחצים על הלחצן שחזור כדי לייבא את הסוכן שסיפקנו.

כל הכבוד! סיימתם לבנות נציג וירטואלי להזמנת צלילות, והוא מוכן לעזור ללקוחות שלכם. בקטע הבא נבדוק את היכולות שלו ונגלה עד כמה הוא טוב במענה לשאלות של משתמשים ובסיוע בבקשות להזמנות.
4. בדיקת הנציג
ב-Dialogflow יש סימולטור מובנה שאפשר לשוחח עם הסוכנים ולגלות באגים. בכל תור, אפשר לוודא שהערכים של ה-Intent שהופעל, התגובה של הסוכן, הדף הפעיל ופרמטרים הסשן נכונים.
נבדוק כמה תרחישים, ובכל תרחיש נבדוק למה הסוכן נותן תגובה מסוימת. נתחיל עם הראשון.
כוונת רכישה לא ברורה
- במסוף Dialogflow, בתוך הסוכן, לוחצים על Test Agent (בדיקת הסוכן) כדי לפתוח את הסימולטור.

- מקלידים הודעת פתיחה לסוכן, כמו
Hello, ושואלים את השאלהwhat is a liveaboard?. השאלה לא תואמת לאף כוונה, מוצגת הנחיה כללית כמו 'סליחה, לא ברור לי איך לעזור לך'. כדי לבדוק שהופעל אירוע מובנה מסוג sys.no-match-default, בודקים את התשובה המקורית בסימולטור.

גוללים כמעט עד סוף תגובת ה-JSON. שימו לב שכאשר מחפשים כוונה תואמת, Dialogflow מזהה שזוהי NO_MATCH ומעלה אירוע no-match.

- עוברים לכרטיסייה Build (יצירה) ופותחים את Start Page (דף התחלה) של זרימת Liveaboards (ספינות מגורים).

כברירת מחדל, לכל תהליך יש מטפלים באירועים עבור האירועים המובנים no-match ו-no-input. ה-event handlers האלה נוצרים אוטומטית כשיוצרים זרימת עבודה, ואי אפשר למחוק אותם.
- לוחצים על sys.no-match-default event handler (גורם מטפל באירועים sys.no-match-default) וגוללים למטה לקטע Agent responses (תשובות של הסוכן). Dialogflow מספק רשימה של תשובות חלופיות, אבל אפשר גם להגדיר סוגים שונים של הודעות תשובה, כדי לספק למשתמש הקצה תשובות שהן לא רק טקסט.

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


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

- פותחים את דף ההתחלה ולוחצים על המסלול head.send.group.request. גוללים למטה לקטע Transition (מעבר), שבו מציינים ל-Dialogflow לאיזה דף לעבור כשהכוונה הזו מזוהה.

- סוגרים את ההגדרה של מסלול ומרחיבים את הדף איסוף מידע נוסף. שימו לב לפרטי המילוי ולרשימת הפרמטרים.

לכל דף ב-Dialogflow CX אפשר להגדיר טופס, שהוא רשימה של פרמטרים שצריך לאסוף מהמשתמש הסופי עבור הדף. שימו לב שהסוכן לא שאל מה היעד כי העברנו אותו כחלק מהקלט הראשוני, והיעד הוא גם פרמטר של כוונת המשתמש. כשדף הופך לפעיל בפעם הראשונה, ובמהלך התקופה הפעילה שלו, כל פרמטר של טופס עם אותו שם כמו פרמטר של כוונת המשתמש מוגדר אוטומטית לערך הפרמטר של הסשן, וההנחיה המתאימה מדלגת.
- עוברים לכרטיסייה ניהול ולוחצים על הכוונה head.send group request בקטע כוונות. בודקים את משפטי ההדרכה שסופקו עבור הכוונה הזו ואת החלקים שסומנו במשפטי ההדרכה.

- נניח שמשתמש אומר "I need to organize a trip to Costa Rica for 15 divers" (אני רוצה לארגן טיול לקוסטה ריקה ל-15 צוללנים). הערך "קוסטה ריקה" מתויג ב-destination והערך "15" מתויג ב-number-of-guests. כשמוסיפים הערות לחלקים של ביטוי אימון, מערכת Dialogflow מזהה שהחלקים האלה הם רק דוגמאות לערכים בפועל שמשתמשי הקצה יספקו בזמן הריצה. לכן, עבור הקלט הראשוני "Do you offer charters to the Galapagos Islands?" מערכת Dialogflow חילצה את פרמטר היעד מתוך 'איי גלאפגוס'.
בהמשך נראה מה קורה אם לא מספקים לסוכן קלט תקין כשמבקשים למלא פרמטר בטופס.
קלט לא תקין
- בחלונית Simulator (סימולטור), לוחצים על סמל האיפוס כדי להתחיל שיחה חדשה עם הסוכן.
- תביעו כוונה לבצע הזמנה לקבוצה, אבל הפעם אל תגידו לסוכן לאן אתם רוצים לנסוע ומתי. כשתתבקשו לציין יעד, תשיבו עם ערך אקראי שהוא לא קוסטה ריקה, גלאפגוס או מקסיקו.

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

- לוחצים על הישות יעד כדי לראות אילו ערכים תואמים לישות. הערך 'אירופה' לא מופיע ברשימה וגם לא מילה נרדפת שלו.
- בתרשים הזרימה, מרחיבים את הדף Collect Further Info (איסוף מידע נוסף) שמכיל את פרמטרים של הטופס. לוחצים על הפרמטר destination (יעד).
- בחלונית הפרמטרים, גוללים למטה אל Reprompt event handlers section (קטע של גורמים מטפלים באירועים של בקשה חוזרת), ואז לוחצים על גורם מטפל באירועים No-match default (ברירת מחדל של אי התאמה).
גורם מטפל באירועים ברמת הפרמטר נועד לטפל בקלט לא תקין של משתמש הקצה במהלך מילוי טופס. מכיוון שהקלט 'אירופה' לא צפוי, הופעל אירוע sys.no-match-default, והופעל ה-handler המתאים להנחיה חוזרת שהוגדר לאירוע הזה. בקטע הסוכן אומר מופיעות שתי הודעות חלופיות להנחיה חוזרת.

כל הכבוד! מקרי הבדיקה האלה מייצגים תרחישים נפוצים שהסוכן אמור לטפל בהם בצורה מתאימה. במקרים רבים, משתמשים שואלים שאלות שהבוטים לא יכולים לענות עליהן או מבקשים בקשות שהבוטים לא יכולים לבצע. מאוד מורכב לתכנן עבור הזנב הארוך, כלומר עבור תרחישים שחורגים מהנתיבים המוכרים שרוב המשתמשים יבחרו בהם. תחשוב על כל הדברים שיכולים להשתבש בשיחה ועל כל הנתיבים הלא צפויים או הלא נתמכים שהמשתמשים עשויים לבחור.
התפתחויות בזיהוי אוטומטי של דיבור (ASR) מאפשרות לנו לדעת כמעט תמיד בדיוק מה המשתמשים אמרו. עם זאת, עדיין קשה לקבוע למה התכוונו המשתמשים. לפעמים אי אפשר להבין את ההגייה של מילה או משפט בלי הקשר. בקטע הבא של ה-Codelab הזה נסביר איך מודלי השפה הגדולים (LLM) הגנרטיביים העדכניים של Google יכולים לעזור להחזיר את הדיאלוג למסלול ולהתקדם בשיחה.
5. הפעלת מענה גנרטיבי כגיבוי
מהי התכונה 'מענה גנרטיבי כגיבוי'?
תכונת המענה הגנרטיבי כגיבוי היא תכונה של Dialogflow CX שמשתמשת במודלים גדולים של שפה (LLM) של Google כדי ליצור תשובות של נציגים וירטואליים.
איך זה עוזר?
בין תרחישי השימוש העיקריים יש מספר בקשות משתמשים נפוצות למדי, כמו חזרה על מה שהסוכן אמר במקרה שהמשתמש לא הבין, המתנה על הקו כשמשתמש מבקש זאת וסיכום השיחה. בבדיקה הראשונה שערכנו, הסוכן לא הצליח לענות על השאלה 'מהי ספינת מגורים?' כי לא יצרנו כוונה כזו ולא תכננו את התהליך כך שיטפל בסוגים האלה של שאלות כלליות שקשורות לצלילה ולספינות מגורים.
גם עם כוונות חזקות, עדיין יש מקום לטעות. יכול להיות שהמשתמשים לא יפעלו לפי התסריט וישתקו (שגיאת No Input) או יגידו משהו לא צפוי (שגיאת No Match). עדיף למנוע שגיאות מאשר לטפל בהן אחרי שהן מתרחשות, אבל אי אפשר למנוע שגיאות לחלוטין. הנחיות גנריות כמו "סליחה, אני לא בטוח איך אוכל לעזור" או פתרונות דומים שמתאימים למינימום הנדרש, לרוב לא מספיקים. ההנחיות לשגיאות צריכות להתבסס על עקרון שיתוף הפעולה, שלפיו תקשורת יעילה מתבססת על ההנחה שיש שיתוף פעולה בין המשתתפים בשיחה.
בקטע הבא נסביר איך אפשר להגדיר את תכונת מענה גנרטיבי כגיבוי כדי להגדיל את הכיסוי של כוונות המשתמשים ולפשט את הטיפול בשגיאות, וכך לשפר את חוויית הלקוחות.
הפעלת מענה גנרטיבי כגיבוי לאירוע 'אין התאמה' של כל התהליך
אפשר להפעיל מענה גנרטיבי כגיבוי למטפלים באירועים ללא התאמה שמשמשים בתהליכים, בדפים או במהלך מילוי פרמטרים. כשמענה גנרטיבי כגיבוי מופעל לאירוע ללא התאמה, בכל פעם שהאירוע הזה מופעל, מערכת Dialogflow מנסה ליצור תשובה גנרטיבית שתוקרא למשתמש. אם תהליך יצירת תשובות לא יצליח, במקום זאת תתקבל תגובה רגילה של הסוכן.
אפשר להפעיל מענה גנרטיבי כגיבוי בסוכן במטפלים באירועים ללא התאמה, שאפשר להשתמש בהם במילוי של זרימת שיחה, דף או פרמטר.
אנחנו נתחיל להפעיל מענה גנרטיבי כגיבוי לכל התהליך של Liveaboards, אירוע ברירת המחדל של אי התאמה.
- מרחיבים את דף הפתיחה של התהליך.
- לוחצים על sys.no-match-default בקטע Event handlers (מטפלים באירועים).
- מסמנים את התיבה הפעלה של מענה גנרטיבי כגיבוי בקטע תשובות של סוכן, ואז לוחצים על שמירה.


הפעלת מענה גנרטיבי כגיבוי לאירועים ספציפיים ללא התאמה
עכשיו אנחנו רוצים להפעיל מענה גנרטיבי כגיבוי כדי לטפל בקלטים לא תקינים כשהסוכן מבקש את מספר הנוסעים:
- פותחים את הדף איסוף מידע נוסף שמכיל את פרמטרים של הטופס. לוחצים על הפרמטר number-of-guests (מספר האורחים).
- עוברים אל גורם מטפל באירועים No-match (לא נמצאה התאמה) (גוללים למטה אל הקטע Reprompt event handlers (גורמים מטפלים באירועים של בקשה חוזרת), ואז לוחצים על גורם מטפל באירועים No-match default (ברירת מחדל של לא נמצאה התאמה)).

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

- לבסוף, לוחצים על שמירה.
- עכשיו חוזרים על אותם השלבים כדי להפעיל את המענה הגנרטיבי כגיבוי עבור destination ו-email-address.
כל הכבוד! הפעלתם מענה גנרטיבי כגיבוי כדי לטפל בכוונות לא צפויות ובערכי פרמטרים לא חוקיים. בשלב הבא נראה איך מגדירים את תכונת מענה גנרטיבי כגיבוי באמצעות פרומפט טקסטואלי שמורה ל-LLM איך להגיב.
6. הגדרת מענה גנרטיבי כגיבוי
תכונת מענה גנרטיבי כגיבוי מעבירה בקשה למודל שפה גדול (LLM) כדי ליצור את התשובה הגנרטיבית. הבקשה היא הנחיה טקסטואלית שכוללת שילוב של שפה טבעית ומידע על המצב הנוכחי של הסוכן ושל השיחה. אפשר להגדיר את התכונה בכמה דרכים:
- בוחרים הנחיה ספציפית (שכבר הוגדרה) שתשמש לתהליך יצירת תשובות.
- מגדירים הנחיה בהתאמה אישית.
בחירת הנחיה שכבר הוגדרה
- במסוף Dialogflow CX, לוחצים על הגדרות הסוכן.

- עוברים לכרטיסייה ML ואז לכרטיסיית המשנה Generative AI.

התכונה כוללת שתי תבניות של הנחיות: תבנית ברירת המחדל (שלא גלויה) ותבנית הדוגמה, שמספקת הנחיות לכתיבת הנחיות משלכם.
- בוחרים בתבנית Example ולוחצים על הלחצן Edit (עריכה) בצד שמאל של התפריט הנפתח כדי לבדוק אותה.
בעזרת ההנחיה המוגדרת מראש, הנציג הווירטואלי יכול לטפל במצבים בסיסיים של שיחה. לדוגמה:
- לפתוח את השיחה עם המשתמש ולסיים אותה.
- אם המשתמש לא הבין משהו, צריך לחזור על מה שהנציג אמר.
- להמתין על הקו אם המשתמש מבקש זאת.
- תסכם את השיחה.
בואו ננסה להגדיר פרומפט טקסטואלי ספציפי לסוכן של Divebooker!
7. הגדרת הנחיה משלכם
- מעתיקים את ההנחיה שבהמשך ומדביקים אותה באזור פרומפט טקסטואלי.
You are a friendly agent that likes helping traveling divers.
You are under development and you can only help
$flow-description
At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts.
Currently you can $route-descriptions
The conversation between the human and you so far was:
${conversation USER:"Human:" AGENT:"AI"}
Then the human asked:
$last-user-utterance
You say:
- בוחרים באפשרות שמירה כתבנית חדשה כדי לשמור את ההנחיה החדשה כתבנית חדשה (צריך לבחור שם חדש לתבנית) ולוחצים על שמירה בפינה השמאלית התחתונה של החלונית.

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

כשכותבים פרומפט טקסטואלי משלכם, חשוב להיות ברורים, תמציתיים וספציפיים. האופן שבו מנסחים את ההנחיה למודל שפה גדול (LLM) יכול להשפיע מאוד על איכות התשובה של המודל. מודלי LLM מאומנים לפעול לפי הוראות, ולכן ככל שההנחיה שלכם תיראה כמו הוראה מדויקת, כך סביר שתקבלו תוצאות טובות יותר. כדאי לנסח הנחיה, לבדוק את התוצאות שמתקבלות ולשפר אותה.
כדי ליצור הנחיות יעילות, כדאי לפעול לפי השיטות המומלצות הבאות:
- צריך לספק תיאור ברור ותמציתי של המשימה שרוצים שה-LLM יבצע. לא יותר ולא פחות. חשוב שהתיאור יהיה מלא וקצר.
- בנוסף, ההנחיה צריכה להיות ספציפית ומוגדרת היטב, ולא לכלול שפה מעורפלת או דו-משמעית.
- כדאי לפצל משימות מורכבות לחלקים קטנים יותר שקל יותר לנהל. אם מחלקים את המשימה לשלבים קטנים יותר, אפשר לעזור למודל להתמקד בדבר אחד בכל פעם ולהפחית את הסיכוי לשגיאות או לבלבול.
- כדי לשפר את איכות התשובות, כדאי להוסיף דוגמאות בהנחיה. ה-LLM לומד מהדוגמאות איך להגיב בהקשר.
כשיוצרים הנחיה, בנוסף לתיאור בשפה טבעית של סוג ההקשר שרוצים ליצור, אפשר להשתמש גם במחזיקי המקום הבאים:
$conversationהשיחה בין הסוכן לבין המשתמש, לא כולל האמירה האחרונה של המשתמש. אפשר לשנות את התחיליות של התור (לדוגמה: 'אנושי', 'AI' או 'אתה', 'סוכן') בפרומפט הטקסטואלי$last-user-utteranceההתבטאות האחרונה של המשתמש.$flow-descriptionתיאור הזרימה הפעילה.$route-descriptionsתיאורי הכוונות של הכוונות הפעילות.
עכשיו שיש לנו פרומפט טקסטואלי ראשוני, המשימה הבאה היא לוודא שלזרימות ולכוונות יש תיאורים טובים.
8. הוספת תיאורים של התהליך ושל הכוונות
הוספת תיאור של התהליך
- כדי להוסיף תיאור לזרימת Liveaboards, מעבירים את העכבר מעל הזרימה בקטע Flows כדי לגשת להגדרות שלה.

- לוחצים על לחצן האפשרויות
. - בוחרים באפשרות הגדרות של זרימת העבודה ומוסיפים את התיאור הבא (או תיאור דומה):
search, find and book liveaboards.

- לוחצים על שמירה.
הוספת תיאור הכוונה
- עכשיו נוסיף תיאור טוב ל-intent head.send.group.request. עוברים לכרטיסייה ניהול, בוחרים באפשרות Intents (כוונות) בקטע Resources (משאבים) ובוחרים את הכוונה head.send.group.request.
- מוסיפים את התיאור הבא:
assist users with group or full charter reservations. Initially collect travel details including departure period, destination, number of guests (min 4 max 15 people), contact details. The destination must be one of the following in the Pacific: Costa Rica, Mexico, Galapagos Islands
שימו לב שהתיאור מכיל מידע חשוב כמו מספר הנוסעים המינימלי והמקסימלי שמותרים בסירה. חשוב לזכור!
- לוחצים על שמירה.
וזהו, סיימת! הפעלתם מענה גנרטיבי כגיבוי לטיפול באירועים ללא התאמה, גם עבור זרימת השיחה וגם עבור מילוי פרמטרים. הגדרתם גם פרומפט טקסטואלי משלכם, שהתכונה 'מענה גנרטיבי כגיבוי' מעבירה למודל שפה גדול כדי ליצור תשובות גנרטיביות.
בקטע הבא נבדוק מחדש את הסוכן כדי לראות איך הוא עונה על אותן שאלות מאתגרות ששאלנו קודם.
9. בדיקה מחדש של הנציג
אחרי שמגדירים ומפעילים את המענה הגנרטיבי כגיבוי בנציג הווירטואלי, אפשר לשאול שאלות דומות ומורכבות ולראות איך הוא מתמודד עם התשובות.
לוחצים על Test Agent (סוכן בדיקה) כדי לפתוח שוב את הסימולטור.

אפשר לשאול שוב את הסוכן על שהייה על ספינות ועל צלילה מספינות. מעכשיו, שימו לב איך כל דיאלוג כולל הודעות שהוגדרו על ידי המשתמש ותשובות שנוצרו, שמודגשות בתיבות אדומות.

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

נכון, בשלב הזה לא תכננו שהסוכן הדיגיטלי יעזור בנושא קורסי צלילה. איך הנציג יודע את זה? בפרומפט הטקסטואלי ציינו בבירור במה הנציג יכול לעזור ובמה הוא לא יכול לעזור. "At the moment you can't help customers with land-based diving and courses. אי אפשר להמליץ על חנויות מקומיות לציוד צלילה ועל אתרי נופש עם צלילה"
עכשיו בודקים מחדש את התרחיש הרצוי ומשפרים את השיחה. עכשיו נראה איך החוויה השתנתה.


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


יש כמה דברים שכדאי לציין:
- למה המספר 20 לא תקין? הגדרנו מגבלה על מספר האורחים שמותר להזמין כחלק מתיאור הכוונה: "הסוכן אוסף מידע כמו תקופת ההמראה, היעד, מספר האורחים ***(מינימום 4, מקסימום 15 אנשים)*, פרטים ליצירת קשר" . התשובה הגנרטיבית שהמודל LLM החזיר, 'מצטערים, אנחנו יכולים לעזור רק בהזמנות לקבוצות של עד 15 אורחים', תואמת באופן מושלם להגבלות שנתנו לגבי מספר האורחים. כדי לאכוף את זה עוד יותר, מספר האורחים הוא ישות מותאמת אישית של ביטוי רגולרי שתואמת רק למספרים שנכללים בטווח 4 עד 15.
- השיחה נמשכת כי בסופו של דבר המשתמש עדיין רוצה לקבל הצעה ל-15 צוללנים. זה קורה הרבה בשיחות רגילות, אנחנו משנים את דעתנו הרבה פעמים! שימו לב שהסוכן משתף פעולה ומכוון את המשתמש בעדינות בחזרה אל המסלול הנכון.
עיצוב שיחה כולל כתיבת תסריט של חצי מהדיאלוג, בתקווה שהוא מספיק חזק כדי שכל אחד יוכל להצטרף ולגלם את החצי השני. כשמפתחים עבור הזנב הארוך, צריך להתמקד במה שהמשתמש יכול להגיד בכל שלב בשיחה כדי להגדיר את המסלולים, את ה-handlers ואת הפרמטרים. לכן הוספנו את תכונת מענה גנרטיבי כגיבוי ל-Dialogflow CX: כדי לאפשר למפתחים להתמקד בעקרונות של עיצוב שיחות ולא בפרטי ההטמעה, וכך לספק למשתמשים ממשקי צ'אט חזקים.
בוא נבצע עוד בדיקה אחת, הפעם נאתגר שוב את הבוט עם מקום שלא מופיע ברשימת היעדים הזמינים, כמו האיים המלדיביים. אחר כך נבדוק בקצרה מה קורה מאחורי הקלעים.

שימו לב: הפעלנו גם מענה גנרטיבי כגיבוי לאירוע no-match עבור הפרמטר יעד, ולכן בקשה נשלחת למודל שפה גדול (LLM) כדי ליצור את התשובה הגנרטיבית. המערכת מתעלמת מהתשובות הרגילות שמופיעות (בקטע 'הנציג אומר').
תיבות הטקסט שבהמשך יעזרו לכם להבין טוב יותר איך משתני המיקום עוזרים לעצב את הבקשה שנשלחת למודל שפה גדול.
זהו הפרומפט הטקסטואלי המותאם אישית שהגדרנו ב-Dialogflow, והפלייסהולדרים מודגשים בו:
You are a friendly agent that likes helping traveling divers.
You are under development and you can only help
$flow-description
At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts.
Currently you can $route-descriptions
The conversation between the human and you so far was:
${conversation USER:"Human:" AGENT:"AI"}
Then the human asked:
$last-user-utterance
You say:
בתיבת הטקסט שלמטה כללתי את הקלט שהתקבל על ידי מודל השפה הגדול ואת הפלט שמכיל את התשובה שנוצרה, שתוקרא למשתמש:
llm_input: You are a friendly agent that likes helping traveling divers. You are under development and you can only help search, find and book liveaboards. At the moment you can't help customers with land-based diving and courses. You cannot recommend local dive shops and diving resorts. Currently you can assist users who are looking for a group reservation or a full charter. Initially collect travel details including departure period, destination, number of guests (min 4 max 15 people), contact details. The destination must be one of the following in the Pacific: Costa Rica, Mexico, Galapagos Islands. The conversation between the human and you so far was: Human: Hi, my name's Alessia AI Hi Alessia, what can I help you with today? Human: Can you help me find a nice boat for myself and my family? AI To assist you with that I need to collect the details of your travel and then we'll get back to you with an offer shortly. Where would you like to go? We can organize a charter in Costa Rica, Galapagos Islands and several locations around Mexico Then the human asked: The kids want to go to the Maldives llm_output: You say: I'm sorry Alessia, we can only help you with liveaboards in Costa Rica, Galapagos Islands and several locations around Mexico.
בדומה לבדיקה שבוצעה קודם, התשובה שנשלחת למשתמש נוצרת על ידי המודל ומבוססת על המידע שסיפקנו כחלק מתיאור הכוונה: היעד צריך להיות אחד מהמקומות הבאים באזור האוקיינוס השקט: קוסטה ריקה, מקסיקו, איי גלאפגוס
שינוי רשימת הביטויים האסורים
אפשר להגדיר את תכונת מענה גנרטיבי כגיבוי בכמה דרכים:
- בוחרים הנחיה ספציפית (שכבר הוגדרה) שתשמש לתהליך יצירת תשובות.
- מגדירים הנחיה בהתאמה אישית.
- לשנות את רשימת הביטויים האסורים.
עד עכשיו ראינו את שתי הדרכים הראשונות. בואו נבדוק את האפשרות השלישית.
- בהגדרות הסוכן, עוברים לכרטיסייה ML ואז לכרטיסיית המשנה AI גנרטיבי.
- בקטע Banned phrases (ביטויים אסורים), מוסיפים את המשפטים הבאים לרשימה:
Dangerous countryHateful placeMedical assistance- לוחצים על שמירה.
- לוחצים על סמל האיפוס ומבצעים שוב את הבדיקה של התרחיש האחרון. במקום לספק יעד צלילה יפהפה ברחבי העולם, מזינים אחד מהביטויים האסורים.

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

יצרתם בהצלחה נציג וירטואלי והפעלתם מענה גנרטיבי כגיבוי בno-match גורמים מטפלים באירועים שמשמשים בתהליכים, ובמהלך מילוי פרמטרים.
התכונה 'מענה גנרטיבי כגיבוי' בשילוב עם תיאורים טובים של זרימת השיחה והכוונה יכולה לספק תשובות ספציפיות ושיתופיות של הסוכן, בניגוד להנחיות כלליות כמו 'מצטער, אני לא בטוח איך אוכל לעזור לך' או 'מצטער, בחרת באפשרות לא חוקית'. הודעות השגיאה שנוצרות על ידי מודלי שפה גדולים (LLM) יכולות להחזיר את המשתמשים בעדינות למסלולים מוצלחים או לאפס את הציפיות שלהם לגבי מה שאפשרי ומה שלא.
אתם מוזמנים לבדוק תרחישי שיחה אחרים ולחקור את הפונקציונליות האחרת שזמינה בנושאים Dialogflow CX ו-AI גנרטיבי.
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud על המשאבים שבהם השתמשתם ב-codelab הזה, אתם יכולים לבצע את פעולות הניקוי הבאות:
- עוברים למסוף Dialogflow CX ומוחקים את כל הסוכנים שיצרתם.
- במסוף Google Cloud, עוברים לדף APIs and Services (ממשקי API ושירותים) ומשביתים את Dialogflow API.
קריאה נוספת
כדי להמשיך ללמוד על AI גנרטיבי ועל AI בממשק שיחה, אפשר להיעזר במדריכים ובמקורות המידע הבאים:
- מסמכים בנושא Dialogflow CX
- מסמכי התיעוד בנושא מענה גנרטיבי כגיבוי
- AI גנרטיבי ב-Google Cloud
- מבוא ל-PaLM
רישיון
העבודה הזו בשימוש במסגרת רישיון Creative Commons שמותנה בייחוס כללי מגרסה 2.0.
