ChatBot: Utilisation de FRED (Cloud Node-RED) pour créer un chatbot AI à l’aide d’IBM Watson – Sensetecnic Developer – Hosted Node-RED

ChatBot: Utilisation de FRED (Cloud Node-RED) pour créer un chatbot AI à l'aide d'IBM Watson - Sensetecnic Developer - Hosted Node-RED

Ce didacticiel vous montre comment utiliser FRED – un Node-RED basé sur le cloud – pour créer un AI en utilisant le service IBM Watson Conversation en tant qu’agent NLU (Natural Language Understanding).

La construction d’un intelligent peut être complexe. Dans ce tutoriel, nous vous montrerons comment créer un bot de chat AI en écrivant un flux Node-RED sur le service cloud (FRED) qui peut gérer plusieurs utilisateurs et maintenir le contexte des conversations sur le serveur cloud. Nous utiliserons le nœud node-red-contrib- et le nœud node-red-node-watson. Nous vous montrerons également comment configurer le service IBM Watson Conversation et l’utiliser pour interpréter les entrées en anglais naturel des utilisateurs. Enfin, nous utiliserons l’API de base de données Walmart dans l’exemple de didacticiel pour obtenir des informations sur le produit.

Node-RED fournit un excellent moyen de connecter diverses plates-formes de messagerie aux services d’IA en ligne, et il est capable d’effectuer diverses tâches de traitement lors de la réception des demandes des utilisateurs. C’est ce qui rend un AI Node-RED passionnant.

Nous avons fourni un exemple de code ici. Si vous ne savez pas comment importer des flux, vous pouvez vous référer à cet article.

Créez un compte FRED

Si vous n’avez pas encore de compte sur FRED (Cloud Node-RED), créez-en un maintenant. Il est gratuit pour un compte de démonstration, qui peut être utilisé pour ces didacticiels et toutes les autres expériences que vous pourriez avoir avec Node-RED. Inscrivez-vous pour un compte gratuit sur http://fred.sensetecnic.com.

Après l’enregistrement, assurez-vous d’activer votre compte via votre e-mail. Vous ne pourrez pas vous connecter avant d’avoir validé votre compte.

À propos d’IBM Watson Conversation

IBM Watson est une plate-forme logicielle en pleine croissance qui offre un accès facile aux services d’intelligence artificielle (IA) à des fins commerciales et de développement. Le service Watson Conversation est l’une des applications Watson qui utilise l’apprentissage automatique pour comprendre et interpréter l’entrée en langage humain naturel et pour produire la réponse appropriée pour simuler une conversation naturelle entre humains. Les développeurs peuvent fournir des données et former l’application de conversation telle que définie à diverses fins. Par conséquent, en utilisant le service IBM Watson Conversation, un peut à la fois produire des données analytiques correctes vers des applications logicielles et un langage humain naturel pour les utilisateurs.


À propos de Sense Tecnic: Sense Tecnic Systems Inc construit des applications et des services IoT depuis 2010. Nous fournissons FRED, Node-RED hébergé dans le cloud en tant que service à la communauté. Nous proposons également une version commerciale à nos clients, ainsi que des services professionnels. Apprendre encore plus.


L’histoire de l’utilisateur pour ce tutoriel

Une boutique locale a décidé d’étendre ses services de en ligne pour un accès rapide et facile à leurs produits. Lorsque les clients entament la conversation, ils peuvent demander au de recommander des produits en recherchant dans sa base de données de produits (que nous modélisons à l’aide de la base de données en ligne Walmart). Les utilisateurs peuvent en outre demander au le prix, les détails du produit, les avis clients, le stock et envoyer des commandes en ligne.

Ils ont décidé de configurer cela en utilisant FRED pour implémenter un processus back-end Node-RED, diverses plates-formes de messagerie (en tant que front-end, nous utilisons le télégramme dans ce cas) et IBM Watson Conversation pour l’interpréteur de langage naturel, qui interprète le entrée en langage naturel des clients.

Aperçu rapide du résultat

Capture d'écran 2017-01-18 à 15h32,20Capture d'écran 18/01/2017 à 15h32,28

Flux de données de ce tutoriel

Diagramme sans titre

Conditions préalables

Pour créer un AI comme dans cet exemple, vous aurez besoin des éléments suivants:

  1. Si vous n’avez pas encore de compte FRED gratuit, créez-en un
  2. Si vous ne possédez pas déjà de compte IBM Watson, créez-en un
  3. Nous utiliserons Telegram comme plateforme de messagerie. Si vous n’avez pas de compte, créez-en un
  4. Nous utiliserons l’API de base de données Walmart pour l’échantillon simulé. Si vous n’y avez pas accès, ouvrez un compte ici
  5. Une fois que vous êtes configuré, vous pouvez importer les exemples de flux Node-RED à partir d’ici

Aperçu du didacticiel

  1. Configurer l’application Watson Conversation
  2. Créer un nouveau sur Telegram
  3. Connectez Telegram Messenger à FRED
  4. Connectez FRED à l’application Watson Conversation
  5. Écrire un flux Node-RED sur FRED qui gère les demandes des utilisateurs et fournit la bonne réponse

Configurer l’application Watson Conversation

Une fois que vous avez configuré votre compte IBM Watson, vous pouvez accéder à l’espace de travail Watson Conversation. Nous avons préparé un exemple de fichier JSON pour vous ici. Vous pouvez simplement importer l’exemple d’application pour le faire fonctionner immédiatement. Nous expliquerons brièvement ce que fait cette application plus tard.

Lorsque vous êtes dans votre espace de travail, vous les verrez en haut.

Capture d'écran du 19 janvier 2017 à 11 h 51 min 42 s

Cliquez sur la flèche vers le haut pour télécharger un fichier JSON.

Capture d'écran du 19/01/2017 à 11h52.03

Une fois que c’est fait. Vous verrez cette application dans votre espace de travail.

Capture d'écran du 19 janvier 2017 à 11 h 54 min 46 s

Lorsque vous cliquez sur cette application, vous pourrez voir le contenu de l’application. Il y a trois onglets principaux dans cette application, le Intentions, le Entités, et le Dialogue.

  • Intentions: Ce sont les actions définies par l’utilisateur, et leurs noms commencent par # dans une conversation Watson. Nous avons configuré 9 intentions dans l’exemple d’application, notamment: #getReviews, #getDetails, #checkPrice, #checkOnlineStock, #order, #searchItems, #greeting, #goodbye, #thankyou.

Normalement, lorsque vous démarrez une nouvelle application de conversation, vous devez former l’application Watson pour interpréter les entrées des utilisateurs et pouvoir faire correspondre ces entrées avec les bonnes intentions.

  • Entités: Ce sont les «mots-clés» définis par l’utilisateur que le programme Watson Conversation peut reconnaître dans les conversations. Il est important que Watson récupère les mots clés dans la conversation, et cela nous aide à implémenter le .

Étant donné que notre objectif est de mettre en place un de recherche d’inventaire intelligent, il est nécessaire que le bot ramasse tous les mots possibles qui pourraient être utilisés dans la recherche. Nous avions effectué quelques traitements de données dans le champ «catégorie», avec leurs synonymes possibles dans les conversations naturelles. Ne soyez pas effrayé par la quantité de mots. Ces mots proviennent de l’API de taxonomie Walmart.

  • Dialogue: Ceux-ci définissent les réponses possibles du bot lorsqu’un utilisateur entre des entrées. Watson Conversation fournit un éditeur visuel permettant aux utilisateurs de concevoir leur flux de dialogue. Puisque nous avons pas mal d’intentions, il serait complexe de concevoir des nœuds de sous-dialogue pour chaque intention. (Vous devrez mapper tous les flux de dialogue possibles, sinon le bot ne saura pas quoi répondre lorsque les utilisateurs changeront de sujet!) Nous avons décidé d’avoir tous les nœuds de dialogue au niveau racine et de laisser FRED maintenir le contexte de la conversation.

Une fois que vous avez téléchargé l’application, vous devrez former votre programme avec les données fournies. Watson devrait démarrer automatiquement le processus de formation. Vous pouvez vérifier l’état en cliquant sur ce bouton dans le coin supérieur droit pour ouvrir la fenêtre de dialogue:

Capture d'écran 2017-16-16 à 10 h 54 min 08 s

et vous verrez que Watson s’entraîne avec les données que vous avez fournies:

Capture d'écran 2017-16-16 à 10 h 54 min 15 s

Il ne faudrait pas longtemps avant que vous voyiez cela apparaître indiquant que le processus de formation est terminé:

Capture d'écran 2017-16-16 à 10 h 54 min 56 s

Une fois que Watson a terminé la formation de l’application de conversation, nous pouvons le laisser pour l’instant et passer à l’étape suivante.

Créer un nouveau sur Telegram

Nous utilisons Telegram comme plate-forme de messagerie pour ce didacticiel simplement parce qu’il est simple et rapide à configurer. En fait, vous êtes plus que bienvenus pour utiliser les plates-formes de messagerie que vous souhaitez tant que vous pouvez vous connecter à FRED. Telegram contient des instructions détaillées sur la configuration d’un à l’aide de Botfather ici.

Connectez Telegram Messenger à FRED

Pour connecter le télégramme à FRED, nous devons installer node-red-contrib-chatbot à votre compte FRED. Pour ce faire, utilisez le panneau de gestion à gauche de l’interface utilisateur FRED, sélectionnez Ajouter ou supprimer des nœuds et recherchez le nœud de dans la liste des nœuds fournie par FRED. Sélectionnez-le et installez.

Capture d'écran 2017-16-16 à 11h40h30

Ensuite, nous allons faire glisser le Récepteur de télégramme nœud et Expéditeur de télégramme nœud sur l’éditeur. Double-cliquez sur un nœud, configurez les informations du bot en entrant la clé API du bot que vous avez reçue lorsque vous avez créé le sur Telegram. Si tout fonctionne, vous devriez voir ces nœuds indiquer qu’ils sont connectés.

Capture d'écran 19/01/2017 à 14h17

Vous pouvez connecter ces deux nœuds et démarrer une conversation avec ce bot sur Telegram. Si vous avez configuré correctement, vous devriez voir des messages d’écho revenir sur le messager Telegram (récepteur).

Nous allons utiliser plusieurs onglets dans Node-RED pour cette application, et utiliser le lien nœud pour connecter les flux entre les onglets. Appelons cet onglet comme Messenger à FRED, car il ne contient que des nœuds pour communiquer avec les plates-formes de messagerie. Nous utiliserons lien nœuds pour se connecter à d’autres flux dans d’autres onglets. Nous relierons les flux à la fin.

Nous souhaitons également conserver le contenu du message d’origine Récepteur de télégramme nœud car il contient les informations nécessaires pour renvoyer le message aux utilisateurs sur Telegram. Nous utiliserons un changement nœud pour enregistrer les messages de télégramme en définissant msg.telegramBot à msg.payload.

Jusqu’à présent, la configuration devrait ressembler à ceci:

Capture d'écran du 19 janvier 2017 à 14 h 33 min 47 s

Maintenant que les messagers sont connectés à FRED, nous allons passer à l’étape suivante.

Connectez FRED à Watson Conversation

Pour cette partie, nous devrons installer nœud-nœud-rouge-watson. Vous pouvez trouver ce nœud dans Ajouter ou supprimer des nœuds. Il s’agit d’un ensemble de nœuds développés par IBM qui peuvent se connecter aux services Watson. (Remarque: il s’agit d’un sous-ensemble des nœuds IBM. Nous les avons portés et testés sur FRED car ils n’étaient pas conçus pour fonctionner dans un environnement cloud partagé)

Capture d'écran 2017-16-16 à 11h40,38

Créons un nouvel onglet dans l’éditeur appelé « FRED to Watson ».

Semblable à la section précédente, nous utiliserons deux lien nœuds pour se connecter à d’autres onglets. Nous aurons également besoin de deux changement nœuds et Conversation Watson nœud que vous venez d’installer.

Capture d'écran du 19 janvier 2017 à 14 h 42 min 48 s

Dans l’onglet de configuration du conversation nœud, vous aurez besoin de certaines informations de l’espace de travail Watson Conversation. Revenons à l’espace de travail Watson Conversation.

Capture d'écran du 19 janvier 2017 à 14 h 49 min 57 s

Lorsque vous cliquez sur le bouton Actions -> Afficher les détails, vous devriez voir le ID d’espace de travail, copiez-le dans le nœud Watson Conversation. Ensuite, accédez au tableau de bord Bluemix, cliquez sur le service de conversation dans tous les services, puis cliquez sur l’onglet «Informations d’identification du service», vous pourrez trouver le Nom d’utilisateur et mot de passe pour accéder à votre application de conversation.

Capture d'écran du 19 janvier 2017 à 15 h 37 min 08 s

Capture d'écran du 19 janvier 2017 à 15 h 37 min 40 s Et voici comment l’onglet de configuration du Conversation le nœud devrait ressembler à:

Capture d'écran du 19 janvier 2017 à 15 h 19.

Le «se préparer à envoyer à Watson» changement nœud définit simplement msg.payload à msg.telegramBot.content, afin que nous puissions envoyer le contenu textuel de Telegram à Watson. Ensuite, nous avons le « save to watsonMsg » changement noeud où nous mettons msg.watsonMsg à msg.payload pour enregistrer la sortie de Watson Conversation pour un processus ultérieur.

Maintenant, revenons à l’onglet « messenger to FRED », nous devons également renvoyer la sortie de msg.watsonMsg au Expéditeur de télégramme nœud.

Nous en ajouterons un Une fonction nœud devant le Expéditeur de télégramme nœud, avec le contenu suivant.

ChatBot: Utilisation de FRED (Cloud Node-RED) pour créer un chatbot AI à l'aide d'IBM Watson - Sensetecnic Developer - Hosted Node-RED

Et le flux dans « Messenger to FRED » devrait ressembler à:

Capture d'écran du 19/01/2017 à 16h15

Comme vous pouvez le voir, nous fusionnons d’abord la sortie de Watson Conversation au message Telegram que nous avions stocké précédemment, et nous avons finalement défini msg.payload au message Telegram que nous avons enregistré et envoyé à Expéditeur de télégramme nœud.

À ce stade, vous avez déjà connecté le Telegram à Watson Conversation. Si vous connectez ces flux ensemble, vous devriez pouvoir obtenir des réponses simples de Watson à Telegram:

Capture d'écran du 19 janvier 2017 à 16 h 20 min 51 s

Les flux Node-RED qui font des choses incroyables

Vient maintenant la partie difficile. Nous voulons que le puisse effectuer certaines tâches sur demande. Dans notre histoire d’utilisateur, ce est en mesure de fournir des recommandations simples et de vérifier des informations telles que la disponibilité, le prix et les avis des clients. Étant donné que nous utilisons l’API de base de données Walmart comme base de données simulée, commençons un nouvel onglet appelé « FRED to Walmart API ».

Encore une fois, nous aurons deux lien nœuds qui se connectent à partir du flux dans l’onglet «FRED to Watson» et dans l’onglet «Messenger to FRED». Nous allons définir un Commutateur nœud pour envoyer le message à différents une fonction nœuds selon l’intention des utilisateurs. Nous allons effectuer différentes tâches et combiner la sortie vers msg.watsonMsg.output.text, qui sera fusionné en msg.telegramBot et renvoyé à Telegram plus tard.

ChatBot: Utilisation de FRED (Cloud Node-RED) pour créer un chatbot AI à l'aide d'IBM Watson - Sensetecnic Developer - Hosted Node-RED

Comme vous pouvez le voir sur ce diagramme, nous avons défini quatre étapes dans cet exemple. La première étape consiste à obtenir la réponse de Watson, et nous ajoutons la clé API Walmart que nous avons obtenue de l’API de base de données Walmart. La deuxième étape consiste à inspecter la réponse Watson et à l’envoyer à différents une fonction nœuds selon l’intention. Par exemple, si l’intention est «searchItems», le une fonction le nœud « searchItems » passera par le entités à partir de la réponse Watson et générer msg.url pour le Requête HTTP nœud. La troisième étape consiste à appeler les API de base de données. La dernière étape consiste à combiner le résultat msg.watsonMsg, où il sera traité ultérieurement.

Vous pouvez importer ces flux à partir de l’exemple de code fourni sur notre Github. Si vous ne savez pas comment importer les codes de flux, veuillez vous référer à: ici.

De plus, si vous avez suivi le didacticiel, nous devons apporter une petite modification au nœud « renvoyer au télégramme » dans l’onglet « messenger to FRED » car nous avons modifié le message dans l’onglet « FRED to Walmart API ». Le code mis à jour pour le nœud «renvoyer au télégramme» ressemblerait à ceci:

Capture d'écran du 20 janvier 2017 à 13 h 43 min 34 s

En général, la deuxième et la troisième étape consistent à concevoir les fonctionnalités de votre . Vous êtes plus que bienvenus pour concevoir vos propres fonctionnalités.

À ce stade, vous disposez d’un simple et de base qui utilise la fonctionnalité watson pour comprendre le langage naturel. C’est déjà assez impressionnant….

Mais, un intelligent devrait également connaître le contexte!

Cependant, le que nous avons jusqu’à présent ne peut que répondre à l’entrée actuelle des utilisateurs. Bien qu’il puisse gérer plusieurs entrées utilisateur, il ne peut toujours pas relier l’entrée au contexte de conversation global. Nous devons le faire si nous voulons rendre notre «intelligent».

L’idée générale de cette section est de vous montrer comment nous pouvons utiliser FRED pour garder le contexte de la conversation. Dans cet exemple, il y aura quelques endroits dont nous avons besoin pour enregistrer les données sur FRED.

  1. Lorsque l’utilisateur envoie une requête de recherche, nous voulons enregistrer le résultat de la recherche dans le contexte
  2. Lorsque l’utilisateur envoie un numéro d’article arbitraire, nous voulons pouvoir récupérer le résultat de la recherche à partir du contexte
  3. Lorsque l’utilisateur envoie un mot comme «it», nous voulons pouvoir récupérer le numéro d’article dont l’utilisateur parlait plus tôt.
  4. Lorsque le message est envoyé, nous voulons conserver le contexte en mappant avec le Telegram chatId.
  5. Lorsqu’un message arrive, nous voulons pouvoir récupérer les données de contexte de la mémoire en utilisant le Telegram ChatID.

Tout d’abord, enregistrons le contexte du message pour chaque utilisateur. Passons à l’onglet « Messenger to FRED » et ajoutons un une fonction nœud avant d’envoyer le message à Expéditeur de télégramme nœud. Le but de ce nœud est d’enregistrer le contexte sur le mappage local vers le chatId qui a été affiché dans le message Telegram. Si vous avez beaucoup de données circulant, vous pouvez également enregistrer le contexte dans une base de données (voir notre tutoriel sur l’utilisation de SQL Lite).

Voici comment nous sauvegardons le contexte

Capture d'écran du 20/01/2017 à 11h42.09

Vous aurez également besoin d’un nœud pour extraire ce contexte enregistré lorsque le message a été envoyé depuis un télégramme, nous pouvons ajouter ce nœud:

Capture d'écran du 20/01/2017 à 11h43,32

Ainsi, le flux dans « Messenger to FRED » ressemblerait à ceci:

Capture d'écran du 20/01/2017 à 11h43,55

Nous pouvons laisser l’onglet « FRED to Watson » tel quel. Nous devrons ajouter quelques nœuds supplémentaires dans l’onglet «FRED to Walmart API».

Comme vous l’avez vu dans l’exemple de conversation ci-dessus, nous avons envoyé un menu du , et l’utilisateur se réfère à l’élément de la liste. Afin de conserver le statut, nous souhaitons conserver un enregistrement du numéro d’article et également du résultat de la recherche d’article.

Nous ajoutons d’abord un une fonction nœud après avoir appelé l’API des éléments de recherche pour enregistrer le résultat de la recherche.

Capture d'écran 2017-01-20 à 13 h 59, 16 h 00

Nous ajoutons également un une fonction noeud avant le commutateur pour obtenir le numéro d’article:

Capture d'écran 2017-01-20 à 13 h 59 min 40 s

et maintenant le flux ressemblerait à:

Capture d'écran 20/01/2017 à 13 h 59 min 51 s

Maintenant, si vous connectez tous les flux, vous auriez un AI qui peut gérer plusieurs utilisateurs et maintenir le contexte conversationnel!

Ok, c’est tout – c’est un tutoriel assez complexe, mais nous pensons que vous serez d’accord, le résultant est très impressionnant. De plus, cet exemple de base peut maintenant être modifié pour s’adapter à vos besoins spécifiques – amusez-vous!

À propos de Sense Tecnic: Sense Tecnic Systems Inc construit des applications et des services IoT depuis 2010. Nous fournissons FRED, Node-RED hébergé dans le cloud en tant que service à la communauté. Nous proposons également une version commerciale à nos clients, ainsi que des services professionnels. Apprendre encore plus.


ChatBot: Utilisation de FRED (Cloud Node-RED) pour créer un chatbot AI à l'aide d'IBM Watson - Sensetecnic Developer - Hosted Node-RED

#Utilisation #FRED #Cloud #NodeRED #pour #créer # #laide #dIBM #Watson #Sensetecnic #Developer #Hosted #NodeRED