Architecture d'un modèle de machine learning sans serveur

Cette série d'articles explore l'architecture d'un modèle de machine learning sans serveur dans le but d'enrichir les demandes d'assistance avec des métadonnées avant leur prise en charge par un agent d'assistance.

Vos agents ont besoin d'accéder aux données lors de prises de décisions commerciales pertinentes. Les journaux constituent une bonne source d’informations de base, mais l’ajout de données enrichies change la donne. La mise en œuvre d'un tel système peut s'avérer difficile. Cette série propose une solution possible.

Conditions requises et architecture

La gestion des demandes d'assistance entrantes peut s'avérer compliquée. Avant qu'un agent ne puisse commencer à travailler sur un problème, il doit procéder comme suit :

  • Comprendre le contexte spécifique à la demande d'assistance
  • Déterminer la gravité du problème pour le client
  • Identifier le nombre de ressources à utiliser pour résoudre le problème

Un agent d'assistance reçoit généralement un minimum d'informations de la part du client à l'origine de la demande d'assistance. Souvent, quelques échanges avec le client permettent d’obtenir des informations supplémentaires. Si vous ajoutez des informations automatisées basées sur les données de la demande, vous pouvez aider les agents à prendre des décisions stratégiques au moment de traiter les demandes d'assistance.

En règle générale, un utilisateur enregistre une demande après avoir rempli un formulaire contenant plusieurs champs. Dans ce cas d'utilisation, supposons qu'aucune des demandes d'assistance n'ait été enrichie par le machine learning. Supposons également que le système d'assistance actuel traite les demandes depuis quelques mois.

Pour commencer à enrichir les demandes d'assistance, vous devez entraîner un modèle de machine learning qui utilise des données préexistantes comportant des étiquettes. Dans ce cas, l'ensemble de données d'entraînement est constitué des données historiques issues des demandes d'assistance fermées. Les données dont vous avez besoin se trouvent dans deux types de champs :

  • Les champs d'entrée, qui contiennent des données de formulaire que l'utilisateur remplit.
  • Les champs cibles, qui sont renseignés lors du traitement de la demande.

Lorsqu'elles sont combinées, les données de ces champs donnent des exemples permettant d'entraîner un modèle capable de réaliser des prédictions précises. Les prédictions de ce cas d'utilisation incluent la durée pendant laquelle la demande devrait rester ouverte ainsi que la priorité à lui attribuer.

Cette série explore quatre enrichissements par ML permettant d'atteindre ces objectifs :

  • L'analyse des sentiments en fonction de la description de la demande
  • L'ajout automatique de tags en fonction de la description de la demande
  • La prédiction de la durée de la demande
  • La prédiction de la priorité à attribuer à la demande

Durant le workflow d’enrichissement par ML :

  1. Un utilisateur crée une demande.
  2. La création de demandes déclenche une fonction qui appelle des modèles de machine learning permettant de réaliser des prédictions.
  3. Les données de demande sont enrichies avec la prédiction renvoyée par les modèles de ML.
  4. L'agent d'assistance se sert de la demande d'assistance enrichie pour prendre des décisions efficaces.

Le schéma suivant illustre ce workflow.

Workflow d'enrichissement par ML

Système de gestion des demandes

Que vous décidiez de créer entièrement un système, d'utiliser du code Open Source ou d'acheter une solution commerciale, cet article suppose ce qui suit :

  • Une interface utilisateur de marque destinée aux clients génère des demandes d'assistance. Cette option n'est pas proposée par tous les outils du centre d'assistance. Vous devez donc en créer une à l'aide d'une simple page de formulaire.
  • L'outil du centre d'assistance tiers est accessible via une API RESTful permettant de créer une demande. Cette API permet à votre système de mettre à jour le backend de la demande.
  • Lorsque des événements se produisent, votre système met à jour l'interface utilisateur personnalisée en temps réel.

Firebase constitue un excellent choix pour ce type d'implémentation :

  • Firebase est une base de données en temps réel qu'un client peut mettre à jour et qui affiche les mises à jour en temps réel aux autres clients abonnés.
  • Firebase peut exploiter Cloud Functions pour appeler une API externe, telle que celle proposée par votre plate-forme d'assistance.
  • Firebase fonctionne sur des plates-formes mobiles et de bureau, et peut être développé dans différentes langues. Lorsque Firebase est confronté à des connexions Internet peu fiables, il peut mettre en cache des données localement.

Technologie sans serveur et déclenchement basé sur les événements

La "technologie sans serveur" peut être définie de différentes manières, mais la plupart des descriptions incluent les hypothèses suivantes :

  • Les serveurs doivent constituer un concept distant et invisible pour les clients.
  • Les actions sont généralement effectuées par des fonctions déclenchées par des événements.
  • Les fonctions exécutent des tâches qui sont généralement de courte durée (quelques secondes ou quelques minutes).
  • La plupart du temps, les fonctions ont un seul but.

L'alliance de Firebase et de Cloud Functions permet de simplifier le DevOps en minimisant la gestion de l’infrastructure. Le flux opérationnel fonctionne comme suit :

  1. Vous créez un événement Cloud Function basé sur les mises à jour de la base de données Firebase.
  2. Le client écrit une demande dans la base de données Firebase.
  3. Un déclencheur Cloud Function effectue plusieurs tâches principales :

    • Il exécute les prédictions à l'aide d'algorithmes de machine learning déployés.
    • Il met à jour la base de données en temps réel Firebase avec des données enrichies.
    • Il crée une demande dans votre centre d'assistance avec les données consolidées.

Enrichir les demandes d'assistance

Vous pouvez regrouper les fonctions d'ajout automatique de tags, d'analyse des sentiments, de prédiction de priorité et de prédiction du délai de résolution dans deux catégories. Ces catégories sont basées sur la manière dont les tâches de machine learning sont effectuées :

  • Les fonctions d'analyse des sentiments et d'ajout automatique de tags utilisent des API de machine learning déjà entraînées et développées par Google. Les modèles pré-entraînés permettent moins d'options de personnalisation que les modèles que vous créez, mais ils sont prêts à l'emploi.
  • Pour prévoir le délai de résolution et la priorité des demandes, vous devez créer un modèle ou utiliser des modèles standardisés et les entraîner à l'aide de données personnalisées, telles que les champs d'entrée et les champs cibles.

Analyse des sentiments et ajout automatique de tags

Lors de l'enregistrement d'une demande d'assistance, les agents peuvent s'interroger sur ce que ressent le client. Il peut le découvrir en exécutant une analyse des sentiments sur la description de la demande.

Il est également important d'avoir une idée générale de ce qui est mentionné dans la demande. Lors de la création d'une demande d'assistance, le client fournit généralement certains paramètres sélectionnés dans une liste déroulante. Souvent, des informations supplémentaires sont ajoutées lors de la description du problème. À l'aide d'un outil permettant d'identifier les mots les plus importants de la description, l'agent est capable de déterminer les points clés d'un sujet. Ce processus est défini comme une fonction d'ajout automatique de tags générique.

Les deux solutions sont génériques et faciles à décrire, mais elles sont difficiles à créer de bout en bout. À grande échelle, l'utilisation d'un modèle entraîné puissant pour l'analyse de texte présente de nombreux avantages. Un modèle de ce type réduit le temps de développement et simplifie la gestion des infrastructures.

L’API Cloud Natural Language représente une solution adaptée pour ces deux idées d’enrichissement. Cette API est facilement accessible depuis Cloud Functions en tant qu'API RESTful. L'API Natural Language est un modèle pré-entraîné qui utilise des ensembles de données étendus Google et qui est capable d'effectuer plusieurs opérations :

  • Analyse des sentiments
  • Analyse des entités avec calcul de saillance
  • Analyse syntaxique

Cet article exploite à la fois l'analyse des sentiments et l'analyse des entités. Vous gérez l'ajout automatique de tags en conservant les mots avec une saillance supérieure à un seuil défini par l'utilisateur.

Si vous souhaitez un modèle capable de renvoyer automatiquement des tags spécifiques, vous devez créer et entraîner un modèle de traitement du langage naturel (NLP). Cette approche est adaptée à tous types de tags, car l’objectif consiste à analyser rapidement la description et non à classer complètement la demande.

Prédire le délai de résolution et la priorité des demandes

Le délai de résolution d'une demande et son ordre de priorité dépendent des entrées (champs de la demande) spécifiques à chaque système d'assistance. Ainsi, vous ne pouvez pas utiliser de modèle pré-entraîné comme pour l'ajout de tags et l'analyse des sentiments de la langue anglaise. Vous devez entraîner vos propres fonctions de machine learning.

Bien que le workflow permettant de prévoir le délai de résolution et la priorité soit similaire, les deux actions correspondent à deux types de valeurs différentes :

  • Le délai de résolution est une valeur continue.
  • La priorité comprend plusieurs options prédéfinies en fonction du système d'assistance.

Dans la section sur le machine learning de la page "Améliorer les demandes de support avec le machine learning sans serveur", on explique comment résoudre ces deux problèmes par la régression et la classification.

Choisissez une architecture vous permettant d'effectuer les tâches suivantes :

  • Entraîner les modèles avec des données personnalisées
  • Déployer des modèles et les rendre disponibles en tant qu'API RESTful pour votre fonction Cloud Functions
  • Adapter des modèles si nécessaire

Cloud Datalab est un outil géré par Google qui exécute des notebooks Jupyter dans le cloud. Cloud Datalab s'intègre à d'autres produits Google Cloud Platform (GCP). Cloud Datalab peut également exécuter ML Workbench (consultez des exemples de notebooks ici) ainsi qu'une bibliothèque Python facilitant l'utilisation de deux technologies clés : TensorFlow et AI Platform.

Les fonctionnalités de TensorFlow incluent les éléments suivants :

  • Les graphiques créés par TensorFlow (exécutables) sont portables et peuvent être exécutés sur plusieurs composants matériels.
  • L'API Estimator vous permet d'utiliser des modèles prédéfinis ou personnalisés. Cet article utilise ML Workbench, qui rend accessibles des concepts tels que le mappage de données à un modèle.
  • La fonctionnalité Test vous permet de créer un modèle, de l'entraîner et de l'évaluer dans un environnement distribué.

AI Platform est un service géré capable d'exécuter des graphiques TensorFlow. Le service simplifie les tâches de machine learning suivantes :

  • L'entraînement de modèles dans un environnement distribué avec un minimum de DevOps
  • L'intégration à d'autres produits GCP
  • Le réglage des hyperparamètres pour améliorer l'entraînement des modèles
  • Le déploiement de modèles en tant qu'API RESTful pour réaliser des prévisions à grande échelle

ML Workbench utilise l'API Estimator en arrière-plan, mais simplifie une grande partie du code réutilisable lors de la résolution de problèmes liés à la prédiction de données structurées. L'API Estimator ajoute plusieurs options intéressantes, telles que le croisement des caractéristiques, la discrétisation permettant d'améliorer la précision et la possibilité de créer des modèles personnalisés. Toutefois, le cas d'utilisation actuel ne nécessite qu'un régresseur et un classificateur, avec peu de besoins en extraction de caractéristiques. Cette approche s'adapte parfaitement aux fonctionnalités de ML Workbench, qui acceptent également l'entraînement distribué, la lecture de données par lots et le scaling en fonction des besoins à l'aide d'AI Platform.

Selon le niveau de compréhension de TensorFlow et du codage que vous souhaitez acquérir, vous pouvez choisir entre ML Workbench ou l'API Estimator TensorFlow. Le reste de cette série porte sur ML Workbench, car l'objectif principal est d'apprendre à appeler des modèles de ML dans un environnement sans serveur. La série offre des informations supplémentaires sur TensorFlow et AI Platform.

Effectuer la synchronisation avec la plate-forme d'assistance

La synchronisation entre les deux systèmes s'effectue dans les deux sens :

Sortie
Lorsqu'un client ouvre ou met à jour une demande, Cloud Functions déclenche une écriture Firebase. Cloud Functions met également à jour la plate-forme d'assistance tierce en appelant son API RESTful.
Entrée
Lorsqu'un agent se sert de la plate-forme d'assistance pour mettre à jour une demande, celle-ci déclenche son propre événement et appelle un gestionnaire HTTP de Cloud Functions, qui effectue une mise à jour en temps réel de Firebase et de l'interface utilisateur du client.

Architecture

L'architecture présente le flux suivant :

  1. Un utilisateur écrit une demande à Firebase, ce qui déclenche une fonction Cloud.
  2. La fonction Cloud appelle trois points de terminaison différents permettant d'enrichir la demande :

    • Un point de terminaison AI Platform, où la fonction peut prédire la priorité.
    • Un point de terminaison AI Platform, où la fonction peut prédire le délai de résolution.
    • L'API Natural Language pour l'analyse des sentiments et la saillance des mots.
  3. Pour chaque réponse, la fonction Cloud met à jour la base de données en temps réel Firebase.

  4. La fonction Cloud crée ensuite une demande sur la plate-forme d'assistance à l'aide de l'API RESTful.

Cette architecture est décrite dans le schéma suivant.

Architecture sans serveur

Étapes suivantes