This commit is contained in:
Guillaume David 2024-11-17 19:40:44 +01:00
parent 6679b3c86f
commit 85c7d96714
2 changed files with 101 additions and 1 deletions

View File

@ -3,7 +3,9 @@
## Description du PoC ## 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). 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 : 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. - 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 : - 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) ![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. > À 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.

37
parsingDemo.py Normal file
View File

@ -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)