本文將簡要介紹訂餐 AI 代理 API 的重要概念。
代理程式設定
訂餐 AI 代理的行為會受到多個 API 資源的設定影響:Brand、Store 和 Menu。這些資源定義了餐廳的身分、實體位置和提供的產品,為 AI 代理程式處理訂單提供必要的情境資訊。
品牌
Brand 是頂層資源,代表與一或多個餐廳品牌地點對應的餐廳品牌。其中包含餐廳所有地點共用的設定。Brand 可包含許多代理程式角色功能的設定,例如問候行為和語音特徵。其中許多功能可由商店資源中設定的值覆寫,甚至可由每個工作階段的設定覆寫 (請參閱「工作階段生命週期」)。
儲存
Store 資源代表屬於 Brand 的單一實體餐廳位置。定義該地點專屬的設定,例如時區、狀態 (例如 ACTIVE、DISABLED)、營業時間和時段 (例如「早餐」或「午餐」等時段,提供特定菜單項目)。
選單
Menu 資源會定義餐廳提供的所有產品,包括每個可銷售產品的所有可能選項和自訂項目。Menu 必須與 Store 建立關聯。菜單設計彈性十足,可容納各種菜單結構,從獨立品項的小清單,到包含巢狀修飾符的套餐複雜樹狀結構,都能輕鬆應付。
Menu 的主要元件包括:
- 項目:可銷售的頂層產品,例如單點主菜、飲料、配菜或套餐。
- ModifierGroups:適用於
Item或其他Modifier的選項集合,例如「選擇配菜」或「加料」。 - 加購品:
ModifierGroup中的個別選項,例如「薯條」、「起司加量」或「可樂」。修飾符可以調整商品價格,並可包含巢狀ModifierGroup,進一步自訂。 - MenuCategories:機構單位,例如「開胃菜」或「飲料」。
Menu 資源的名稱格式如下:projects/{project}/locations/{location}/menus/{menu}。
如要進一步瞭解如何建立選單資料結構,請參閱整合選單資料。
訂餐工作階段
訂餐工作階段是訂餐 AI 代理的核心,可讓顧客與 AI 代理進行對話互動。每個工作階段代表單一的餐點訂購對話,並使用即時雙向串流方法 (FoodOrderingService.BidiProcessOrder) 或以回合為基礎的一元要求-回應方法 (FoodOrderingService.ProcessOrder) 管理。
BidiProcessOrder RPC 方法
這是雙向串流 RPC:用戶端應用程式會將輸入內容串流傳送給代理程式,而代理程式會同時將回應串流傳送回用戶端。這項功能可實現低延遲的即時多模態 (語音和文字) 互動。
- 用戶端到代理串流:用戶端會傳送一連串的
BidiProcessOrderRequest訊息,內含音訊輸入內容 (顧客語音)、文字輸入內容或事件輸入內容 (例如顧客使用輕觸介面更新購物車,或是得來速餐廳硬體偵測到車輛駛離事件)。 - 服務專員到客戶的串流:服務專員會傳回一連串的
BidiProcessOrderResponse訊息,內含音訊輸出內容 (合成的服務專員語音)、文字輸出內容、辨識語音的轉錄稿、客戶訂單狀態的更新,或其他信號 (例如偵測到的中斷)。
ProcessOrder RPC 和 REST 方法
ProcessOrder 是單元要求-回應方法,專為以文字為基礎的輪流點餐整合 (例如聊天小工具、網路表單和 REST 用戶端) 而設計。可透過 gRPC 和 REST (POST /v1/{config.session=projects/*/locations/*/sessions/*}:processOrder) 存取。
與 BidiProcessOrder 不同,ProcessOrder 會對個別要求/回應回合執行作業,且僅限文字:
- 模式規定:
config.mode必須明確設為TEXT(或 JSON 中的2)。 - 回合生命週期:在初始回合中,應將
turn_type設為INITIALIZE,以便注入工作階段變數 (例如選單和商店中繼資料),後續回合則應設為SUBSEQUENT。
工作階段生命週期
訂餐 AI 代理中的每個工作階段都必須以用戶端提供的設定開始,並使用 Config 訊息指定設定。Config 會指定:
store:要下單的Store完整資源名稱 (例如projects/PROJECT/locations/LOCATION/brands/BRAND/stores/STORE)。工作階段會採用參照Store資源和該商店父項Brand資源中指定的設定。如果Brand和Store的設定有衝突,系統會優先採用Store的設定。session:工作階段的專屬 ID,格式為projects/PROJECT/locations/LOCATION/sessions/SESSION。session_id是由用戶端產生的 ID,可專門識別單一客戶互動或對話。mode:工作階段模式 (HYBRID或TEXT)。如果是BidiProcessOrder,mode為選用參數,預設為HYBRID(語音和文字)。如果是ProcessOrder(一元 / REST),mode必須明確設為TEXT。