Dans le précédent billet, nous avons pu voir que
chatGPT n’est pas si magique que cela. En effet, il ne suit pas forcément les
bonnes pratiques et surtout ne propose pas toujours les solutions adaptées. La
plus grosse difficulté est de trouver quelles informations lui fournir pour
qu’il produise du contenu proche d’une solution acceptable.
Dans ce billet, je vais chercher des solutions pour fournir à chatGPT un
template correspondant à mon besoin avec les options que j’attends et respectant
l’utilisation des FQCN.
Comment stocker les templates ?
L’idée est de décrire les taches avec des phrases proches du langage naturel.
Ex: Copy a file /path/to/test to the path /path/to/ with mode 0666 owner test
group tests.
J’ai constitué une base de données regroupant tous les modules Ansible indexés
sur leur phrase de description. Pour constituer cette base, j’utilise mon outil
qui génère les snippets vscode.
Exemple de template :
Et non ce n’est pas une base de données, mais un simple fichier json. Pour info
mon fichier contient 650 templates regroupant les collections ansible les plus
courantes.
Comment identifier le bon template ?
Maintenant que j’ai constitué ma base de templates, je dois trouver une solution
permettant de trouver une similarité entre la phrase décrivant la tache et celle
des modules.
Je me suis tourné vers Gensim, une bibliothèque logicielle Python de topic modelling.
On lance notre premier test en ciblant le module ansible ci-dessus.
Bingo c’est le résultat attendu. Le plus long va être de corriger les
descriptions de tous mes modules.
On enrichit notre demande à ChatGPT
Maintenant le code minimal pour poser une question à chatGPT :
On lance notre premier test :
Nickel, il respecte les FQCN, fourni les options attendues.
Un autre exemple :
La suite
Bon, j’obtiens des résultats satisfaisants. On va passer au développement d’une
CLI prenant soit une tache, soit une liste de tâches via un fichier.
Ce fichier est une suite de taches et de blocks Ansible. J’utiliserai ce format :
J’ai déjà bien avancé et je publierai la cli d’ici à quelques jours. Le temps de corriger quelques
bugs et renforcer le fonctionnement. A bientôt…