1. סקירה כללית
העדכון האחרון: 2023-08-07
מה תפַתחו
ב-Codelab הזה תבנו, תפרסו ותגדירו נציג וירטואלי פשוט ב-Dialogflow CX שיעזור לצוללנים שנוסעים לחו"ל להזמין מקומות לקבוצות ולשכור כלי שיט פרטיים. הנציג הווירטואלי ישתמש ב-AI גנרטיבי ובמודלים הגדולים העדכניים של Google (LLM) כדי ליצור תשובות של נציג וירטואלי.
מה תלמדו
- איך מפעילים את ממשקי ה-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 שבו רוצים להשתמש, או יוצרים פרויקט חדש.
- רשימת הסוכנים אמורה להופיע במסוף Dialogflow CX.
אם זו הפעם הראשונה שאתם משתמשים ב-Dialogflow CX, כדאי לעיין במסמכי התיעוד של Dialogflow CX כדי לקבל מידע נוסף על הגדרת הפרויקט וההגדרות בהתאם לצרכים שלכם.
יצירת סוכן חדש ב-Dialogflow CX
- כדי לשחזר את הסוכן שהורדתם ממאגר GitHub, אתם צריכים ליצור סוכן חדש. במסוף Dialogflow CX, לוחצים על Create new agent (יצירת סוכן חדש) בפינה השמאלית העליונה של הדף.

- בוחרים באפשרות Build your own 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. הפונקציות האלה לטיפול באירועים נוצרות באופן אוטומטי כשיוצרים זרימת עבודה, ואי אפשר למחוק אותן.
- לוחצים על גורם מטפל באירועים sys.no-match-default וגוללים למטה לקטע Agent responses (תשובות של הסוכן). Dialogflow מספק רשימה של תשובות חלופיות, אבל אפשר גם להגדיר סוגים שונים של הודעות תשובה, כדי לספק למשתמש הקצה תשובות שהן לא רק טקסט.

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


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

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

- סוגרים את ההגדרה של Route ומרחיבים את הדף Collect Further Info. שימו לב לפרטי המילוי של הרשומה ולרשימת הפרמטרים.

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

- נניח שמשתמש אומר: "אני רוצה לארגן טיול לקוסטה ריקה ל-15 צוללנים". הערך "קוסטה ריקה" מתויג כיעד והערך "15" מתויג כמספר האורחים. כשמוסיפים הערות לחלקים של ביטוי לאימון, מערכת 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, לוחצים על Agent Settings (הגדרות הסוכן).

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

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

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