Concetti dell'agente AI per l'ordinazione di cibo

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

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 Item o a un altro Modifier, 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 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 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 BidiProcessOrderRequest messaggi 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 BidiProcessOrderResponse messaggi 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.mode deve essere impostato esplicitamente su TEXT (o 2 in JSON).
  • Ciclo di vita del turno: turn_type deve essere impostato su INITIALIZE al turno iniziale per inserire le variabili di sessione (come i metadati del menu e dello store) e su SUBSEQUENT nei 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 risorsa 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 padre dello store. In caso di conflitti di configurazione tra Brand e Store, la configurazione Store ha la precedenza.
  • session: un identificatore di sessione univoco nel formato projects/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 (HYBRID o TEXT). Per BidiProcessOrder, mode è facoltativo e il valore predefinito è HYBRID (voce e testo). Per ProcessOrder (unario / REST), mode deve essere impostato esplicitamente su TEXT.