Stage de Robert Hakobyan - UTBM - [04/09/23 au 9/02/24]
Important : cette page est réservée au suivi du stage, merci de ne pas la modifier
Informations générales pour les stagiaires
Pour toute information concernant ce stage : contacter André, Thomas ou Sébastien
Sujet
Chatbot et investigations IA
Le stage porte sur la poursuite du développement du chatbot CDS avec des investigations concernant l'IA
- Objectifs et finalités attendus du stage :
L’objectif du stage est de porsuivre la R&D autour du chatbot en prenant en compte l'avènement des outils d'IA,
ChatGPT et autres
Stage (Septembre 23 - Février 24)
Septembre
Du lundi 4 au vendredi 8 :
- Prise en main du poste de travail
- Installation des différents logicieles que je vais utiliser
- Découverte de Hunggingface
Lundi 11 au vendredi 15 :
- Elaboration du suje que je devrais réaliser
- Chatbot openai -> montrer que ce ne sera pas assez éfficace par rapport à celui déjà existant
- Lécture de Science & pseudo-sciences, sur la partie de l'intéligence artificielle et tous les questionements autour.
- Prise en compte d'autre AI comme LLaMa, AstroLLaMA (spécialisé dans l'astronomie : https://arxiv.org/pdf/2309.06126.pdf ) et Bard
Lundi 18 au mercredi 20 :
- Attente de l'API opena, lecture de la documentation officiel
- Prise en main du chatbot existant avec quelque test
- Prise en main de VizieR et Simbad en lisant la documentation et en effectuant des test avec des requêtes ADQL
Jeudi 21 au
Mardi 26 :
- Apprentisage Node JS via des tutos ainsi que l'utilisation des API
- Lecture de la doc Node JS
- Prise en main de GIT pour les futurs projets
Mercredi 27 au Jeudi 28:
- Récuperation de l'API
- Premier test
- Début de lecture de la documentation + application
Vendredi 29 :
- création d'un bot de conversation qui retient les messages envoyé précedement
- Réunion
Octobre
Lundi 02 :
- Dépot du projet sur gitlab
- Filtre anti-injure (celui proposé par openai)
- Réunion VizieR
Mardi 03:
- Sécurisation de la clé APIavec une variable d'environemment
- Début de reflexion pour l'enregistrement des requêtes ainsi que des réponses avec stockage et affichage de tout l'historique de la conversation pour plus tard pouvoir analyser les données
Mercredi 04:
- Réglage de quelque problème avec gitLab
- Try except pour quitter proprement
- logs des données opérationnelsdans un Json
Jeudi 05:
- Ecriture du readme de bot_basique
- Lecture de la doc sur le Fine-tuning
- Début des premiers tests
Vendredi 06:
- Ajout du compte de token dans bot_basique
- Réunion infusion avec JQ pour manipuler le JSON qui pourrait m'être utile
- AJout d'un deuxième JSON qui à le contexte systeme de la conversation, l'id de la conversation et le nombre total de token pour cette conversation
Lundi 09 et mardi 10:
- Premier test de fin tuning sur un exemple
- Anais m'envoie les requetes pour pour commencer à fine_tuner mon modèle
- Reglage de quelque bugs de compilation
Mercredi 11 et jeudi 12:
- Conversation avec Anais pour avoir les logs. -> On est venu à la conclusion de d'abord regarder si openai pourrait apprendre des erreurs de syntaxe. Mais le fichier receuillant ses erreurs est erroné.
- Début d'apprentisage de la manière de former un URL sur Simbad avec le Fine_tuning.
Vendredi 13:
- Création d'un nouveau model de fin tuning.
- Réflexion (bonne direction d'utiliser openai ou pas)
- Contact par mail de mon prof d'IA pour obtenir des informations
Lundi 16:
- Test des epochs sur différents modèle de fin_tuning
- Réponses pas convaincante (overfitting)
Mardi 17:
- Réunion
- Test de fusion de 2 fine tune (leurs documents JSON)
- Début de récuperation des criteria sur Simbad dans un fichier Json
Mercredi 18:
- Récuperation des données de critères et mise en forme sous forme de Input user/assistant
- Création du fichier d'apprentissage jsonl via un script python
- Essaye d'optimisage des prompts pour avoir le meilleur apprentissage possible
- Création du modele fine tuner
Jeudi 19:
- Test du nouveau modèle
- Recherche d'ajustement pour avoir de meilleur réponse et faire un nouveau fine tuning
- Prise en compte de l'embending et des fonctions sur Openai
Vendredi 20:
- Recherche sur les fonctions de openai
- réalistion de différents test en modifiant le role system pour essayer d'optimiser
Lundi 23:
- Début des test pour les fonctions pour pouvoir extraire les informations importantes de l'utilisateur
Mardi 24 au vendredi 27:
- Fonctions qui trouve les variables donner par l'utilisateur (pour les critères)
- Ajout de cette fonction dans mon bot
- Recherche pour savoir si on peut utiliser les listes de fonctions sous forme d'arbre
- Mise en place de PyCharm avec black et pylint
- Reglage de quelque bug suite à l'implemnation des fonctions ( mauvais enregistrement dans le json, le compte de token qui ne marche pas)
Lundi 30 :
- Reflexion sur l'architecture de mes fonctions (simbad/vizier/aladin --> etc etc)
- Essaye de faire répondre le bot, pas seulement de récupérer les informations
Mardi 31 :
- réalisation de test sur la réponse du bot.
- Essaye d'optimisation sur sa réponse ainsi que ces liens ou requete en essayant de donner le meilleur prompt de contexte possible
Novembre
Jeudi 02 :
- Comparaison des critères existant avec startwith
- Réunion
- Problème de compilation quand on rentre dans la fonction : à régler
Vendredi 03 :
- Changement de méthode de comparaison, utilisation de la distance de Levenschtein pour avoir une meilleur optimisation lors de la comparaison avec les critères existant
- Problème de compilation réglé
Lundi 06 et Mardi 07:
- Ajout des astroquery (criteria içi) après avoir consulté Anaîs
- Réunion avec Thomas et André
- Amélioration du script de comparaison avec Levenschtein
- Programme avec moins de bug (ne fait pas de recherche si l'opérateur n'existe pas)
- Optimisation pour l'utilisateur s'il se trompe de pas beacoup sur le critère, la recherche s'effectu tout de même
- Prise en compte des majuscules et miniscules pour les critères (tout devient des miniscules)
Mercredi 08 :
- Lecture de la doc des nouveautés d'openAI (gpt4-turbo, baisse de prix, fonctions amélioré)
- Applications de certain exemple
- Réglage d'un bug de sélection de critère dans la fonction astro_query
Jeudi 09 :
- Différenciation entre le compte et l'affiche dans les critères avec la création d'une nouvelle fonction + des test réalisés
- Différents essaies pour essayer de faire comprendre au bot quand l'utilisateur utilise un "ou" ou un "et". (ra>150 & ra <200) (ra <150 | ra >200) mais sans encore trouver
Vendredi 10:
- Début du rapport avec la mise en page sous latex
- le count est désormais operationel via une requete web directement grace à la biblliothéque request sous python
Lundi 13 et Mardi 14 :
- Ajout d'Observer dans le code pour rendre le code plus pratique
- Ajout de logger pour mes print
- Suppresion du deuxieme fichier de logs. Organsisation dans un seul JSON, plus complet et pratique
- Correction du code et réorganisation de toutes mes fonctions dans des classes
- Ajout des commentaires
Mercredi 15 :
- Fin de l'ajout des commentaires
- Mise en place des recommendations de pylint pour avoir un code "propre"
- Installation dde l'upgrade d'openAI. Mon ancienne méthode de faire à changé. Utilisation de https://app.grit.io/migrations pour la migration et modification du reste à la main
Jeudi 16 :
- Rajout du nombre de token utilisé par le bot (ne fonctionnait pas avant à cause des fonctions qui renvoyait null)
- package pour les fonctions de de requete simbad séparé en plusieurs fichiers
- Réunion
- Modification de la méthode criteria_count en passant par la VOTable et plus pas le html
Vendredi 17:
- Nettoyage du main pour la lisibilité
- essaye de différentes déscriptions et contexte
Lundi 20:
- Description
- pylint pour un code plus propre
- debut de reflexion sur plusieurs requetes en même temps
Mardi 21:
- Changement de fonctions. Désormais elle prend un tableau de requête contenant un critère, un operateur de réponse et la valeur à filtrer. Puis un tableau contenant une liste d'opérateur. Fonctionne mais se trompe parfois sur les operateurs.
- Début de changement de mes requêtes car maintenant il peut prendre plusieurs requêtes et pas qu'une.
Mercredi 22 et jeudi 23 :
- Changement des fonctions de critères pour qu'il prenne en compte les listes désormais
- Essaye d'optimisage des prompts
- Lecture de la doc sur les files. Et réflexion pour savoir si je dois les ajouter
Vendredi 24:
- Début des test d'ajout des files
- Réglages de quelque bug (majuscule miniscule qui dérangeait les requêtes)
- Rapport
Versions testables
Documentation
Liste des améliorations à envisager
Bugs connus