במסמך הזה מפורטת סקירה כללית של המושגים העיקריים ב-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.