Analyse du sentiment des demandes d'assistance à l'aide de l'intelligence artificielle, en utilisant MapForce et GPT-4
L'analyse automatisée des sentiments exprimés dans des textes, comme les avis des utilisateurs, a toujours été un défi. En raison de la complexité inhérente au langage naturel, les systèmes rencontraient des difficultés pour analyser le contexte et les nuances. Cela nécessitait un travail manuel considérable pour surmonter ces obstacles.
L'une des nombreuses fonctionnalités utiles des systèmes d'intelligence artificielle modernes, basés sur de grands modèles de langage (LLM) comme GPT-4 d'OpenAI, est qu'ils sont.. très Bonne capacité d'analyse des sentiments exprimés dans des textes naturels. Nous pouvons utiliser cette fonctionnalité pour créer une solution de base de données très efficace dans MapForce qui, par exemple, analyse tous les nouveaux enregistrements entrants dans une base de données de support et détermine automatiquement si une demande de support particulière ou un autre retour d'information client est positif, négatif, constitue un signalement de bug, ou doit être considéré comme une demande de fonctionnalité.

Premiers tests de GPT-4 sur la plateforme OpenAI Playground
Si vous souhaitez suivre cet article de blog ou, à terme, mettre en œuvre cette approche dans votre propre système de base de données, vous devrez créer un compte auprès d'OpenAI et obtenir une clé API que vous pourrez utiliser dans votre implémentation. Cela vous donnera également accès à l'environnement "Playground" sur le portail OpenAI, où vous pourrez effectuer des tests initiaux et obtenir des exemples de données JSON que vous devrez utiliser pour construire les requêtes JSON appropriées dans MapForce.
Comme toujours, l'une des étapes les plus importantes lorsqu'on travaille avec un système d'IA basé sur un grand modèle de langage (LLM) est l'élaboration d'une requête (ou "prompt") appropriée. Il est important d'être aussi précis que possible, afin d'obtenir le résultat souhaité. Pour nos besoins, nous allons utiliser la requête suivante :
“Classify the sentiment in the following statement using these possible results: Negative, Positive, Feature Request, Bug Report.”
Et cela sera suivi des commentaires des clients que nous souhaitons analyser. Pour tester cela dans l'environnement OpenAI Playground, nous sélectionnons : Mode = Chat, Modèle = gpt-4, Température = 1, Longueur maximale = 512, Top P = 1, et nous laisserons les pénalités de fréquence et de présence à 0. Ensuite, nous pouvons saisir l'invite, entrer notre premier commentaire de client, et cliquer sur le bouton "Envoyer" :

L'IA GPT-4 renvoie immédiatement "Positif", ce qui est la réponse correcte. Nous pouvons tester d'autres exemples pour vérifier que notre requête fonctionne bien dans tous les autres cas, et que nous obtenons les résultats de sentiment attendus.
Ensuite, il est temps d'examiner la requête JSON en cliquant sur le bouton "Afficher le code" et en modifiant le menu déroulant de langue, en passant de Python (la valeur par défaut) à JSON. Ensuite, copiez le code et collez-le dans XMLSpy, afin de pouvoir l'examiner plus attentivement Vue en grille JSON:

La structure JSON semble assez simple. Cela nous permet également de générer automatiquement un schéma JSON à partir de ce code, que nous utiliserons plus tard pour configurer la requête du service web dans XMLSpy et MapForce :

Test de l'API OpenAI depuis XMLSpy
Ensuite, nous allons nous assurer de bien comprendre l'API de chat d'OpenAI et examiner la sortie JSON résultante. Nous allons effectuer un test manuel en utilisant la fenêtre de test HTTP pratique intégrée à XMLSpy, que vous pouvez trouver juste en dessous de votre fenêtre de travail principale, sous forme d'un onglet séparé à côté de la fenêtre "Messages".
Dans l'onglet HTTP, sélectionnez la méthode de requête HTTP "POST", saisissez l'URL du point d'accès de l'API de chat OpenAI, qui est https://api.openai.com/v1/chat/completions, et définissez le type de contenu sur "application/json". Ensuite, copiez et collez la requête JSON d'exemple que nous avons obtenue à partir de l'interface Playground ci-dessus dans la section "Corps" :

Maintenant, nous devons fournir notre clé API secrète dans les en-têtes afin d'authentifier notre requête. Pour cela, cliquez sur l'onglet "En-têtes" et ajoutez une ligne avec l'en-tête "Authorization" et une valeur qui commence par "Bearer ", suivie d'un espace, puis de la clé API secrète. Si vous avez plusieurs comptes chez OpenAI et que vous devez vous assurer que la facturation est correcte, vous pouvez également, de manière facultative, ajouter une deuxième ligne avec l'en-tête "OpenAI-Organization" et définir la valeur sur l'identifiant de votre organisation attribuée par OpenAI

Bien entendu, nous avons dû masquer les valeurs exactes de notre clé secrète et de notre identifiant d'organisation dans la capture d'écran ci-dessus.
Maintenant, nous sommes prêts à cliquer sur le bouton "Envoyer" pour envoyer la requête HTTP ci-dessus à l'endpoint de l'API OpenAI, afin de voir quel type de réponse nous recevrons

Voici la première bonne nouvelle : nous avons reçu une réponse "200 OK" en seulement 780 millisecondes, ainsi que du contenu de type "application/json", qui correspond à la charge utile de notre réponse au format JSON. Cette charge utile contient un message avec la réponse que l'assistant d'IA a fournie, sous la forme du contenu "Positive". Nous avons donc réussi à reproduire notre test précédent dans l'environnement OpenAI Playground, directement depuis XMLSpy, en envoyant une requête HTTP réelle à l'API et en obtenant la réponse correcte.
Pour continuer, nous allons enregistrer cette réponse dans un fichier en utilisant le bouton "Enregistrer dans un fichier" dans la fenêtre du test HTTP. Ensuite, nous pourrons ouvrir ce fichier et utiliser XMLSpy pour créer automatiquement un schéma JSON à partir du message de réponse JSON d'exemple. Cette fois, le schéma décrit la structure du résultat JSON attendu du service web, que nous pourrons ensuite traiter dans MapForce.

Base de données d'exemples de support
La plupart des systèmes de gestion du support technique sont basés sur une base de données SQL ou une autre base de données, de sorte que cette approche peut être facilement appliquée à tous. Cependant, pour cet exemple de publication de blog, nous utiliserons une version simplifiée d'une base de données de commentaires clients, implémentée en SQLite :

Et nous avons inclus des exemples de données qui nous permettront d'exécuter nos tests d'intégration dans MapForce et d'analyser le sentiment exprimé dans toutes ces informations provenant des clients :
![[FeedbackDatabaseData.png]]
Création de la correspondance de la base de données dans MapForce
Maintenant, nous avons tous les éléments nécessaires pour créer notre projet de transformation MapForce ou notre projet ETL, qui permettra de lire toutes les données de la base de données, d'appeler l'API OpenAI pour obtenir l'analyse des sentiments, et de réécrire les résultats dans la base de données.
La première étape pour concevoir notre mappage ETL consiste à insérer deux fois l'objet de base de données "CustomerFeedback" dans le mappage : une fois comme entrée (la partie "extraction" de l'ETL) et une fois comme sortie finale. Ensuite, il faut connecter l'objet de la table principale ainsi que l'identifiant. MapForce se chargera de connecter les autres colonnes, mais nous n'avons pas réellement besoin de ces connexions, vous pouvez donc les supprimer jusqu'à obtenir la configuration suivante :

Nous laissons beaucoup d'espace entre l'entrée et la sortie, car c'est là que nous allons bientôt insérer l'appel à notre service web. Mais avant cela, définissons précisément les opérations de notre base de données de sortie (la partie chargement du processus ETL) en double-cliquant sur l'objet de base de données approprié :

Assurez-vous que le premier bouton radio est réglé sur "Aucun", car nous ne voulons effectuer aucune opération spéciale avant le premier enregistrement. Ensuite, modifiez l'en-tête de la deuxième colonne en "Mettre à jour si..." et la liste déroulante dans la ligne "id" en "égal". Cela indique à MapForce de mettre à jour les données dans la base de données pour tout enregistrement où l'identifiant fourni via la correspondance est égal à un identifiant qui existe déjà dans la base de données. C'est tout ce que nous devons faire ici, vous pouvez donc cliquer à nouveau sur OK.
Il est maintenant temps d'intégrer le composant de service web pour appeler l'API OpenAI. Cliquez sur le bouton "Insérer une fonction de service web" dans la barre d'outils. Ensuite, configurez les paramètres d'appel nécessaires pour l'API, en vous basant sur le travail que nous avons effectué précédemment lors des tests de l'API avec XMLSpy.
Comme précédemment, nous devrons configurer la méthode de requête HTTP pour qu'elle soit POST, et les en-têtes doivent inclure notre clé API secrète, ainsi que, éventuellement, l'identifiant de notre organisation. Nous devrons également indiquer à MapForce la structure des données envoyées et reçues, en utilisant les deux schémas JSON que nous avons créés auparavant :

Une fois que cela a été défini, l'objet du service web apparaîtra dans la fenêtre de conception de MapForce, et nous pourrons commencer à connecter les lignes de manière appropriée pour configurer les fonctionnalités. Tout d'abord, nous allons vouloir appeler le service web une fois pour chaque enregistrement dans la table CustomerFeedback, donc nous allons connecter cela à l'entrée "Request" :
![[InsertWebServiceIntoMapping.png]]
Et le résultat sera fourni dans l'attribut "content" du message renvoyé par l'IA, de sorte que nous l'associons à la colonne "sentiment" dans notre objet de base de données de sortie.
Il ne reste plus qu'à connecter tous les autres paramètres de la requête du service web à l'API, et nous pouvons utiliser le fichier JSON d'exemple mentionné précédemment pour savoir exactement quels paramètres sont nécessaires. Beaucoup de ces paramètres seront des constantes, comme "gpt-4" pour le modèle, et diverses valeurs pour les autres paramètres.
L'élément le plus important est la requête initiale, ainsi que les informations provenant de la base de données. Nous les combinons avant de les transmettre à l'entrée de contenu du service web :
![[FinalMapping.png]]
Normalement, c'est à ce stade que nous aurions terminé la conception de notre schéma ETL et que nous pourrions exécuter notre transformation. Cependant, étant donné que GPT-4 est le modèle le plus avancé et que de nombreuses personnes l'utilisent, OpenAI a mis en place des limites de débit pour le nombre de requêtes de services web que vous pouvez envoyer par minute, et nous dépasserions facilement ces limites si nous exécutions cette transformation maintenant.
Par conséquent, nous devons ajouter une courte fonction de pause entre nos appels à l'interface du service web OpenAI afin de séparer ces appels d'environ une seconde. Nous pouvons facilement le faire grâce à la nouvelle fonction intégrée sleep() disponible dans MapForce v2024 :
![[MF-Sentiment-Analysis-With-Sleep.png]]
L'onglet "Aperçu du résultat" dans MapForce vous permet de visualiser le résultat de cette transformation. Une fois que vous cliquez sur cet onglet, MapForce exécutera le projet de mappage ETL et générera les instructions SQL nécessaires pour mettre à jour votre base de données en fonction des résultats de l'analyse de sentiments effectuée par l'IA

Vous pouvez maintenant exécuter ce code SQL directement depuis MapForce afin de mettre à jour les données de votre base de données.
Bien sûr, dans une implémentation réelle, vous souhaiteriez automatiser davantage ce processus afin que les nouvelles demandes de support soient automatiquement analysées. Vous pouvez facilement le faire en déployant ce projet de mappage ETL sur une instance de MapForce Server, soit dans votre infrastructure informatique interne, soit dans votre cloud privé ou public. Ensuite, vous pouvez automatiser les exigences du flux de travail, c'est-à-dire déterminer quand exécuter cette analyse en fonction de certains déclencheurs ou événements, en utilisant FlowForce Server.
Au fait, toutes les captures d'écran de XMLSpy et MapForce présentées dans cet article de blog ont été réalisées en utilisant le nouveau thème sombre, car c'est mon choix personnel, mais vous pouvez bien sûr utiliser nos produits avec le nouveau thème clair, ainsi qu'avec le thème classique, en fonction de vos préférences.
Pour essayer la transformation de données basée sur l'IA dans MapForce ou pour expérimenter avec les API de services web d'IA dans XMLSpy, vous pouvez télécharger une version d'essai gratuite de 30 jours des deux produits, ainsi que plusieurs autres outils utiles pour les développeurs, en téléchargeant la dernière version d'Altova MissionKit depuis notre site web. Nous vous recommandons d'utiliser la version 64 bits de l'édition Enterprise pour tous les travaux liés à l'IA.