Questo documento fornisce una panoramica generale dei concetti chiave dell'API Food Ordering AI Agent.
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 ristorante 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 personalità dell'agente, ad esempio il comportamento di saluto e le caratteristiche della voce. 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).
Negozio
Una risorsa Store rappresenta una singola sede fisica di un ristorante appartenente a un
Brand. Definisce la configurazione specifica per quella posizione, ad esempio il fuso orario, lo stato (ad es. ACTIVE, DISABLED), orari di apertura e
fasce orarie (ad es. periodi come "Colazione" o "Pranzo" durante i quali sono disponibili determinati
elementi 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 un Store.
Il menu è progettato per essere flessibile e adattarsi a varie strutture, da
piccoli elenchi di elementi autonomi ad alberi complessi di pasti combinati con modificatori nidificati.
I componenti chiave di un Menu includono:
- Articoli: prodotti di primo livello vendibili come antipasti, bevande, contorni o pasti combinati alla carta.
- ModifierGroups: raccolte di scelte applicabili a un
Itemo a un altroModifier, ad esempio "Scegli un contorno" o "Aggiungi condimenti". - Modificatori: le singole opzioni all'interno di un
ModifierGroup, come "Patatine fritte", "Formaggio extra" o "Coca-Cola". I modificatori possono aggiustare 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 ulteriori dettagli sulla strutturazione dei dati del menu, consulta la pagina Integrazione dei 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, consentendo interazioni multimodali in tempo reale tra un cliente e l'agente AI. Ogni sessione
rappresenta una singola conversazione di ordinazione di cibo ed è gestita utilizzando il metodo RPC
FoodOrderingService.BidiProcessOrder.
Metodo RPC BidiProcessOrder
Si tratta di una RPC di streaming bidirezionale: l'applicazione client trasmette l'input all'agente e l'agente trasmette contemporaneamente le risposte al client. Ciò consente interazioni in tempo reale a bassa latenza.
- Stream da cliente ad agente: il cliente invia uno stream di messaggi
BidiProcessOrderRequestcontenenti input audio (voce 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 partenza rilevato dall'hardware di un ristorante drive-through). - Stream da agente a cliente: l'agente restituisce uno stream di messaggi
BidiProcessOrderResponsecontenenti output audio (voce dell'agente sintetizzata), output di testo, trascrizioni del parlato riconosciuto, aggiornamenti dello stato dell'ordine del cliente o altri segnali come interruzioni rilevate.
Ciclo di vita della sessione
Ogni sessione nell'agente AI per l'ordinazione di cibo deve iniziare con la configurazione fornita dal cliente
specificata utilizzando un messaggio BidiProcessOrderRequest contenente un Config. Config deve specificare due campi:
store: il nome completo della risorsa diStoreper 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 risorsaBrandprincipale del negozio. In caso di conflitti di configurazione traBrandeStore, la configurazione diStoreha la precedenza.session: un identificatore di sessione univoco nel formatoprojects/PROJECT/locations/LOCATION/sessions/SESSION. L'session_idè un ID generato dal client che identifica in modo univoco un'interazione o una conversazione con il cliente.