ChatGPT au service du No code pour structurer des données et décupler vos possibilités d'automatisation
L'atout majeur de ChatGPT est sa capacité à rédiger des contenus non structurés (qui imite parfaitement l'interaction humaine) à partir de n'importe quelle entrée. C'est l'utilisation principale de ChatGPT et ce qui en fait sa renommée. Voyons quelques exemples pour mieux comprendre : Si je veux que ChatGPT m'explique à quoi sert un bloc de code, j'ai juste à lui demander "A quoi sert ce code?" Je veux un compte rendu d'une réunion à partir de prises de notes, je lui envoie mes notes et je lui demande naïvement "Fais moi un résumé à partir de ces notes". Je veux qu'il me rédige un post Linkedin pour cet article, je lui donne un peu de contexte et je lui demande de me rédiger le post 🤓. Personnellement, ce qui m'a le plus fasciné, ce n'est pas la qualité de la réponse qu'il m'apportait lorsque j'écrivais mes prompts, mais plutôt sa capacité à comprendre l'input que je lui envoyais. C'est dans ce contexte que je me suis posé cette question : Si ChatGPT est capable de comprendre n'importe quel input texte, est-il capable de me renvoyer des données structurées au format que je souhaite à partir de données hétérogènes en entrée ?
1- De nouvelles frontières
Chez Gojob, nous avons développé notre expertise NoCode autour de l'automatisation. Nous apportons de la valeur en connectant différents outils et services grâce aux API. Nous manipulons ensuite les données, les restructurons et créons des comportements spécifiques pour résoudre nos problématiques.
Lorsque l'on souhaite intégrer un nouveau service à nos automatisations, le premier réflexe est de vérifier si ce service possède une API. L'existence de l'API peut conditionner la faisabilité de l'automatisation. On peut également récupérer d'autres entrées telles que des e-mails et utiliser des expressions régulières pour extraire les informations de ces e-mails si leur format est toujours identique. Si l'entrée de notre automatisation n'est pas structurée, nous ne pouvons pas l'automatiser. Nous sommes donc limités dans les problématiques que nous pouvons traiter. Grâce à ChatGPT, nous pourrons dépasser ces limites. Nous savons que l'IA sera capable de comprendre n'importe quelle entrée tant qu'elle est compréhensible. Nous pourrons alors demander à ChatGPT de créer une version structurée de cette entrée afin qu'elle corresponde à ce que nous attendons pour notre automatisation. Cela nous permettra d'ajouter une infinité de nouvelles interactions dans nos automatisations. Vous imaginez les possibilités ?
2- Quand le produit s'adapte à l'utilisateur
Pour expliquer comment transformer une entrée quelconque en entrée structurée avec ChatGPT, prenons un exemple concret. Nous travaillons avec des clients qui sont peu ou pas digitalisés. Lorsqu'ils ont des besoins en intérim, c'est-à-dire qu'ils ont besoin de travailleurs, ils contactent leurs interlocuteurs chez Gojob pour exprimer leur besoin. Généralement, ils le font par mail. Ce mail n'a pas de structure fixe, il s'agit d'un texte simple. Dans leur expression de besoin, tous les clients fournissent généralement les mêmes informations. Gojob doit ensuite créer la commande en se basant sur les informations dans le mail.
Exemple : Il serait possible de créer une automatisation pour récupérer toutes les informations de chaque email de chaque client et structurer l'ensemble des données. Cependant, dans le cadre de cet exemple, nous allons nous concentrer sur une seule information complexe : les horaires de travail de l'intérimaire pour sa mission. Cela comprend les heures théoriques pendant lesquelles il travaillera.
Voici quelques exemples d'inputs non structurés que nous recevons par e-mail.
- Lundi Mardi de 9h à 11h et 12h 16h, jeudi de 16h à 21h
- Du lundi au vendredi de 7h à 14h, repos jeudi
- Uniquement le weekend samedi 6h 14h dimanche matin de 7h à midi.
Sympa non?
L'output final attendu par notre BackOffice se présente comme ceci : Ce JSON contient une liste d'objets "hourlyCycle", qui représentent les cycles horaires pour différentes périodes de la semaine. Chaque objet "hourlyCycle" a deux propriétés : "ranges" et "week".
La propriété "ranges" contient une liste d'objets "from" et "to", qui représentent les heures de début et de fin de chaque plage horaire pour le cycle. Par exemple, le premier objet "ranges" dans le premier objet "hourlyCycle" représente une plage horaire allant de 9h à 11h et une autre plage horaire allant de midi à 16h.
La propriété "week" contient une liste de sept valeurs booléennes, représentant les jours de la semaine. Si la valeur est "true", cela signifie que le cycle horaire est actif pour ce jour de la semaine, et s'il est "false", cela signifie qu'il est inactif. Par exemple, dans le premier objet "hourlyCycle", le cycle horaire est actif du lundi au mercredi. (Cette description a été généré par ChatGPT 🤓)
{
"hourlyCycle": [
{
"ranges": [
{
"from": "09:00",
"to": "11:00"
},
{ "from": "12:00", "to": "16:00" }
],
"week": [true, true, false, false, false, false, false]
},
{
"ranges": [{ "from": "16:00", "to": "21:00" }],
"week": [false, false, false, true, false, false, false]
}
]
}
3- Comment dompter ChatGPT
Dans notre cas d'usage, on attend plusieurs choses de ChatGPT :
- On veut que ChatGPT comprenne l'information qu'on lui envoie. C'est à dire qu'il comprenne qu'on parle de cycle horaire. Qu'il identifie les jours concernés et les heures associées à chaque jour.
- On veut que ChatGPT soit capable de me donner les données identifiées au format souhaité, c'est à dire à un format que Make comprend. Le JSON.
- On veut aussi que notre JSON respecte une structure spécifique que notre BackOffice comprend.
Sans chatGPT
Avec ChatGPT
Lorsque vous appelez l'API ChatGPT, vous pouvez configurer le rôle que l'IA aura lors d'une interaction. Le rôle "Système" nous intéresse particulièrement, car il nous permet de donner des instructions à ChatGPT. Nous allons donc lui donner les instructions suivantes :
- Du contexte pour améliorer sa compréhension du besoin et limiter les erreurs
- Un modèle. Dans notre cas, on veut que la donnée soit structurée spécifiquement d'une certaine façon.
- Un exemple. On peut lui donner un exemple d'input avec l'output associé.
Lors de la configuration de l'appel API, nous allons d'abord configurer ce rôle. Le but est de lui donner un maximum d'informations en étant le plus précis possible pour limiter les erreurs. Nous pouvons définir son comportement s'il ne trouve pas de données, ainsi que le type de chaque clé de notre JSON. Vous pouvez aussi déterminer des valeurs par défaut si des informations sont manquantes dans votre demande. Vous pouvez bien sûr utiliser ChatGPT pour rédiger ce prompt 🤓.
Voici un exemple d'un prompt assez simple avec des instructions basiques et un modèle.
System :
Input :
Output :
Comme vous pouvez le constater, l'IA n'a commis aucune erreur. Elle a suivi les instructions et le message était relativement bien formulé, ce qui a permis à ChatGPT d'extraire facilement les données et de générer le JSON attendu avec les valeurs correctement positionnées. Il a même été capable de comprendre que nous souhaitions un tableau pour chaque tranche horaire, et a adapté la structure du modèle JSON en conséquence.
Mais alors, comment aurions-nous pu identifier une erreur dans le JSON généré ? Imaginons qu'il se trompe de jour et nous donne sa réponse comme si de rien n'était. Il nous faut trouver un moyen d'identifier quand il se trompe, car il a l'air relativement sûr de lui lorsqu'il nous apporte des réponses.
4- Peut on avoir confiance?
On ne peut pas avoir confiance en l'IA. Il est essentiel de ne pas laisser l'automatisation agir sans contrôle. Dans un cadre professionnel, cela pourrait avoir un impact désastreux. Par conséquent, nous avons décidé de mettre en place un certain nombre de règles pour encadrer le comportement de l'automatisation par rapport à celui de l'IA.
"La chose la plus importante n'est pas d'éviter que l'IA se trompe, mais qu'il soit possible d'identifier quand elle se trompe, afin de pouvoir adapter le comportement de nos automatisations."
Parmi les comportements de vérification qu'on a commencé à tester :
- On peut demander à l'IA de comparer l'output obtenu à l'input afin qu'il puisse valider si les 2 correspondent.
- On peut créer une boucle pour que notre automatisation s'exécute deux fois. Si les deux sorties ne sont pas identiques c'est que notre donnée n'est pas fiable.
- Il est possible de demander à ChatGPT de s'évaluer sur sa capacité à répondre aux exigences de notre prompt.
- On peut utiliser les paramètres "Top P" et "Température" pour arbitrer la prise de risque de l'IA
L'analyse qualitative de l'input est un comportement très puissant. Voici un exemple sur une configuration possible de cette analyse qualitative :
System :
input : ( Je n'ai pas préciser les horaires du vendredi matin )
output :
Dans cet exemple, je donne à ChatGPT une consigne différente mais les mêmes types d'entrées que dans l'automatisation initiale. Je demande à l'IA de me donner un score et un commentaire. Le score me permettra d'adapter le comportement de mon automatisation. Par exemple, si le score obtenu est inférieur à 7, je n'effectue pas le cycle horaire et j'avertis le bon interlocuteur pour une saisie manuelle. Si un commentaire est présent, je génère le cycle horaire mais je notifie le bon interlocuteur en lui envoyant le commentaire pour une vérification manuelle ciblée sur la zone de doute de l'IA.
Conclusion
Alors que le No Code a permis de rendre la technologie plus accessible, nous nous rendons désormais compte qu'en mettant l'IA au service de ces outils, nous entrons dans une autre dimension. Nous pouvons désormais faire communiquer des outils numériques avec des environnements non structurés, ce qui ouvre une infinité de nouvelles possibilités et de nouvelles interactions. De plus, ces outils étant amenés à évoluer, nous ne sommes qu'au début de ce que nous pouvons faire.
Les deux principaux enjeux qui nous permettront de tirer profit de ces nouvelles technologies sont notre capacité à les contrôler à travers des méthodologies et notre capacité à interpréter les résultats pour identifier les comportements non souhaités et les erreurs. Ce qui est formidable, c'est que pour répondre à ces deux enjeux, il faut tester beaucoup de choses, itérer et apprendre de ces outils. Le no-code crée un cadre parfait pour cela.