Questo documento fornisce una panoramica generale dei concetti chiave dell'API dell'agente AI per l'ordinazione di cibo.
Configurazione dell'agente
Il comportamento dell'agente AI per l'ordinazione di cibo è influenzato dalla configurazione di
diverse risorse API: Brand, Store e Menu. Queste risorse definiscono l'identità del ristorante, le sue sedi fisiche e i prodotti che offre, fornendo il contesto necessario all'agente AI per gestire gli ordini.
Brand
Un Brand è la risorsa di primo livello che rappresenta un brand di ristoranti corrispondente a una o più sedi di quel brand.
Contiene la configurazione condivisa tra tutte le sedi del ristorante.
Brand può includere la configurazione di molte funzionalità della persona dell'agente, come il comportamento di saluto e le caratteristiche vocali. Molte di queste funzionalità possono essere sostituite dai valori configurati nella risorsa Store
o anche nella configurazione per sessione (vedi Ciclo di vita della sessione)
Store
Una risorsa Store rappresenta una singola sede fisica del ristorante appartenente a un
Brand. Definisce la configurazione specifica per quella sede, come il fuso orario, lo stato (ad es. ACTIVE, DISABLED), l'orario di apertura e le fasce orarie (ad es. periodi come "Colazione" o "Pranzo" durante i quali sono disponibili determinati articoli del menu).
Menu
Una risorsa Menu definisce tutti i prodotti offerti da un ristorante, incluse
tutte le possibili scelte e personalizzazioni per ogni prodotto vendibile. Un Menu
deve essere associato a uno Store.
Il menu è progettato per essere flessibile e adattarsi a varie strutture di menu, da piccoli elenchi di articoli autonomi a alberi complessi di pasti combinati con modificatori nidificati.
I componenti chiave di un Menu includono:
- Items: prodotti di primo livello vendibili come antipasti à la carte, bevande, contorni o pasti combinati.
- ModifierGroups: raccolte di scelte applicabili a un
Itemo a un altroModifier, ad esempio "Scegli un contorno" o "Aggiungi condimenti". - Modificatori: opzioni individuali all'interno di un
ModifierGroup, come "Patatine fritte", "Formaggio extra" o "Cola". I modificatori possono modificare il prezzo dell'articolo e possono contenereModifierGroupnidificati per un'ulteriore personalizzazione. - MenuCategories: unità organizzative come "Antipasti" o "Bevande".
Una risorsa Menu è identificata da un nome nel seguente formato:
projects/{project}/locations/{location}/menus/{menu}.
Per maggiori dettagli sulla strutturazione dei dati del menu, consulta Integrare i dati del menu.
Sessioni di ordinazione di cibo
Le sessioni di ordinazione di cibo sono al centro dell'agente AI per l'ordinazione di cibo e consentono interazioni conversazionali tra un cliente e l'agente AI. Ogni sessione
rappresenta una singola conversazione di ordinazione di cibo e viene gestita utilizzando il
metodo di streaming bidirezionale in tempo reale
(FoodOrderingService.BidiProcessOrder)
o il metodo di richiesta-risposta unario basato su turni
(FoodOrderingService.ProcessOrder).
Metodo RPC BidiProcessOrder
Si tratta di un RPC di streaming bidirezionale: l'applicazione client trasmette l'input all'agente e l'agente trasmette contemporaneamente le risposte al client. Ciò consente interazioni multimodali (voce e testo) in tempo reale a bassa latenza.
- Stream da client ad agente: il client invia uno stream di
BidiProcessOrderRequestmessaggi contenenti input audio (discorso del cliente), input di testo o input di eventi (ad esempio un aggiornamento del carrello lato client eseguito da un cliente utilizzando un'interfaccia touch o un evento di drive-off rilevato dall'hardware di un ristorante drive-through). - Stream da agente a client: l'agente restituisce uno stream di
BidiProcessOrderResponsemessaggi contenenti output audio (discorso dell'agente sintetizzato), output di testo, trascrizioni del discorso riconosciuto, aggiornamenti dello stato dell'ordine del cliente o altri segnali come interruzioni rilevate.
Metodo RPC e REST ProcessOrder
ProcessOrder è un metodo di richiesta-risposta unario progettato per le integrazioni di ordinazione di cibo basate su testo e basate su turni (come widget di chat, moduli web e client REST). È accessibile tramite gRPC e REST (POST /v1/{config.session=projects/*/locations/*/sessions/*}:processOrder).
A differenza di BidiProcessOrder, ProcessOrder opera su turni di richiesta-risposta discreti ed è solo di testo:
- Requisito della modalità:
config.modedeve essere impostato esplicitamente suTEXT(o2in JSON). - Ciclo di vita del turno:
turn_typedeve essere impostato suINITIALIZEal turno iniziale per inserire le variabili di sessione (come i metadati del menu e dello store) e suSUBSEQUENTnei turni di follow-up.
Ciclo di vita della sessione
Ogni sessione nell'agente AI per l'ordinazione di cibo deve iniziare con la configurazione fornita dal client
specificata utilizzando un Config messaggio. Config specifica:
store: il nome completo della risorsaStoreper cui viene effettuato l'ordine (ad es.projects/PROJECT/locations/LOCATION/brands/BRAND/stores/STORE). La sessione assume la configurazione specificata nella risorsaStorea cui viene fatto riferimento e nella risorsaBrandpadre dello store. In caso di conflitti di configurazione traBrandeStore, la configurazioneStoreha la precedenza.session: un identificatore di sessione univoco nel formatoprojects/PROJECT/locations/LOCATION/sessions/SESSION.session_idè un ID generato dal client che identifica in modo univoco un'interazione o una conversazione del cliente.mode: la modalità della sessione (HYBRIDoTEXT). PerBidiProcessOrder,modeè facoltativo e il valore predefinito èHYBRID(voce e testo). PerProcessOrder(unario / REST),modedeve essere impostato esplicitamente suTEXT.