מושגים שקשורים לסוכן AI להזמנה ממסעדות

במסמך הזה מפורטת סקירה כללית של המושגים העיקריים ב-API של סוכן ה-AI להזמנה ממסעדה.

הגדרת הסוכן

ההתנהגות של סוכן ה-AI להזמנה ממסעדה מושפעת מההגדרות של כמה משאבי API: ‏ Brand,‏ Store ו-Menu. המשאבים האלה מגדירים את הזהות של המסעדה, את המיקומים הפיזיים שלה ואת המוצרים שהיא מציעה, ומספקים את ההקשר הדרוש לסוכן ה-AI כדי לטפל בהזמנות.

מותג

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

חנות

משאב Store מייצג מיקום פיזי יחיד של מסעדה ששייכת לBrand. הוא מגדיר את ההגדרות הספציפיות למיקום, כמו אזור הזמן, הסטטוס (למשל, ACTIVE, DISABLED), שעות הפעילות וחלקי היום (למשל, תקופות כמו 'ארוחת בוקר' או 'ארוחת צהריים' שבמהלכן פריטים מסוימים בתפריט זמינים).

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

הרכיבים העיקריים של Menu הם:

  • פריטים: מוצרים מובילים שאפשר למכור, כמו מנות עיקריות, משקאות, תוספות או ארוחות משולבות.
  • ModifierGroups: אוספים של אפשרויות שרלוונטיות ל-Item או ל-Modifier אחר, כמו 'בחירת תוספת' או 'הוספת תוספות'.
  • אפשרויות: אפשרויות ספציפיות בתוך ModifierGroup, כמו 'צ'יפס', 'גבינה נוספת' או 'קולה'. המשנים יכולים לשנות את מחיר הפריט ויכולים להכיל ModifierGroups מקוננים להתאמה אישית נוספת.
  • MenuCategories: יחידות ארגוניות כמו 'מנות ראשונות' או 'משקאות'.

משאב Menu מזוהה לפי שם בפורמט הבא: projects/{project}/locations/{location}/menus/{menu}.

פרטים נוספים על מבנה נתוני התפריט זמינים במאמר שילוב נתוני תפריט.

סשנים של הזמנת אוכל

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

שיטת RPC‏ BidiProcessOrder

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

  • הזרמת נתונים מלקוח לסוכן: הלקוח שולח זרם של הודעות BidiProcessOrderRequest שמכילות קלט אודיו (דיבור של הלקוח), קלט טקסט או קלט של אירועים (למשל, עדכון של עגלת קניות מצד הלקוח שבוצע על ידי לקוח באמצעות ממשק הקשה, או אירוע של נסיעה מהירה שזוהה על ידי חומרה של מסעדה עם שירות מהיר).
  • Agent-to-Client Stream: הסוכן מחזיר זרם של הודעות BidiProcessOrderResponse שמכילות פלט אודיו (דיבור מסונתז של הסוכן), פלט טקסט, תמלילים של דיבור מזוהה, עדכונים של מצב ההזמנה של הלקוח או אותות אחרים כמו הפרעות שזוהו.

‫ProcessOrder RPC ו-REST method

ProcessOrder היא שיטה בינארית של בקשה ותגובה, שנועדה לשילובים של הזמנת אוכל מבוססת-טקסט, שלב אחר שלב (כמו ווידג'טים של צ'אט, טפסים באינטרנט ולקוחות REST). אפשר לגשת אליו באמצעות gRPC ו-REST ‏ (POST /v1/{config.session=projects/*/locations/*/sessions/*}:processOrder).

בשונה מ-BidiProcessOrder,‏ ProcessOrder פועל על תחלופת בקשות ותשובות נפרדות, והוא מבוסס על טקסט בלבד:

  • דרישת מצב: צריך להגדיר את config.mode באופן מפורש לערך TEXT (או 2 ב-JSON).
  • Turn Lifecycle: turn_type צריך להיות מוגדר ל-INITIALIZE בתור הראשון כדי להחדיר משתני סשן (כמו תפריט ומטא-נתונים של חנות), ול-SUBSEQUENT בתורים הבאים.

מחזור החיים של סשן

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

  • store: השם המלא של משאב Store שעבורו מתבצעת ההזמנה (לדוגמה, projects/PROJECT/locations/LOCATION/brands/BRAND/stores/STORE). הסשן מקבל את ההגדרה שצוינה במשאב Store שאליו יש הפניה ובמשאב ההורה Brand של החנות. אם יש סתירה בין ההגדרות של Brand ושל Store, ההגדרות של Store מקבלות עדיפות.
  • session: מזהה סשן ייחודי בפורמט projects/PROJECT/locations/LOCATION/sessions/SESSION. ‫session_id הוא מזהה שנוצר על ידי הלקוח ומזהה באופן ייחודי אינטראקציה או שיחה עם לקוח.
  • mode: מצב השיחה (HYBRID או TEXT). ב-BidiProcessOrder, הפרמטר mode הוא אופציונלי וברירת המחדל שלו היא HYBRID (קול וטקסט). עבור ProcessOrder (unary / REST), ‏ mode חייב להיות מוגדר במפורש כ-TEXT.