קונטקסט בשיחה – מודל 3 השכבות

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

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

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

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

בעיית הקונטקסט בתכנות בוטים

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

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

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

3 שכבות של קונטקסט

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

  • קונטקסט נקודתי 
  • קונטקסט אזורי
  • קונטקסט מצטבר

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

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

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

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

דוגמא לקונטקסט נצבר

נניח שהלקוח שואל "האם יש במלון בריכה?". היות שבמלון הראשון שלנו (מלון A) יש אפילו שתי בריכות, הבוט יענה בפשטות "יש שתי בריכות במלון, אחת למבוגרים, אחת לילדים".

אבל אם הלקוח ישאל "האם יש במלון בריכה?" על המלון השני שיוצע לו, שבו אין בריכה (מלון B), במקרה כזה הבוט ישיב "לא, במלון B  אין בריכה, אבל במלון A  יש שתי בריכות, אחת למבוגרים, אחת לילדים". כלומר יצרתי כלל:

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

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

דוגמא נוספת

נניח שהלקוח שואל "כמה חדרים יש במלון", לכאורה התשובה תמיד תהיה זהה – "230 חדרים". אבל אם הלקוח התעניין קודם לגבי בריכה, הבוט ישיב "230 חדרים, מתוכם 105 עם נוף לבריכה". ואם הלקוח התעניין קודם בסוויטות, הבוט ישיב "230 חדרים, מתוכם 24 סוויטות". מדוע המצאתי את הכלל הזה? כי זה מה שהיה עושה אדם סביר תוך כדי שיחה – קושר את התשובה שלו לקונטקסט הרחב הנכון.

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

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

האימייל לא יוצג באתר. שדות החובה מסומנים *

*
*