Concetti dell'agente AI per l'ordinazione di cibo

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).

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 Item o a un altro Modifier, 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 contenere ModifierGroup nidificati 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 BidiProcessOrderRequest contenenti 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 BidiProcessOrderResponse contenenti 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 di Store per cui viene effettuato l'ordine (ad es. projects/PROJECT/locations/LOCATION/brands/BRAND/stores/STORE). La sessione assume la configurazione specificata nella risorsa Store a cui viene fatto riferimento e nella risorsa Brand principale del negozio. In caso di conflitti di configurazione tra Brand e Store, la configurazione di Store ha la precedenza.
  • session: un identificatore di sessione univoco nel formato projects/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.