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).
Menu
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
Itemou à un autreModifier, 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 desModifierGroupimbriqué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
BidiProcessOrderRequestcontenant 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
BidiProcessOrderResponsemessages 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.modedoit être explicitement défini surTEXT(ou2en JSON). - Cycle de vie des tours :
turn_typedoit être défini surINITIALIZElors du tour initial pour injecter des variables de session (telles que les métadonnées du menu et du magasin), et surSUBSEQUENTlors 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 ressourceStorepour 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 ressourceStoreréférencée et dans la ressourceBrandparente de ce magasin. En cas de conflit de configuration entreBrandetStore, la configurationStoreest prioritaire.session: identifiant de session unique au formatprojects/PROJECT/locations/LOCATION/sessions/SESSION.session_idest 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 (HYBRIDouTEXT). PourBidiProcessOrder,modeest facultatif et sa valeur par défaut estHYBRID(voix et texte). PourProcessOrder(unaire / REST),modedoit être explicitement défini surTEXT.