Chatbot
Chatbot Lacier : Explication Détaillée du Code et de l'IA
Introduction
Le chatbot Lacier est conçu pour interagir avec les utilisateurs, fournir des informations sur les produits de signalétique et suivre les commandes. Il utilise Flask pour gérer le backend, SQLAlchemy pour la base de données, et OpenAI pour l'intelligence artificielle. De plus, le bot utilise des appels API vers PrestaShop pour accéder aux informations de commande et de client.
Intelligence Artificielle Utilisée
Le modèle d'IA utilisé dans le chatbot est le modèle Llama-3.1-Nemotron-70B-Instruct d'OpenAI, spécifiquement configuré pour fournir des réponses structurées et précises dans le domaine de la signalétique. Ce modèle est un LLM (Large Language Model) capable de comprendre et de générer du texte en fonction de prompts.
1. Structure du Code
Fichier Principal : app.py
app.py
Importations et Bibliothèques
Les principales bibliothèques incluent :
subprocess pour exécuter des commandes en ligne de commande.
Flask pour le framework web.
SQLAlchemy pour l'interaction avec la base de données PostgreSQL.
openai pour l'accès au modèle d'intelligence artificielle.
Threading et datetime pour la gestion de l'historique des conversations.
Initialisation de Flask et Configuration de la Base de Données
L'application utilise Flask et SQLAlchemy pour gérer la base de données PostgreSQL qui stocke l'historique des conversations.
2. Structure de la Base de Données et Gestion de la Mémoire
Modèle ConversationHistory
ConversationHistory
Chaque conversation est stockée dans la base de données avec :
client_uuid
: identifiant unique de chaque utilisateur pour suivre ses conversations.message_role
: identifie si le message vient de l'utilisateur ou de l'assistant.message_text
: contenu du message.created_at
: date et heure de la création du message.
Gestion de la Mémoire
Pour permettre à l'IA de "se souvenir" des échanges récents :
Stockage dans la Base de Données : Chaque message est enregistré en base, permettant de retrouver le contexte d'une conversation spécifique.
Historique Temporaire : En mémoire, un historique limité de messages est conservé pour chaque utilisateur via le dictionnaire
conversation_histories
.
Nettoyage des Conversations Inactives : Une fonction périodique nettoie les conversations inactives de plus de 30 minutes.
3. Intégration et Fonctionnement de l'IA
API OpenAI
La configuration de l'API OpenAI est effectuée avec la clé API et le modèle nvidia/Llama-3.1-Nemotron-70B-Instruct
.
Prompt de l'IA et Messages Systèmes
L'IA est guidée par un prompt système (SYSTEM_MESSAGE) qui fournit des instructions spécifiques. Cela garantit que les réponses sont cohérentes et adaptées au contexte de la signalétique.
Fonction de Communication avec l'IA
La fonction create_chat_completion
envoie l'historique des messages (limité par MAX_MESSAGES
) à l'API OpenAI et retourne la réponse générée.
4. Gestion des Images Associées aux Réponses de l'IA
Pour certaines réponses, l'IA peut ajouter des balises [IMAGE:nom_image]
dans son texte, correspondant à des mots-clés définis dans le dictionnaire keyword_image_map
.
La fonction extract_images_from_message
identifie les balises [IMAGE:nom_image]
dans le texte et extrait les URLs des images correspondantes.
5. Intégration avec PrestaShop
Le chatbot récupère des informations sur les commandes et les clients en utilisant l'API de PrestaShop. Les configurations API pour deux sites sont définies dans API_CONFIGS
.
Fonctions d'Appel API
fetch_order_by_reference
: Récupère les informations d'une commande en utilisant son numéro.fetch_customer_by_id
: Récupère les informations d'un client.fetch_order_status_name
: Récupère le statut de la commande.
Parsing XML pour Extraire les Données
Les fonctions parse_order_xml
, parse_customer_xml
, et parse_order_status_xml
extraient les informations pertinentes du XML retourné par PrestaShop.
6. Interface Utilisateur (HTML et JavaScript)
Le fichier HTML chat_ai.html
gère l'interface utilisateur avec deux modes :
Mode IA pour les questions générales.
Mode Commande pour le suivi des commandes.
Le JavaScript gère l'affichage des messages, le mode de sélection et l'envoi des requêtes à Flask.
Exemple de Fonction JavaScript pour Envoyer un Message
7. Surveillance et Maintenance
Commandes de Démarrage et Surveillance
Pour exécuter le chatbot en production, gunicorn
est utilisé avec nohup
pour exécuter le processus en arrière-plan.
Les services Nginx et Gunicorn peuvent être surveillés avec systemctl
pour assurer qu'ils fonctionnent correctement.
Last updated