ChatBot: Comment créer un chatbot d’épicerie à commande vocale avec Azure AI

ChatBot: Comment créer un chatbot d'épicerie à commande vocale avec Azure AI

Les s sont devenus de plus en plus populaires pour offrir des expériences utiles et engageantes aux clients et aux employés. Les services Azure vous permettent de créer rapidement des robots, de leur ajouter de l’intelligence à l’aide de l’IA et de les personnaliser pour des scénarios complexes.

Dans ce blog, nous allons parcourir un exercice que vous pouvez effectuer en moins de deux heures, pour commencer à utiliser Azure AI Services. Cette application de robot d’épicerie intelligente peut vous aider à gérer votre liste de courses à l’aide de commandes vocales. Nous vous fournirons des conseils de haut niveau et un exemple de code pour vous aider à démarrer, et nous vous encourageons à jouer avec le code et à faire preuve de créativité avec votre solution !

Caractéristiques de l’application :

iPhoneview.png

  • Ajoutez ou supprimez des articles d’épicerie en les dictant à Alexa.
  • Accédez facilement à la liste d’épicerie via une application.
  • Cochez les éléments à l’aide de commandes vocales ; par exemple, « Alexa, supprime les pommes de ma liste d’épicerie ».
  • Demandez à Alexa de lire les articles que vous avez dans votre liste d’épicerie.
  • Organisez automatiquement les articles par catégorie pour gagner du temps en magasin.
  • Utilisez n’importe quel ordinateur portable ou Web Apps pour accéder à l’application et synchroniser les modifications sur l’ordinateur portable et le téléphone.

Conditions préalables:

Éléments essentiels:

Architecture de la solution

Réf de l'application Architecture.png

Description de l’architecture de l’application :

  • L’utilisateur accède au en l’invoquant comme une compétence Alexa.
  • L’utilisateur est authentifié avec Azure Active Directory.
  • L’utilisateur interagit avec le optimisé par Azure Bot Service ; par exemple, l’utilisateur demande au bot d’ajouter des articles d’épicerie à une liste.
  • Azure Cognitive Services traite la demande en langage naturel pour comprendre ce que l’utilisateur veut faire. (Remarque : si vous souhaitez donner à votre bot sa propre voix, vous pouvez choisir parmi plus de 200 voix et 54 langues/régions. Essayez la démo pour entendre les différentes voix naturelles.)
  • Le bot ajoute ou supprime du contenu dans la base de données.

Un autre visuel du flux de données au sein de l’architecture de la solution est présenté ci-dessous.

Flux d'applications.png

Mise en œuvre

Présentation de haut niveau des étapes impliquées dans la création de l’application avec quelques exemples d’extraits de code à titre d’illustration :

Nous allons commencer par créer une instance Azure Bot Service et ajouter des capacités vocales au bot à l’aide de Microsoft Bot Framework et de la compétence Alexa. Bot Framework, avec Azure Bot Service, fournit les outils nécessaires pour créer, tester, déployer et gérer le workflow de développement de bot de bout en bout. Dans cet exemple, nous intégrons Azure Bot Service à Alexa, qui peut traiter les entrées vocales pour notre vocal. Cependant, pour les s déployés sur plusieurs canaux et pour des scénarios plus avancés, nous vous recommandons d’utiliser le service Speech d’Azure pour activer les scénarios basés sur la voix. Essayez la démo pour écouter plus de 200 voix de haute qualité disponibles dans 54 langues et paramètres régionaux.

  1. La première étape du processus consiste à se connecter au portail Azure et à suivre les étapes ici pour créer une ressource Azure Bot Service et un bot d’application web. Pour ajouter une capacité vocale au bot, cliquez sur les canaux pour ajouter Alexa (voir l’instantané ci-dessous) et notez l’URI du point de terminaison du service Alexa.

Canaux de service Azure BotCanaux de service Azure Bot

  1. Ensuite, nous devons nous connecter à la console développeur Alexa et créer une compétence Amazon Alexa. Après avoir créé la compétence, le modèle d’interaction nous est présenté. Remplacez l’éditeur JSON par les exemples de phrases ci-dessous.
{

  "interactionModel": {

    "languageModel": {

      "invocationName": "Get grocery list",

      "intents": [

        {

          "name": "AMAZON.FallbackIntent",

          "samples": []

        },

        {

          "name": "AMAZON.CancelIntent",

          "samples": []

        },

        {   

          "name": "AMAZON.HelpIntent",

          "samples": []

        },

        {

          "name": "AMAZON.StopIntent",

          "samples": []

        },

        {

          "name": "AMAZON.NavigateHomeIntent",

          "samples": []

        },

        {

          "name": "Get items in the grocery",

          "slots": [

            {

              "name": "name",

              "type": "AMAZON.US_FIRST_NAME"

            }

          ],

          "samples": [

            "Get grocery items in the list",

            "Do I have bread in my list",

           ]

        }

      ],

      "types": []

    }

  }

}
  1. Ensuite, nous intégrerons la compétence Alexa à notre bot Azure. Pour ce faire, nous aurons besoin de deux informations : l’ID de compétence Alexa et l’URI du point de terminaison du service Alexa. Tout d’abord, obtenez l’ID de compétence soit à partir de l’URL du portail Alexa, soit en accédant à la console développeur Alexa et en cliquant sur « afficher l’ID de compétence ». L’ID de compétence doit être une valeur comme « amzn1.ask.skil.A GUID ». Ensuite, obtenez l’URI du point de terminaison de service Alexa à partir du portail Azure, en accédant à la page des canaux de notre Azure Web App Bot dans le portail Azure, et en cliquant sur Alexa pour copier l’URI du point de terminaison de service Alexa. Intégrez ensuite comme indiqué :
  • Console développeur Amazon: Après avoir créé la compétence Alexa, cliquez sur Point de terminaison et collez l’URI du point de terminaison du service Alexa que nous avons copié à partir du portail Azure et enregistrez les points de terminaison.
    Amazon Developer Console.jpg
  • Portail Azure : Accédez à la page des canaux d’Azure Bot, cliquez sur Alexa et collez l’ID de compétence Alexa que nous avons copié à partir de la console développeur Alexa.
    Paramètres de configuration Alexa dans Azure bot service.jpg
  1. Maintenant, nous allons télécharger et le bot localement pour le tester à l’aide de l’émulateur Bot Framework. Cliquez sur « Build » dans l’application Azure Web Bot pour télécharger le code source localement avec Bot Framework Emulator. Modifiez app.py comme ci-dessous :
    # Copyright (c) Microsoft Corporation. All rights reserved.
    # Licensed under the MIT License.
    
    from http import HTTPStatus
    
    from aiohttp import web
    from aiohttp.web import Request, Response, json_response
    from botbuilder.core import (
        BotFrameworkAdapterSettings,
        ConversationState,
        MemoryStorage,
        UserState,
    )
    from botbuilder.core.integration import aiohttp_error_middleware
    from botbuilder.schema import Activity
    
    from config import DefaultConfig
    from dialogs import MainDialog, groceryDialog
    from bots import DialogAndWelcomeBot
    
    from adapter_with_error_handler import AdapterWithErrorHandler
    
    CONFIG = DefaultConfig()
    
    # Create adapter.
    # See https://aka.ms/about-bot-adapter to learn more about how bots work.
    SETTINGS = BotFrameworkAdapterSettings(CONFIG.APP_ID, CONFIG.APP_PASSWORD)
    
    # Create MemoryStorage, UserState and ConversationState
    MEMORY = MemoryStorage()
    USER_STATE = UserState(MEMORY)
    CONVERSATION_STATE = ConversationState(MEMORY)
    
    # Create adapter.
    # See https://aka.ms/about-bot-adapter to learn more about how bots work.
    ADAPTER = AdapterWithErrorHandler(SETTINGS, CONVERSATION_STATE)
    
    # Create dialogs and Bot
    RECOGNIZER = IntelligentGrocery(CONFIG)
    grocery_DIALOG = groceryDialog()
    DIALOG = MainDialog(RECOGNIZER, grocery_DIALOG)
    BOT = DialogAndWelcomeBot(CONVERSATION_STATE, USER_STATE, DIALOG)
    
    # Listen for incoming requests on /api/messages.
    async def messages(req: Request) -> Response:
        # Main bot message handler.
        if "application/json" in req.headers["Content-Type"]:
            body = await req.json()
        else:
            return Response(status=HTTPStatus.UNSUPPORTED_MEDIA_TYPE)
    
        activity = Activity().deserialize(body)
        auth_header = req.headers["Authorization"] if "Authorization" in req.headers else ""
    
        response = await ADAPTER.process_activity(activity, auth_header, BOT.on_turn)
        if response:
            return json_response(data=response.body, status=response.status)
        return Response(status=HTTPStatus.OK)
    
    APP = web.Application(middlewares=[aiohttp_error_middleware])
    APP.router.add_post("/api/messages", messages)
    
    if __name__ == "__main__":
        try:
            web.run_app(APP, host="localhost", port=CONFIG.PORT)
        except Exception as error:
            raise error
    ​
  2. Ensuite, nous allons exécuter et tester le bot avec Bot Framework Emulator. Depuis le terminal, accédez au dossier de code et exécutez pip install -r requirements.txt pour installer les packages requis pour exécuter le bot. Une fois les packages installés, exécutez python app.py pour démarrer le bot. Le bot est prêt à tester comme indiqué ci-dessous :
    Test de l'émulateur BF.jpg}

    Ouvrez le bot et ajoutez le numéro de port ci-dessous dans l’URL suivante.
    Vue de l'émulateur Bot FrameworkVue de l’émulateur Bot Framework

  1. Nous sommes maintenant prêts à ajouter une compréhension du langage naturel afin que le bot puisse comprendre l’intention de l’utilisateur. Ici, nous utiliserons Azure Language Understanding Cognitive Service (LUIS) pour mapper l’entrée de l’utilisateur à une « intention » et extraire des « entités » de la phrase. Dans l’illustration ci-dessous, la phrase « ajouter du lait et des œufs à la liste » est envoyée sous forme de chaîne de texte au point de terminaison LUIS. LUIS renvoie le JSON vu à droite.
    Diagramme d'énoncés Language UnderstandingDiagramme d’énoncés Language Understanding
  1. Utilisez le modèle ci-dessous pour créer un fichier de modèle LUIS JSON dans lequel nous spécifions manuellement les intentions et les entités. Une fois l’application « IntelligentGrocery » créée dans le portail LUIS sous « Importer une nouvelle application », téléchargez le fichier JSON avec les intentions et les entités ci-dessous.
{
      "text": "access the groceries list",
      "intent": "Show",
      "entities": [
        {
          "entity": "ListType",
          "startPos": 11,
          "endPos": 19,
          "children": []
        }
      ]
    },
    {
      "text": "add bread to the grocery list",
      "intent": "Add",
      "entities": [
        {
          "entity": "ListType",
          "startPos": 23,
          "endPos": 29,
          "children": []

Les exemples d’intentions ci-dessus servent à ajouter des articles et à accéder aux articles de la liste d’épicerie. Maintenant, c’est à votre tour d’ajouter des intentions supplémentaires pour effectuer les tâches ci-dessous, en utilisant le portail LUIS. En savoir plus sur la façon de créer les intentions ici.

Intentions

Nom

La description

Cochez

Marquez les articles d’épicerie comme achetés.

Confirmer

Confirmez l’action précédente.

Effacer

Supprimer des articles de la liste d’épicerie.

Une fois les intentions et les entités ajoutées, nous devrons former et publier le modèle afin que l’application LUIS puisse reconnaître les énoncés relatifs à ces actions de liste de courses.

Portail de compréhension des langues (LUIS)Portail de compréhension des langues (LUIS)

  1. Une fois le modèle publié sur le portail LUIS, cliquez sur « Accéder à vos URL de point de terminaison » et copiez la clé primaire, l’exemple de requête et l’URL de point de terminaison pour la ressource de prédiction.
    Point de terminaison de compréhension de la languePoint de terminaison de compréhension de la langue

    Vue Prédiction Language Understanding (LUIS)Vue Prédiction Language Understanding (LUIS)

Accédez à la page Paramètres du portail LUIS pour récupérer l’ID d’application.
Paramètres de l'applicationParamètres de l’application

  1. Enfin, testez votre modèle Language Understanding. L’URL du point de terminaison sera au format ci-dessous, avec votre propre sous-domaine personnalisé, ainsi qu’un ID d’application et une clé de point de terminaison remplaçant APP-ID et KEY_ID. Allez à la fin de l’URL et saisissez une intention ; par exemple, « apportez-moi tous les articles de la liste d’épicerie ». Le résultat JSON identifiera l’intention et la prédiction de score le plus élevé avec un score de confiance. C’est un bon test pour voir si LUIS peut apprendre ce qui doit être prédit avec l’intention.

Idées supplémentaires

Nous avons maintenant vu comment créer un bot vocal exploitant les services Azure pour automatiser une tâche courante. Nous espérons que cela vous donnera un bon point de départ pour créer des robots pour d’autres scénarios également. Essayez quelques-unes des idées ci-dessous pour continuer à développer votre bot et à explorer d’autres services Azure AI.

  • Ajoutez l’assistant Google Home comme canal supplémentaire pour recevoir des commandes vocales.
  • Ajoutez une extension PictureBot à votre bot et ajoutez des photos de vos articles d’épicerie. Vous devrez créer des intentions qui déclenchent des actions que le bot peut effectuer et créer des entités qui nécessitent ces actions. Par exemple, une intention pour le PictureBot peut être « SearchPics ». Cela pourrait déclencher Azure Cognitive Search pour rechercher des photos, en utilisant une entité « facette » pour savoir quoi rechercher. Voyez quelles autres fonctionnalités vous pouvez proposer !
  • Utilisez Azure QnA maker pour permettre à votre bot de répondre aux FAQ à partir d’une base de connaissances. Ajoutez un peu de personnalité en utilisant la fonction de bavardage.
  • Intégrez Azure Personalizer à votre vocal pour permettre au bot de recommander une liste de produits à l’utilisateur, offrant une expérience personnalisée.
  • Incluez le service Azure Speech pour donner à votre bot une voix personnalisée de haute qualité, avec plus de 200 options de synthèse vocale dans 54 paramètres régionaux/langues différents, ainsi que des capacités de synthèse vocale personnalisables pour traiter les entrées vocales.
  • Essayez de créer ce bot à l’aide de Bot Framework Composer, une toile de création visuelle.

ChatBot: Comment créer un chatbot d'épicerie à commande vocale avec Azure AI

#Comment #créer # #dépicerie #commande #vocale #avec #Azure