1. סקירה כללית
עדכון אחרון:7 באוגוסט 2023
מה תפַתחו
ב-Codelab הזה תפתחו, תפרסו ותגדירו סוכן וירטואלי פשוט ב-Dialogflow CX כדי לעזור לצוללנים בנסיעות בהזמנה אישית ובצ'אטרים פרטיים. כדי ליצור תשובות מנציגים וירטואליים, הנציג הווירטואלי ישתמש ב-AI גנרטיבי ובמודלים הגנרטיביים החדשים ביותר של Google לשפה גדולה (LLM) (LLM).
מה תלמדו
- איך מפעילים את ממשקי ה-API הרלוונטיים
- איך Dialogflow ממלא מראש באופן אוטומטי ערכי פרמטרים של טפסים בדפים מפרמטרים של Intent
- איך מגדירים גורמים מטפלים באירועים ב-Dialogflow
- איך מפעילים חלופה גנרטיבית לגורמים מטפלים באירועים ללא התאמה, שנעשה בהם שימוש בתהליכים ובמהלך מילוי הפרמטרים
- איך להגדיר הנחיית טקסט משלכם לטיפול במצבי שיחה בסיסיים וגם בשיחות ספציפיות לנציגים
- איך לכתוב תיאורי פרמטרים וכוונת רכישה טובים כדי ליצור רכיבי handler של בקשות חוזרות לפרמטרים הנדרשים (בנוסף להנחיות שהוגדרו על ידי המשתמש)
- איך בודקים את הנציג ומדמות שאלות של לקוחות שמפעילות חלופה גנרטיבית
מה צריך להכין
- פרויקט ב-Google Cloud
- דפדפן כמו Chrome
2. בתהליך ההגדרה
כדי להתחיל להשתמש בתכונת החלופה הגנרטיבית ב-Dialogflow CX, צריך להפעיל את Dialogflow API.
הפעלת Dialogflow API באמצעות Cloud Console
- פותחים את מסוף Google Cloud בדפדפן.
- במסוף Google Cloud, נכנסים אל API Library כדי לעיין בממשקי ה-API ובשירותים שאפשר להפעיל.
- בסרגל החיפוש שבחלק העליון של הדף של ספריית ה-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 Console ואז להשתפר.
כדי להוריד את קוד המקור:
- פותחים כרטיסייה חדשה בדפדפן, עוברים למאגר הסוכנים ומשכפלים אותו משורת הפקודה.
- הסוכן הראשוני יוצא כחבילת JSON. מחלצים את הקובץ, בודקים את הגדרות הנציג, בודקים את הגדרת הזרימה
Liveaboards.json
ולבסוף מעיינים בדפי הזרימה, הכוונות והישויות.
3. יצירת נציג חדש
פתיחת מסוף Dialogflow
כדי לבצע את שאר השלבים ב-Codelab הזה, צריך להשתמש במסוף Dialogflow CX יחד עם הפרויקט ב-Google Cloud.
- בדפדפן, נכנסים למסוף של Dialogflow CX.
- בוחרים את הפרויקט ב-Google Cloud שבו רוצים להשתמש, או יוצרים פרויקט חדש שבו רוצים להשתמש.
- רשימה של הנציגים אמורה להופיע במסוף Dialogflow CX.
אם זו הפעם הראשונה שאתם משתמשים ב-Dialogflow CX, תוכלו להיעזר במסמכים של Dialogflow CX כדי להגדיר את הפרויקט וההגדרות בהתאם לצרכים שלכם.
יצירת נציג Dialogflow CX חדש
- כדי לשחזר את הסוכן שהורדתם מהמאגר ב-GitHub, צריך ליצור סוכן חדש. במסוף Dialogflow CX, לוחצים על יצירת נציג חדש בפינה הימנית העליונה של הדף.
- בוחרים באפשרות יצירת נציג משלכם.
- כדי ליצור את הנציג, ממלאים את הטופס עם הגדרות הנציג ולוחצים על Create.
- יש לבחור בשם המוצג:
Divebooker
- לבחירת מיקום:
us-central1
- צריך לבחור את אזור הזמן המועדף
- בחירה של
en - English
כשפת ברירת המחדל
- אפליקציית Dialogflow תפתח את הנציג באופן אוטומטי. עדיין לא סיימנו!
שחזור סוכן Divebooker
- אפשר לחזור לדף של רשימת הנציגים ולזהות את הנציג שיצרתם. לוחצים על האפשרות ואז על הלחצן Restore.
- בוחרים באפשרות Upload (העלאה) ואז משחררים או בוחרים את קובץ ה-ZIP שהורדתם בעבר ממאגר GitHub.
- לוחצים על הלחצן Restore כדי לייבא את הנציג שסופק
כל הכבוד! סיימת ליצור את הסוכן הווירטואלי להזמנת הצלילה, שמוכן לעזור ללקוחות שלך. בקטע הבא אפשר לבדוק אותו ולראות עד כמה הוא טוב במענה על שאלות של משתמשים ובסיוע בבקשות הזמנה.
4. בדיקת הנציג
Dialogflow הוא סימולטור מובנה כדי לשוחח עם הנציגים ולחשוף באגים. בכל פנייה, אתם יכולים לאמת את הערכים הנכונים של ה-Intent שמופעל, התגובה של הנציג, הדף הפעיל והפרמטרים של הסשן.
נבדוק כמה תרחישים, ובכל תרחיש נבדוק את הסיבה שבגללה הנציג נותן תשובה מסוימת. נתחיל עם הראשון.
Intent לא מפוענח
- במסוף Dialogflow ומתוך הנציג, לוחצים על Test Agent כדי לפתוח את הסימולטור.
- אפשר לכתוב הודעת פתיחה לנציג, למשל
Hello
, ולשאול אתwhat is a liveaboard?
. השאלה לא תואמת לכוונות כלשהן, הנחיה כללית כמו "סליחה, לא ברור לי איך לעזור" מוצגת. אתה יכול לבדוק שהאירוע המובנה sys.no-match-default הופעל על ידי בדיקת התגובה המקורית בסימולטור.
גוללים למטה כמעט עד לסוף תגובת ה-JSON. שימו לב שכשמחפשים כוונה תואמת, Dialogflow מוצא את המונח NO_MATCH ומחזיר אירוע שלא תואם לו.
- עוברים לכרטיסייה Build ופותחים את דף ההתחלה בתהליך של Liveaboards.
כברירת מחדל, כל זרימה כוללת גורמים מטפלים באירועים עבור האירועים המובנים של 'ללא התאמה' ו'ללא קלט'. הגורמים המטפלים באירועים האלו נוצרים באופן אוטומטי כאשר יוצרים זרימה, ולא ניתן למחוק אותם.
- לוחצים על הגורם המטפל באירועים sys.no-match-default וגוללים למטה אל הקטע תגובות מנציג. ב-Dialogflow יש רשימה של תשובות חלופיות, אבל אפשר גם להגדיר סוגים שונים של הודעות תשובה כדי לתת למשתמש הקצה לא רק תשובות בהודעת טקסט.
בואו נעבור עכשיו לנתיב השמח!
הנתיב השמח
במקרה השני, העמדת פנים של צולל שרוצה להזמין שייט של קבוצה של 12 אנשים לאיי גלפגוס בשנה הבאה, ביולי.
- בחלונית הסימולטור, לוחצים על סמל האיפוס כדי להתחיל שיחה חדשה עם הנציג.
- אומרים לסוכן שאתם רוצים להזמין אמנה לאיי גלפגוס ולספק את פרטי הנסיעה. אתם לא צריכים להשתמש בדיוק באותן ההנחיות שמופיעות בהמשך, כדאי לנסות.
- פותחים את דף ההתחלה ולוחצים על המסלול head.send.group.request. גוללים למטה לקטע מעבר שאומר ל-Dialogflow את הדף לעבור כשיש התאמה לכוונה הזו.
- סוגרים את ההגדרה מסלול ומרחיבים את הדף איסוף מידע נוסף. שימו לב למילוי ההזמנות ולרשימת הפרמטרים.
לכל דף ב-Dialogflow CX אפשר להגדיר טופס – רשימה של פרמטרים שצריך לאסוף ממשתמש הקצה בדף. לתשומת ליבכם: הסוכן לא ביקש את יעד הנסיעה כי העברנו אותו כחלק מהקלט הראשוני, וגם היעד הוא פרמטר של Intent. כשדף מתחיל להיות פעיל, ובמהלך תקופת הפעילות שלו, כל פרמטר טופס עם שם שזהה לפרמטר Intent מוגדר באופן אוטומטי לערך פרמטר הסשן, והמערכת מדלגת על ההנחיה המתאימה.
- עוברים לכרטיסייה ניהול ולוחצים על Intent מסוג head.send group request בקטע Intents. כדאי לעיין בביטויי האימון שניתנו לכוונה הזו, וגם בחלקים עם ההערות של ביטויי האימון.
- חשוב על ביטוי האימון "אני צריך לארגן טיול לקוסטה ריקה ל-15 צוללנים". "קוסטה ריקה" כולל הערות destination ו-'15' עם מספר אורחים. כשמוסיפים הערות לחלקים מביטוי אימון, Dialogflow מזהה שחלקים אלה הם רק דוגמאות לערכים ממשיים שיסופקו על ידי משתמשי קצה בזמן ריצה. זו הסיבה עבור הקלט הראשוני "האם אתם מציעים השכרת רכב לאיי גלפגוס?" Dialogflow חילץ את פרמטר היעד מ'איי גלפגוס'.
עכשיו נבדוק מה קורה אם אנחנו לא מספקים לסוכן קלט תקין כשמתבקשים למלא פרמטר של טופס.
קלט לא חוקי
- בחלונית הסימולטור, לוחצים על סמל האיפוס כדי להתחיל שיחה חדשה עם הנציג.
- חשוב לציין את הכוונה לבצע הזמנה קבוצתית. הפעם אל תמסרו לנציג לאן אתם רוצים לנסוע וכשתתבקשו לתת לו תשובה עם ערך אקראי שהוא לא קוסטה ריקה, גלפגוס או מקסיקו.
- בכרטיסייה ניהול, לוחצים על סוגי ישויות בקטע משאבים. שימו לב לשתי כרטיסיות: בכרטיסייה System מופיעות ישויות המערכת שבהן הנציג משתמש כרגע. בכרטיסייה בהתאמה אישית מוצגת רשימה של הישויות המותאמות אישית שנוצרו לצורך התאמה לנתונים שספציפיים לנציג הזה.
- לוחצים על הישות destination כדי לבדוק לאילו ערכים הישות תואמת. "אירופה" אינו אחד מהערכים וגם אינו מילה נרדפת.
- בתרשים הזרימה, מרחיבים את הדף איסוף מידע נוסף שמכיל את הפרמטרים של הטופס. לוחצים על הפרמטר destination.
- בחלונית הפרמטרים, גוללים למטה אל הקטע 'גורמים מטפלים באירועים של בקשה חוזרת', ואז לוחצים על הגורם המטפל באירועים ללא התאמה כברירת מחדל.
הגורם המטפל באירועים ברמת הפרמטר מיועד ספציפית לטיפול בקלט לא חוקי של משתמשי קצה במהלך מילוי טופס. כי 'אירופה' הוא קלט לא צפוי, הופעל אירוע sys.no-match-default, וה-handler התואם של ההפניה האוטומטית שהוגדר לאירוע הזה הופעל. בקטע הודעה מנציג/ת מפורטות שתי הודעות חלופיות לשליחת בקשות מחדש.
כל הכבוד! מקרי הבדיקה האלה מייצגים תרחישים נפוצים שהנציג אמור לטפל בהם כראוי. משתמשים שואלים לעיתים קרובות שאלות שבוטים לא יכולים לענות עליהן, או שהם שולחים בקשות שבוטים לא יכולים למלא. קשה מאוד לעצב 'זנב ארוך', כלומר, לצאת מהנתיבים השכיחים שרוב המשתמשים יעברו בהם. אפשר לחשוב על כל הדברים שעלולים להשתבש בשיחה, ועל כל הנתיבים הלא צפויים או הלא נתמכים שהמשתמשים עשויים לעבור.
טכנולוגיות מתקדמות בזיהוי דיבור אוטומטי (ASR) מאפשרות לנו כמעט תמיד לדעת מה המשתמשים אמרו. עם זאת, עדיין קשה לקבוע מה הייתה הכוונה של המשתמשים. לעיתים קרובות לא ניתן להבין ביטויים בנפרד; אפשר להבין אותם רק בהקשר. בחלק הבא של ה-codelab הזה נראה איך המודלים הגנרטיביים החדשים של Google לשפה גדולה (LLM) יכולים לעזור להחזיר את הדיאלוג ולהניע את השיחה קדימה.
5. הפעלת חלופה גנרטיבית
מהי תכונת החלופה הגנרטיבית?
תכונת הגיבוי הגנרטיבי היא תכונה של Dialogflow CX שמתבססת על מודלים גדולים של שפה (LLMs) של Google כדי ליצור תשובות מנציגים וירטואליים.
איך זה עוזר?
בין מקרי השימוש העיקריים יש כמה בקשות נפוצות של משתמשים, כמו חזרה על מה שהנציג אמר למקרה שהמשתמש לא הבין, החזקת הקו כשהמשתמש מבקש אותו וסיכום השיחה. בבדיקה הראשונה שעשינו, הנציג לא ענה על השאלה "מהו לוח פעיל?" כי לא יצרנו כוונה לכך, ותכננו את התהליך כך שיוכל להתמודד עם שאלות כלליות כאלה שקשורות לצלילה ולחיי גלים.
גם אם יש כוונות חזקות, עדיין יש מקום לטעויות. המשתמשים יכולים להפעיל את הסקריפט על ידי בחירה במצב שקט (שגיאה מסוג 'אין קלט') או באמירת משהו לא צפוי (שגיאת 'אין התאמה'). עדיף למנוע שגיאות מאשר לטפל בשגיאות אחרי שהן מתרחשות, אבל לא ניתן להימנע לגמרי משגיאות. הנחיות כלליות כמו "מצטערים, לא ברור לי איך לעזור" או פתרונות דומים שניתן ליישם, הם בדרך כלל לא טובים מספיק. הנחיות השגיאה צריכות להתבסס על העיקרון המשותף, שלפיו תקשורת יעילה מתבססת על ההנחה שיש שיתוף פעולה בין המשתתפים בשיחה.
בקטע הבא נבחן איך להגדיר את תכונת החלופה הגנרטיבית כדי להגדיל את הכיסוי של כוונות הרכישה ולפשט את הטיפול בשגיאות כדי לשפר את חוויית הלקוח.
הפעלת חלופה גנרטיבית לאירוע 'ללא התאמה' של כל התהליך
אפשר להפעיל חלופה גנרטיבית לגורמים שמטפלים באירועים ללא התאמה, שנעשה בהם שימוש בתהליכים, בדפים או במהלך מילוי הפרמטרים. כשמפעילים חלופה גנרטיבית לאירוע ללא התאמה, בכל פעם שהאירוע הזה מופעל, מערכת Dialogflow תנסה ליצור תשובה שתימסר חזרה למשתמש. אם לא הצלחתם ליצור את התשובה, התשובה של הנציג הקבוע מראש תונפק.
אפשר להפעיל חלופה גנרטיבית לנציג באמצעות גורמים מטפלים באירועים ללא התאמה, ולהשתמש בהם בתהליך מילוי ההזמנות, מילוי הדף או הפרמטרים.
נתחיל להפעיל חלופה גנרטיבית לכל התהליך של Liveaboards שלא תואם כברירת מחדל.
- מרחיבים את דף ההתחלה של התהליך.
- לוחצים על sys.no-match-default בקטע גורמים מטפלים באירועים.
- מסמנים את האפשרות הפעלת חלופה גנרטיבית בקטע תשובות של נציגים ולוחצים על שמירה.
הפעלת חלופה גנרטיבית לאירועים ספציפיים ללא התאמה
עכשיו אנחנו רוצים להפעיל חלופה גנרטיבית לטיפול בנתונים לא חוקיים כשהנציג מבקש את מספר הנוסעים:
- פותחים את הדף איסוף מידע נוסף שמכיל את הפרמטרים של הטופס. לוחצים על הפרמטר number-of-guests.
- עוברים אל הגורם המטפל באירועים של היעד No-match (גוללים למטה אל הקטע Reprompt event handlers ולאחר מכן לוחצים על No- match default)
- מסמנים את האפשרות הפעלת חלופה גנרטיבית בקטע תשובות מנציג
- בסיום, לוחצים על שמירה
- עכשיו חוזרים על השלבים המדויקים כדי להפעיל חלופה גנרטיבית ליעד ולכתובת אימייל.
כל הכבוד! הפעלת חלופה גנרטיבית לטיפול בכוונות לא צפויות ובערכי פרמטרים לא חוקיים. בשלב הבא נראה איך להגדיר את תכונת החלופה הגנרטיבית באמצעות הנחיית טקסט, שמסבירה איך להגיב ל-LLM.
6. הגדרת חלופה גנרטיבית
תכונת החלופה הגנרטיבית מעבירה בקשה למודל שפה גדול (LLM) כדי ליצור את התשובה שנוצרה. הבקשה מוצגת בצורת הנחיית טקסט שמורכבת משילוב של שפה טבעית ומידע על המצב הנוכחי של הנציג ושל השיחה. אפשר להגדיר את התכונה בכמה דרכים:
- צריך לבחור הנחיה ספציפית (כבר מוגדרת) שתשמש ליצירת תשובות.
- הגדרת הנחיה בהתאמה אישית.
בחירת הנחיה שכבר הוגדרה
- במסוף Dialogflow CX, לוחצים על Agent Settings.
- עוברים לכרטיסייה ML ואז לכרטיסיית המשנה AI גנרטיבי.
התכונה יוצאת מהתיבה עם שתי הנחיות לתבנית, התבנית ברירת המחדל (שלא גלויה) והתבנית דוגמה שמנחה אתכם לכתוב הנחיות משלכם.
- בוחרים בתבנית דוגמה ולוחצים על הלחצן עריכה בצד שמאל של התפריט הנפתח כדי לבדוק אותה.
בעזרת ההנחיה המוגדרת מראש, הנציג הווירטואלי יכול להתמודד עם מצבי שיחה בסיסיים. לדוגמה:
- הצגת שלום למשתמש ולהתראות שלו.
- אפשר לחזור על מה שהנציג אמר למקרה שהמשתמש לא יבין.
- לוחצים לחיצה ארוכה על השורה כשהמשתמש מבקש אותה.
- סיכום השיחה.
ננסה להגדיר הנחיית טקסט ספציפית לסוכן 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 לומד בהקשר מהדוגמאות לגבי הדרכים להגיב.
כשיוצרים הנחיה, בנוסף לתיאור של סוג ההקשר שיש ליצור בשפה טבעית, אפשר להשתמש גם ב-placeholders הבאים:
$conversation
השיחה בין הנציג לבין המשתמש, לא כולל צורת ההתבטאות האחרונה של המשתמש. אפשר לשנות את תחיליות הפנייה (למשל: "Human", "AI" או 'את/ה', 'סוכן/ת') בהודעת הטקסט$last-user-utterance
הביטוי האחרון של המשתמש.$flow-description
תיאור הזרימה של הזרימה הפעילה.$route-descriptions
התיאורים של Intent של ה-Intent הפעילים.
עכשיו, אחרי שיש לנו הנחיית טקסט ראשונית, המשימה הבאה היא לוודא שהזרימה והכוונות כוללות תיאורים טובים.
8. הוספת תיאורים של זרימה וכוונות
הוספת תיאור הזרימה
- כדי להוסיף תיאור לתהליך של Liveaboards, אפשר לגשת להגדרות התהליך על-ידי העברת העכבר מעל הזרימה בקטע זרימה.
- לוחצים על לחצן האפשרויות.
- בוחרים באפשרות הגדרות זרימה ומוסיפים את התיאור הבא (או תיאור דומה):
search, find and book liveaboards
.
- לוחצים על שמירה.
צריך להוסיף את תיאור Intent
- עכשיו נוסיף תיאור טוב ל-Intent head.send.group.request. עוברים לכרטיסייה Manage (ניהול), בוחרים באפשרות 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
לתשומת ליבכם: התיאור כולל מידע חשוב, כמו מספר הנוסעים המינימלי והמקסימלי המותר בספינה. כדאי לזכור את זה!
- לוחצים על שמירה.
וזהו, סיימת! הפעלת חלופה גנרטיבית לגורמים שמטפלים באירועים ללא התאמה, גם למילוי הזמנות וגם למילוי הזמנות של פרמטרים. הגדרתם גם הנחיה משלכם לטקסט, שתכונת החלופה הגנרטיבית מעבירה למודל שפה גדול (LLM) כדי ליצור תשובות גנרטיביות.
בקטע הבא תבדקו מחדש את הנציג כדי לראות איך הוא יכול לענות על אותן שאלות מאתגרות הקודמות.
9. איך בודקים מחדש את הנציג
עכשיו, אחרי שהגדרתם והפעלתם את החלופה הגנרטיבית לסוכן הווירטואלי, אתם יכולים לשאול שאלות מאתגרות דומות ולראות איך הוא מטפל בתשובות.
לוחצים על סוכן בדיקה כדי לפתוח אותו שוב.
אפשר לשאול שוב את הנציג לגבי קייטבורדים וצלילה עם שידורים חיים. מעכשיו תצטרכו לשים לב איך כל תיבת דו-שיח מכילה הודעות שהוגדרו על ידי המשתמש, וגם תשובות שנוצרות ומודגשות בתיבות האדומות.
האם קיבלת תשובה מעניינת ולא הנחיה כללית? נהדר! אחרי שתקבלו תיאור ברור ותמציתי של המשימות שאתם רוצים שהנציג יבצע (בשורת הטקסט ובתיאור התהליך), מעכשיו הבוט הרבה יותר חכם לענות על שאלות מפורטות בלי ליצור כוונות ספציפיות. הלקוח יעריך את כך שהנציג יוכל לתת לו תשובה מושכלת יותר במקום תגובה שאינה ניתנת לביצוע.
אל תתביישו ואתגרו את הנציג. כדאי לשאול אם הוא יכול לעזור לכם למצוא קורס צלילה כי אתם עדיין לא צוללים עם הסמכה.
נכון, כרגע לא תכננו את הסוכן שיוכל לעזור בקורסי צלילה. איך הנציג יודע את זה? בהודעת הטקסט, פירטנו בבירור במה הנציג יכול לעזור ומה הוא לא יכול לעזור. "בשלב הזה אנחנו לא יכולים לעזור ללקוחות בקורסים ובשיעורי צלילה. אי אפשר להמליץ על חנויות צלילה ואתרי צלילה מקומיים"
עכשיו נסחו מחדש את התרחיש המשמח והעשירו את השיחה. בואו נראה איך החוויה השתנתה.
כש-Dialogflow תואם לכוונה או מנסה לאסוף פרמטר בהתאם לעיצוב הזרימה, היא תציג את הגשות המשימות שהוגדרו בזמן התכנון. כשהמשתמש משבית את הסקריפט שבו מבקשים סיכום של פרטי הנסיעה או מציע לספק את מספר הטלפון שלו, התכונה הגנרטיבית לגיבוי נכנסת לתמונה.
איזה יופי! בדקת מחדש את התרחיש המשמח ואני מקווה שהייתה לך שיחה נעימה וטבעית עם הנציג קרוב ככל האפשר לחוויה שהייתה לך עם נציג אנושי.
לצערנו, דברים עשויים להשתבש בשיחה. נבצע בדיקה אחרת: הפעם כשמופיעה בקשה לציין את מספר האורחים, צריך להזין מספר גדול מ-15.
חשוב לציין כמה נקודות:
- למה 20 הוא לא מספר תקין? בגלל שקבענו מגבלה על מספר האורחים שמותר להציג כחלק מתיאור הכוונה: "הנציג אוסף מידע כמו תקופת יציאה, יעד, מספר אורחים***(לפחות 4 אנשים של 15)*** *, פרטים ליצירת קשר*" הקצר הזה. התשובות שלך יעזרו לנו להשתפר. התשובה שנוצרה על ידי LLM החזירה "מצטערים, אנחנו יכולים לעזור רק בהזמנות קבוצתיות של עד 15 אורחים". תואמת לחלוטין להגבלות שהטלנו על מספר האורחים. כדי לאכוף את הדרישה הזו, מספר האורחים הוא ישות מותאמת אישית של ביטויים רגולריים (regex) שתואמת רק למספרים שנכללים בטווח 4 עד 15.
- השיחה נמשכת כי בסופו של דבר המשתמש עדיין רוצה לקבל הצעה ל-15 צוללנים. זה קורה לעיתים קרובות בשיחות טבעיות, ואנחנו משנים את נפשנו לעיתים קרובות! שימו לב איך הנציג משתף פעולה והוא מפנה את המשתמש בעדינות בחזרה לעבר הנתיב המוצלח.
עיצוב שיחה כולל תסריט לחצי של תיבת דו-שיח, בתקווה שהיא תהיה חזקה מספיק כך שכולם יוכלו להיכנס ולממש את המחצית השנייה. כשמתכננים את הזנב הארוך, מפתחים צריכים להתמקד במה שהמשתמש יכול לומר בכל שלב בתיבת הדו-שיח כדי להגדיר את המסלולים, ה-handler והפרמטרים. לכן הוספנו ל-Dialogflow CX את תכונת החלופה הגנרטיבית ל-Dialogflow CX: כדי לאפשר למפתחים להתמקד בעקרונות לעיצוב שיחות ופחות בפרטי ההטמעה, כדי לספק למשתמשים חוויית שיחה עוצמתית.
בואו נערוך בדיקה נוספת והפעם נאתגר את הבוט שוב עם מקום שלא מופיע ברשימת היעדים הזמינים, כמו האיים המלדיביים. לאחר מכן נציץ במה שקורה מאחורי הקלעים.
לתשומת ליבכם: מכיוון שהפעלנו גם חלופה גנרטיבית לאירוע no-match
עבור הפרמטר destination, נשלחת בקשה למודל שפה גדול (LLM) כדי ליצור את התשובה שנוצרה. המערכת מתעלמת מהתשובות הרגילות שנרשמו מראש (בקטע 'נציג נציג').
תיבות הטקסט הבאות יעזרו לך להבין טוב יותר איך ה-placeholders עוזרים לעצב את הבקשה שנשלחת למודל השפה הגדול (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) ואת הפלט שמכיל את התגובה שנוצרה, תימסר בחזרה למשתמש:
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.
בדומה לבדיקה שנערכה בעבר, התגובה שנשלחת למשתמש בחזרה נוצרת על ידי המודל ומסתמכת על המידע שסיפקנו כחלק מתיאור הכוונה: "היעד חייב להיות אחד מהיעדים הבאים באזור האוקיינוס השקט: קוסטה ריקה, מקסיקו, איי גלפגוס"
עריכת רשימת הביטויים החסומים
יש כמה דרכים להגדיר את תכונת החלופה הגנרטיבית:
- צריך לבחור הנחיה ספציפית (כבר מוגדרת) שתשמש ליצירת תשובות.
- הגדרת הנחיה בהתאמה אישית.
- לשנות את רשימת הביטויים החסומים.
עד עכשיו בדקנו את שתי הדרכים הראשונות. בואו נראה את השלישיה.
- בקטע Agent Settings (הגדרות סוכן), עוברים לכרטיסייה ML ואז לכרטיסיית המשנה AI גנרטיבי.
- בקטע ביטויים חסומים מוסיפים לרשימה את המשפטים הבאים:
Dangerous country
Hateful place
Medical assistance
- לוחצים על שמירה.
- לוחצים על הסמל איפוס ובודקים מחדש את התרחיש האחרון. במקום לספק יעד צלילה יפהפה ברחבי העולם, יש להזין אחד מהביטויים האסורים.
ההנחיה והתשובה שנוצרה נבדקות מול רשימת הביטויים החסומים. ביטויים חסומים הם ביטויים שאסורים לשימוש ב-AI גנרטיבי. אם הקלט כולל ביטויים אסורים או ביטויים שנחשבים לא בטוחים, היצירה תיכשל, ובמקום זאת תונפק התגובה הרגילה שהוגדרה (לפי הנציג שאומר באותו מילוי).
דברים מצוינים! ריכזנו מגוון מצבים של שיחות שבהם תגובות גנרטיביות יכולות באמת לעשות את כל ההבדל. אפשר להמשיך להתנסות!
10. מזל טוב
כל הכבוד על השלמת ה-Codelab! הגיע הזמן להירגע!
יצרת סוכן וירטואלי והפעלת חלופה גנרטיבית ל-no-match
גורמים מטפלים באירועים שנמצאים בתהליכים ובמהלך מילוי הפרמטרים.
התכונה של החלופה הגנרטיבית, בשילוב עם תיאורים טובים של זרימה וכוונת רכישה, יכולים לתת תשובות ספציפיות ושיתופי פעולה עבור הנציג, בניגוד להנחיות כלליות כמו "סליחה, לא ברור לי איך לעזור". או "מצטערים, הזנת אפשרות לא חוקית". הנחיות שגיאה שנוצרו על ידי מודלים גדולים של שפה יכולות לכוון את המשתמשים בעדינות חזרה לנתיבים אפשריים, או לאפס את הציפיות שלהם לגבי מה שאפשר ומה שאי אפשר לעשות.
אתם יכולים להתנסות בשיחות אחרות ולראות את הפונקציות הנוספות שזמינות ל-Dialogflow CX ול-AI גנרטיבי.
הסרת המשאבים
אפשר לבצע את ניקוי הניקוי הבא כדי להימנע מצבירת חיובים בחשבון Google Cloud עבור המשאבים שבהם נעשה שימוש ב-Codelab הזה:
- נכנסים למסוף Dialogflow CX ומוחקים את כל הנציגים שיצרתם.
- במסוף Google Cloud, נכנסים לדף APIs and Services ומשביתים את Dialogflow API.
קריאה נוספת
במדריכים ובמקורות המידע האלה תוכלו להמשיך ללמוד על AI בממשק שיחה ו-AI גנרטיבי:
- מסמכי תיעוד ל-Dialogflow CX
- מסמכים בנושא חלופה גנרטיבית
- AI גנרטיבי ב-Google Cloud
- מבוא ל-PaLM
רישיון
היצירה הזו בשימוש ברישיון Creative Commons Attribution 2.0 גנרי.