Concepts de l'agent IA pour la commande de repas

Ce document offre une vue d'ensemble des concepts clés de l'API de l'agent IA de commande de repas.

Configurer l'agent

Le comportement de l'agent IA de commande de repas est influencé par la configuration de plusieurs ressources d'API : Brand, Store et Menu. Ces ressources définissent l'identité du restaurant, ses adresses physiques et les produits qu'il propose, fournissant ainsi le contexte nécessaire à l'agent IA pour traiter les commandes.

Marque

Une Brand est une ressource de premier niveau qui représente une marque de restaurant correspondant à une ou plusieurs adresses de cette marque. Elle contient une configuration partagée par toutes les adresses de ce restaurant. Brand peut inclure la configuration de nombreuses fonctionnalités de la personnalité de l'agent, telles que le comportement d'accueil et les caractéristiques vocales. De nombreuses fonctionnalités peuvent être remplacées par des valeurs configurées dans la ressource Store ou même dans la configuration par session (voir Cycle de vie des sessions).

Magasin

Une ressource Store représente une adresse physique unique d'un restaurant appartenant à un Brand. Elle définit la configuration spécifique à cette adresse, comme son fuseau horaire, son état (par exemple, ACTIVE, DISABLED), ses horaires d'ouverture et ses périodes (par exemple, "Petit-déjeuner" ou "Déjeuner", pendant lesquelles certains éléments du menu sont disponibles).

Une ressource Menu définit tous les produits proposés par un restaurant, y compris tous les choix et personnalisations possibles pour chaque produit vendable. Un Menu doit être associé à un Store. Le menu est conçu pour être flexible et s'adapter à différentes structures de menu, des petites listes d'articles autonomes aux arborescences complexes de menus combinés avec des modificateurs imbriqués.

Les principaux composants d'un Menu sont les suivants :

  • Items : produits vendables de premier niveau, tels que les entrées à la carte, les boissons, les accompagnements ou les menus combinés.
  • ModifierGroups : ensembles de choix applicables à un Item ou à un autre Modifier, tels que « Choisir un accompagnement » ou « Ajouter des garnitures ».
  • Modificateurs : options individuelles dans un ModifierGroup, telles que "Frites", "Fromage supplémentaire" ou "Coca-Cola". Les modificateurs peuvent ajuster le prix de l'article et peuvent contenir des ModifierGroup imbriqués pour une personnalisation plus poussée.
  • MenuCategories : unités organisationnelles telles que "Entrées" ou "Boissons".

Une ressource Menu est identifiée par un nom au format suivant : projects/{project}/locations/{location}/menus/{menu}.

Pour en savoir plus sur la structuration des données de menu, consultez Intégrer les données de menu.

Sessions de commande de repas

Les sessions de commande de repas sont au cœur de l'agent IA de commande de repas, ce qui permet des interactions conversationnelles entre un client et l'agent IA. Chaque session représente une seule conversation de commande de repas et est gérée à l'aide de la méthode de streaming bidirectionnel en temps réel (FoodOrderingService.BidiProcessOrder) ou de la méthode de requête-réponse unaire basée sur les tours (FoodOrderingService.ProcessOrder).

Méthode RPC BidiProcessOrder

Il s'agit d'un RPC de streaming bidirectionnel : l'application cliente diffuse l'entrée vers l'agent, et l'agent diffuse simultanément les réponses vers le client. Cela permet des interactions multimodales (voix et texte) en temps réel et à faible latence.

  • Flux client-agent : le client envoie un flux de messages BidiProcessOrderRequest contenant une entrée audio (parole du client), une entrée de texte ou des entrées d’événement (par exemple, une mise à jour du panier côté client effectuée par un client à l’aide d’une interface tactile ou un événement de départ détecté par le matériel d’un restaurant drive).
  • Flux agent-client : l'agent renvoie un flux de BidiProcessOrderResponse messages contenant une sortie audio (parole de l'agent synthétisée), une sortie de texte, des transcriptions de la parole reconnue, des mises à jour de l'état de la commande du client ou d'autres signaux tels que des interruptions détectées.

Méthode RPC et REST ProcessOrder

ProcessOrder est une méthode de requête-réponse unaire conçue pour les intégrations de commande de repas textuelles, tour par tour (telles que les widgets de chat, les formulaires Web et les clients REST). Elle est accessible via gRPC et REST (POST /v1/{config.session=projects/*/locations/*/sessions/*}:processOrder).

Contrairement à BidiProcessOrder, ProcessOrder fonctionne sur des tours de requête-réponse discrets et est uniquement textuel :

  • Exigence de mode : config.mode doit être explicitement défini sur TEXT (ou 2 en JSON).
  • Cycle de vie des tours : turn_type doit être défini sur INITIALIZE lors du tour initial pour injecter des variables de session (telles que les métadonnées du menu et du magasin), et sur SUBSEQUENT lors des tours de suivi.

Cycle de vie des sessions

Chaque session de l'agent IA de commande de repas doit commencer par une configuration fournie par le client spécifiée à l'aide d'un Config message. Le Config spécifie les éléments suivants :

  • store : nom complet de la ressource Store pour laquelle la commande est passée (par exemple, projects/PROJECT/locations/LOCATION/brands/BRAND/stores/STORE). La session adopte la configuration spécifiée dans la ressource Store référencée et dans la ressource Brand parente de ce magasin. En cas de conflit de configuration entre Brand et Store, la configuration Store est prioritaire.
  • session : identifiant de session unique au format projects/PROJECT/locations/LOCATION/sessions/SESSION. session_id est un ID généré par le client qui identifie de manière unique une interaction ou une conversation client.
  • mode : mode de la session (HYBRID ou TEXT). Pour BidiProcessOrder, mode est facultatif et sa valeur par défaut est HYBRID (voix et texte). Pour ProcessOrder (unaire / REST), mode doit être explicitement défini sur TEXT.