diff --git a/README.md b/README.md index e795b41..df9812f 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,9 @@ ## Description du PoC Ce projet se concentre sur la mise en place d'un PoC visant à déclencher des actions concrètes à partir d'un NLP/LLM, afin d'exécuter des tâches spécifiques en fonction de l'intention par déclenchement (scripts python). -## Objectif du projet +Une deuxième partie du PoC se concentre sur la présentation d'un modèle pour analyser des données non structurées source par un LLM et les convertir en un format JSON pour du parsing. + +## Objectif du projet (première partie) L'objectif est de communiquer avec un chatbot sous l'environnement Rasa, permettant : - La communication avec le LLM Llama3 (installé en local au travers de Ollama) lors d'une communication générale. - Le déclenchement d'actions Python (scripts) lorsque les intentions suivantes sont reconnues : @@ -356,3 +358,64 @@ Cette commande : ![chatbot_test](./doc_assets/chatbot_test.png) > À noter qu'une des fonctionnalités d'un NLU est l'automatisation et la transparence de la langue. C'est pourquoi la question en anglais est comprise, même si l'intention est en français. + +## Objectif du projet (deuxième partie) +Cette deuxième partie se concentre sur un PoC de parsing de données non structurées en JSON à l'aide du LLM. Les informations sur les cours, présentées sous forme de texte naturel, doivent être comprises et mises en relation avec un modèle JSON fourni en prompt, accompagné d'un guide expliquant ce que doit faire le LLM. Le LLM doit alors générer uniquement un JSON en sortie. + +### Code Python +```python + import openai + +# API OpenAI +client = openai.Client(api_key='XXXXXXXXX') + +# Texte à convertir en JSON +text = 'Le cours "Python ML Avancé" est un programme dédié à l\'apprentissage du Machine Learning et de la régression en Python, proposé chaque lundi. Il est recommandé d\'avoir une bonne maîtrise des bases du Python et du Machine Learning débutant. Le tarif du cours est de 1000 euros.' + +# Modèle JSON +model = ''' +{ + "name": "Data Science avec Python", + "description": "Cours introductif sur l'analyse de données et les bases du machine learning avec Python", + "day": "Mercredi", + "prerequest": "Aucun prérequis nécessaire", + "price": 800 +} +''' + +# Appel de l'API OpenAI +response = client.chat.completions.create( + model="gpt-3.5-turbo", + messages=[ + { + "role": "system", + "content": f"Convert this text {text} according to this JSON model: {model}", + }, + { + "role": "system", + "content": "Give only the output without text or explanation, I will use it in a JSON parser.", + } + ], + max_tokens=2000, +) + +# Affichage de la réponse +print(response.choices[0].message.content) + +``` +Pour teser le projet, exécuter la commande suivantes : +```sh +python parsingDemo.py +``` +Après exécution par le LLM, la sortie générle est la suivante : + +```sh +{ + "name": "Python ML Avancé", + "description": "Cours dédié à l'apprentissage du Machine Learning et de la régression en Python", + "day": "Lundi", + "prerequest": "Bonne maîtrise des bases du Python et du Machine Learning débutant recommandée", + "price": 1000 +} +``` +> Il est crucial de bien guider le prompt afin d'éviter toute interférence lors du parsing. \ No newline at end of file diff --git a/parsingDemo.py b/parsingDemo.py new file mode 100644 index 0000000..57a8eec --- /dev/null +++ b/parsingDemo.py @@ -0,0 +1,37 @@ +import openai + +# API OpenAI +client = openai.Client(api_key='XXXXXXXXX') + +# Texte à convertir en JSON +text = 'Le cours "Python ML Avancé" est un programme dédié à l\'apprentissage du Machine Learning et de la régression en Python, proposé chaque lundi. Il est recommandé d\'avoir une bonne maîtrise des bases du Python et du Machine Learning débutant. Le tarif du cours est de 1000 euros.' + +# Modèle JSON +model = ''' +{ + "name": "Data Science avec Python", + "description": "Cours introductif sur l'analyse de données et les bases du machine learning avec Python", + "day": "Mercredi", + "prerequest": "Aucun prérequis nécessaire", + "price": 800 +} +''' + +# Appel de l'API OpenAI +response = client.chat.completions.create( + model="gpt-3.5-turbo", + messages=[ + { + "role": "system", + "content": f"Convert this text {text} according to this JSON model: {model}", + }, + { + "role": "system", + "content": "Give only the output without text or explanation, I will use it in a JSON parser.", + } + ], + max_tokens=2000, +) + +# Affichage de la réponse +print(response.choices[0].message.content)