בניית מודלים של שיחות

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

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

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

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

הגדרת בקשות חוקיות ממשתמשים

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

יצירת כוונות משתמשים

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

איור 1. דוגמה ל-Intent של משתמש

כדי ליצור Intent של משתמש:

  1. בכרטיסייה פיתוח, לוחצים על כוונות משתמשים > &מעגלPlus; (Intent חדש), מציינים שם ומקישים על Enter כדי ליצור את ה-Intent.
  2. בתפריט הימני, לוחצים על ה-Intent החדש שיצרתם. מופיע עורך ה-Intent.
  3. יש להוסיף ביטויי אימון ל-Intent. כדאי להוסיף כמה שיותר ביטויי אימון כדי לאמן את Assistant NLU.
  4. אופציונלי: מוסיפים הערות לביטויי אימון כדי להנחות את ה-NLU של Assistant לנתח ולחלץ פרמטרים מוקלדים מקלט של משתמש שתואמים לסוג מסוים:
    1. מזינים שם לפרמטר בשדה הוספת פרמטר חדש.
    2. בוחרים סוג מערכת מהתפריט הנפתח או יוצרים סוג בהתאמה אישית.
    3. מציינים אם הפרמטר הוא רשימה. כך הפרמטר יכול לאסוף ערכים מרובים מאותו סוג.
    4. בקטע הוספת ביטויים לאימון, מדגישים את הטקסט שרוצים להחיל עליו את הסוג. כך הוא מורה ל-Assistant NLU להתייחס לטקסט המודגש כפרמטר. אם משתמשים אומרים משהו שתואם לסוג, ה-NLU מחלץ את הערך הזה כפרמטר.

יצירת אובייקטים מסוג Intent של המערכת

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

  1. בכרטיסייה פיתוח, לוחצים על כוונות המערכת. יש קבוצה של אובייקטים מסוג Intent, כמו NO_MATCH, NO_INPUT ו-CANCEL.
  2. לכל Intent של מערכת יש רכיבי handler משלו, שאפשר להתאים אישית לכל סוג של Intent של המערכת. לדוגמה, מנגנוני Intent של המערכת מאפשרים להפעיל אירועי תגובה לפעולה מאתר אחר (webhook) ולשלוח הנחיות סטטיות כשהאירוע מתרחש.

יצירת סוגים בהתאמה אישית

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

איור 2. דוגמה לסוג בהתאמה אישית

כך יוצרים סוג בהתאמה אישית:

  1. בכרטיסייה פיתוח, לוחצים על סוגים > ⊕ (סוג חדש).
  2. בקטע What type of value with this type support (מה סוג הערכים בתמיכה בסוג הזה), בוחרים איך להזין את ערכי הסוג:

    • מילים ומילים נרדפות מאפשרות למפות ערכים מרובים למפתח יחיד, שנקרא ערך. הסוג יכול להכיל רשומה אחת או כמה רשומות. אם תבחרו באפשרות הזו, תוכלו להפעיל גם את ההגדרות הבאות של ה-NLU:
      • הפעלת התאמה מטושטשת – מאפשרת התאמה של ערכים שכוללים יותר ממילה אחת, גם אם המילים מוקראות בסדר שונה.
      • אישור ערכים לא ידועים – אם אי אפשר לציין את כל הערכים האפשריים, יתקבלו מילים או ביטויים לא ידועים על סמך הקלט מסביב ונתוני האימון של כוונת הרכישה, למשל פריטים שעשויים להתווסף לרשימת מכולת.
    • באמצעות ביטויים רגולריים ניתן להגדיר התאמה לסוג לפי תבניות של ביטויים רגולריים על סמך תקן RE2 של Google.
    • טקסט חופשי מאפשר לסוג להתאים לכל דבר שהמשתמש אומר.
  3. מציינים ערכי סוג בקטע הוספת ערכים. אם בחרתם באפשרות Free form text, הסוג יתאים לטקסט כלשהו, כך שלא תצטרכו להזין רשומות.

לוגיקה ותגובות של בניית פעולות

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

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

יצירת סצנה

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

כדי ליצור סצנה:

  1. בכרטיסייה פיתוח, לוחצים על Scenes > ⊕ (הסצנה החדשה), מציינים שם ומקישים על Enter כדי ליצור סצנה.
  2. בתפריט הימני, לוחצים על הסצנה החדשה שיצרתם. יופיע עורך סצנות.

הגדרת הגדרה חד-פעמית

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

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

    • Call your webhook – הפעלת תגובה לפעולה מאתר אחר (webhook). למידע נוסף על תגובות לפעולה מאתר אחר (webhook), עיינו במסמכי התיעוד בנושא webhook.
    • שליחת הנחיות – אפשר לציין הנחיות סטטיות למשתמשים כדי שהם ידעו איך להמשיך בשיחה. במסמכי התיעוד בנושא הנחיות תוכלו לקרוא מידע נוסף על הנחיות ספציפיות.
    איור 4. דוגמה לסצנה נכנסת לבמה

בדיקת התנאים

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

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

    • Condition – מציינים את ההצהרה המותנית בפועל שממנה הלוגיקה תתבסס. למידע על התחביר, עיינו במסמכי התיעוד בנושא conditions.
    • Call your webhook – הפעלת תגובה לפעולה מאתר אחר (webhook). למידע נוסף על תגובות לפעולה מאתר אחר (webhook), עיינו במסמכי התיעוד בנושא webhook.
    • שליחת הנחיות – ההגדרה הזו מציינת בקשות סטטיות למשתמשים כדי שהם ידעו איך להמשיך בשיחה. במסמכי התיעוד בנושא הנחיות תוכלו לקרוא מידע נוסף על הנחיות ספציפיות.
    • Migrate – מציין את הסצנה שאליה רוצים לעבור כאשר ההצהרה המותנה מתקיימת.
איור 5. דוגמה לשלב התנאים של סצנה

הגדרה של מילוי יחידות קיבולת (Slot)

יחידות קיבולת (Slots) מאפשרות לחלץ פרמטרים מוקלדים מקלט של משתמשים.

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

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

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

כדי להגדיר יחידת קיבולת (Slot), צריך לספק מאפיינים באובייקט JSON במילוי הבקשה (עם הפניה כפרמטר של הסשן) או בעורך JSON המוטבע. אפשר למצוא את המאפיינים הזמינים לכל סוג של יחידת קיבולת (Slot) בחומר העזר בנושא Actions Builder JSON. לדוגמה, סוג המשבצת actions.type.DeliveryAddressValue תואם לתוכן העזר של יחידת הקיבולת (Slot) DeliveryAddressValue.

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

מיפוי של ערכי יחידות קיבולת (Slot)

במקרים רבים, התאמה קודמת של Intent יכולה לכלול פרמטרים שממלאים באופן חלקי או מלא ערכי משבצת של סצנה תואמת. במקרים כאלה, כל יחידות הקיבולת (Slot) שמולאו בפרמטרים של Intent ממופות למילוי יחידת הקיבולת (Slot) בסצנה, אם השם של יחידת הקיבולת (Slot) תואם לשם של פרמטר Intent.

לדוגמה, אם משתמש עונה על כוונה להזמין משקה על ידי אמירת "I want to order a large vanilla coffee", מיקומים קיימים לציון גודל, טעם וסוג משקה ימלאו בסצנה המתאימה אם הסצנה מגדירה אותן משבצות.

עיבוד הקלט

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

  1. בתוך סצנה, לוחצים על הסמל + לשלב הטיפול ב-Intent של המשתמש או לשלב הטיפול ב-Intent של המערכת. העורך של ה-handler של ה-Intent מופיע בצד שמאל. תוכלו לציין את הפונקציונליות הבאה של ה-handler של ה-Intent:

    • כוונה – הנתון הזה מציין את הכוונה שאתם רוצים להתאים בסצנה הזו.
    • Call your webhook – הפעלת תגובה לפעולה מאתר אחר (webhook). למידע נוסף על האופן שבו ניתן לטפל בבקשת webhook, אפשר לעיין במסמכי התיעוד בנושא webhook.
    • שליחת הנחיות – מציינים הנחיות סטטיות למשתמשים, כדי שהם יידעו איך לענות. במאמרי העזרה בנושא הנחיות תוכלו לקרוא מידע נוסף על הגדרת הנחיות.
    • מעבר (אם רלוונטי) – ציון הסצנה שאליה יתבצע המעבר כאשר Intent שצוין תואם.
איור 7. דוגמה ל-handler של משתמש Intent בסצנה
איור 8. דוגמה ל-handler של Intent במערכת של סצנה