ניהול דיאלוג עבור בוט AI: תכנון והטמעה

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

תחומי פיתוח AI

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית ווב עבור FEEDME
    פיתוח אפליקציית ווב עבור FEEDME
    1365
  • פיתוח חנות מקוונת לחברת FURNORO
    פיתוח חנות מקוונת לחברת FURNORO
    1330
  • עיצוב לוגו לחברת B2B Advance
    עיצוב לוגו לחברת B2B Advance
    776
  • פיתוח אפליקציית ווב עבור Enviok
    פיתוח אפליקציית ווב עבור Enviok
    1077
  • פיתוח לוגו חברת AIDER
    פיתוח לוגו חברת AIDER
    1022
  • פיתוח CRM עבור Chasseurs
    פיתוח CRM עבור Chasseurs
    1113

מדוע ניהול דיאלוג מתפרק בתרחישים אמיתיים

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

שלבי ההטמעה: מביקורת תרחישים ועד מסירה לתפעול

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

סדר העבודות

  1. ביקורת תרחישים ופניות נוכחיות — מייצאים את היסטוריית הדיאלוגים, סופרים את שיעור הקטיעות בכל צעד ואת הנושאים שהכי часто עוברים לנציג. התוצר — מפה של מעברים בעייתיים.
  2. תיוג כוונות — אוספים קורפוס של ביטויים אמיתיים, מסמנים כוונות, סלוטים, כשלים, שאלות מחוץ לתרחיש ושגיאות כתיב. תיוג מוסכם הופך לאמת מידה לבדיקה.
  3. תכנון תרשים הדיאלוג — גרף מצבים, הבהרות חובה, כללי שאלות חוזרות, הסלמה לנציג וענפים חלופיים. את התרשים מקבעים לפני הכיוונון.
  4. כיוונון ובנייה — כללי מעברים, ניסוחי תגובות, ספי ביטחון, הגבלת אורך הדיאלוג. כל מה שמשתנה בלי לשכתב קוד מוציאים לקונפיגורציה.
  5. בדיקת הבוט — הרצה של התיוג כאמת מידה, דיאלוגים "בעיוורון" בידי מהנדסים, בדיקת כשלים וענפים ללא מוצא. תופסים שגיאות לפני ההשקה בפועל.
  6. בדיקה על תעבורה אמיתית — הפעלה על חלק מהפניות בעבודה מקבילה של נציג. בוחנים את שיעור הדיאלוגים שנסגרו בלי אדם ואת מספר השאלות החוזרות.
  7. העלאה לתפעול ומסירה — תרשים הדיאלוג, תקנון לתיקון תרחישים, לוחות ניטור והדרכת הצוות שלכם. בהמשך תכניסו שינויים בעצמכם.

מארז האספקה: קונפיגורציות, תרשימי דיאלוגים ותקנונים

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

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

מקרה בוחן: פחות העברות לנציג ותשובות יציבות בשיאי עומס

מה היה

הבוט נבנה עבור תרחיש אחד וניתח את התגובה לפי מילות מפתח וביטויים רגולריים — לניסוח מחדש "ומה если אני רוצה להחזיר" הוא ענה בענף הלא נכון. ההקשר חי בתוך צעד אחד: סלוטים שנאמרו בתחילת השיחה אבדו עד התגובה השלישית, והבוט שאל שוב את מספר ההזמנה.

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

מה שינינו

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

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

מה נהיה

שיעור התשובות העצמאיות עלה ל-79%, ההמתנה בשיא הצטמצמה ל-40 שניות, ומספר ההעברות לנציג ירד בחצי בזמן שהתעבורה גדלה. כל צעד נכתב ליומן יחד עם הכוונה והביטחון, ומערך הפניות האמיתיות הפך למבחן רגרסיה: לפני העלאה רואים אילו תרחישים נסוגו והיכן סף הביטחון פועל מאוחר מדי.

במה ניהול דיאלוג שונה מתרחיש של בוט

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

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

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

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

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

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

ספקות טכניים: הקשר, הרשאות, ביטול שינויים

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

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

עד כמה עמוק הבוט זוכר את הדיאלוג?

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

כיצד הבוט מקבל גישה למערכות פנימיות?

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

מה לעשות אם גרסה חדשה של התרחיש תפעל גרוע יותר?

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

כיצד מטופלים נתונים אישיים?

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

נדון במשימה ונחזור עם הערכה ותכנית עבודה

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

  • תרחישים: מה הבוט סוגר בעצמו והיכן הוא חייב להעביר את הדיאלוג לנציג.
  • פניות אמיתיות: 30–50 דיאלוגים מהערוץ הנוכחי של התמיכה בצורתם המקורית — מהם רואים ניסוחים חיים, ולא מומצאים.
  • מערכות מקור: CRM, מאגר ידע, מערכת חישובים, תורים — מה נגיש באופן פרוגרמטי ומה יהיה צריך למסור בייצוא.
  • כללי הסלמה: באיזה רגע ולמי עובר הדיאלוג, מה הנציג רואה בכרטיס.
  • ערוצים ומגבלות: מסרים מיידיים, צ'אט באתר, קול; דרישות למהירות התגובה ולמהימנות הנתונים.
  • קריטריוני הצלחה: שיעור הדיאלוגים שנסגרו בלי אדם, מספר שאלות ההבהרה לדיאלוג, שיעור השגיאות בתשובות.

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

תארו את המשימה — נחזור עם הערכה ותכנית עבודה.