Agent Chatbot Intelligent - StockBot¶
Vue d'ensemble¶
L'application de gestion de stock intègre un agent chatbot intelligent nommé StockBot, un assistant virtuel avancé basé sur l'intelligence artificielle conçu pour révolutionner l'interaction utilisateur avec le système de gestion d'inventaire.
Présentation générale¶
StockBot est un assistant conversationnel sophistiqué qui transforme l'expérience utilisateur en permettant des interactions naturelles et intuitives avec la base de données des produits. Développé par Hinimdou Morsia Guitdam, cet agent représente une innovation majeure dans le domaine de la gestion de stock marocaine.
Objectif principal¶
Fournir une interface conversationnelle intelligente qui permet aux utilisateurs de : - Interroger le catalogue de produits en langage naturel - Obtenir des informations en temps réel sur les stocks - Recevoir des recommandations personnalisées - Générer des rapports automatisés - Gérer les interactions client de manière proactive
Architecture technique¶
Technologies de base¶
L'agent repose sur une stack technologique moderne et robuste :
| Technologie | Rôle | Version/Modèle |
|---|---|---|
| LangChain | Framework d'orchestration d'agents IA | Dernière version stable |
| LangGraph | Gestion des workflows et états | Intégré avec LangChain |
| Groq | Service d'IA pour le NLP | Llama 3.3-70b-versatile |
| Django | Framework web et ORM | Compatible avec le projet |
| Python | Langage de programmation | 3.8+ |
Schéma architectural¶
Voici la représentation visuelle de l'architecture de StockBot :

⚠️ Architecture modulaire : StockBot est conçu selon une architecture modulaire permettant une séparation claire des responsabilités : traitement du langage naturel, orchestration des tâches, interaction avec la base de données, et gestion des sessions utilisateur.
Structure modulaire¶
L'architecture de StockBot suit une approche modulaire pour garantir la maintenabilité et l'évolutivité :
StockBot/
├── agent.py # Cœur de l'agent et logique principale
├── tools.py # Outils spécialisés pour les interactions DB
├── prompts.py # Prompts système et instructions
├── memory.py # Gestion de la mémoire des sessions
└── __init__.py # Initialisation du module
1. Module Agent (agent.py)¶
Le fichier agent.py constitue le cerveau de StockBot :
- Configuration environnementale : Chargement des clés API et paramètres
- Initialisation du modèle : Configuration de ChatGroq avec paramètres optimaux
- Définition d'état : Structure TypedDict pour la gestion des conversations
- Workflow LangGraph : Graphe d'état pour l'orchestration des interactions
- Sécurité : Limitation des appels d'outils (MAX_STEPS = 10)
2. Module Outils (tools.py)¶
Le fichier tools.py définit les fonctions spécialisées :
- rechercher_produits() : Recherche intelligente avec scoring
- lister_tous_les_produits() : Catalogue complet
- lister_categories() : Gestion des catégories
- produits_en_rupture() : Alertes stock
- conseiller_produits() : Recommandations personnalisées
- details_produit() : Informations détaillées
- statistiques_produits() : Rapports et métriques
3. Module Prompts (prompts.py)¶
Le fichier prompts.py contient les instructions système :
- SYSTEM_PROMPT : Règles de comportement et contraintes
- Règle absolue : Obligation d'utiliser les outils
- Gestion des plaintes : Protocoles de support client
4. Module Mémoire (memory.py)¶
Le fichier memory.py gère la persistance des conversations :
- session_memories : Dictionnaire en RAM pour stocker l'historique
- ChatMessageHistory : Utilisation de LangChain pour la gestion des messages
- Limitation : Maximum 20 messages par session pour optimisation
- Nettoyage automatique : Suppression des anciens messages au-delà de la limite
Note : Ce système de mémoire personnalisé complète le MemorySaver de LangGraph pour une gestion fine des sessions utilisateur.
Fonctionnement interne¶
Cycle de conversation¶
Chaque interaction avec StockBot suit un cycle précis :
- Réception du message : Analyse de la requête utilisateur
- Appel du modèle : Traitement par Groq pour compréhension
- Déclenchement d'outils : Exécution des fonctions spécialisées
- Synthèse des résultats : Formulation de la réponse finale
- Mémorisation : Sauvegarde de l'état conversationnel
Gestion d'état avec LangGraph¶
StockBot utilise LangGraph pour maintenir l'état des conversations :
class AgentState(TypedDict):
messages: List[HumanMessage | AIMessage | ToolMessage]
session_id: str
Cette structure permet : - Persistance : Conversations continues - Contexte : Mémorisation des échanges précédents - Session : Isolation des utilisateurs
Sécurité et contraintes¶
Pour garantir la fiabilité :
- Limitation d'appels : Maximum 10 étapes par conversation
- Validation stricte : Toutes les données proviennent de la DB
- Anti-hallucination : Interdiction de créer des informations
- Gestion d'erreurs : Messages explicites en cas de problème
Fonctionnalités détaillées¶
Vue d'ensemble des fonctionnalités¶
Voici un aperçu visuel des principales fonctionnalités offertes par StockBot :

📋 Fonctionnalités principales : StockBot offre une gamme complète d'outils pour la gestion interactive du stock, allant de la recherche intelligente aux recommandations personnalisées, en passant par la gestion des feedbacks clients.
1. Recherche et consultation¶
Recherche intelligente¶
- Algorithme de scoring : Pondération par pertinence
- Normalisation : Gestion des accents et casse
- Filtrage avancé : Mots-clés importants uniquement
Consultation de produits¶
- Détails complets : Prix, stock, description, image
- Liens directs : URLs générées dynamiquement
- Format structuré : Présentation claire et lisible
2. Gestion du stock¶
Alertes automatiques¶
- Rupture de stock : Produits indisponibles (stock = 0)
- Stock faible : Produits critiques (stock ≤ 10)
- Statuts visuels : Indicateurs colorés (🟢/🟡/🔴)
Rapports statistiques¶
- Métriques globales : Nombre total de produits
- Analyse par catégorie : Répartition des stocks
- Tendances : Évolution des niveaux de stock
3. Recommandations personnalisées¶
Conseils budgétaires¶
- Filtrage par prix : Produits dans une fourchette donnée
- Optimisation : Meilleurs rapports qualité/prix
Suggestions alternatives¶
- Substitution intelligente : Produits similaires disponibles
- Logique métier : Basée sur les catégories et caractéristiques
4. Support client intégré¶
Gestion des feedbacks¶
- Enregistrement automatique : Stockage en base de données
- Classification : Plaintes, suggestions, compliments
Réponses automatisées¶
- Questions fréquentes : Base de connaissances intégrée
- Escalade intelligente : Redirection vers support humain si nécessaire
Exemples d'utilisation¶
Scénarios simples¶
Utilisateur : "Quels produits avez-vous en électronique ?" StockBot : Liste des produits électroniques avec stocks et prix
Utilisateur : "Avez-vous du Coca-Cola ?" StockBot : Confirmation de disponibilité + détails + lien
Scénarios complexes¶
Utilisateur : "produits de chaque catégorie"
Étape 1 : Lister toutes les catégories
Étape 2 : Pour chaque catégorie, rechercher les produits
Étape 3 : Synthétiser les résultats par catégorie
Utilisateur : "quel est le produit le moins cher en électronique ?"
Étape 1 : Rechercher produits "électronique"
Étape 2 : Trier par prix croissant
Étape 3 : Retourner le premier résultat
Intégration dans l'application¶
Interface utilisateur¶
Le chatbot est intégré dans l'interface web Django :
- Widget de chat : Interface conviviale
- Messages en temps réel : Réponses instantanées
- Historique : Conservation des conversations
- Responsive : Compatible mobile et desktop
API et endpoints¶
- Endpoint principal :
/chatbot/api/ - Méthode : POST avec JSON payload
- Paramètres : message (requis)
- Réponse : JSON avec champ 'response'
- Authentification : Session Django (utilisateur connecté requis)
Configuration¶
Variables d'environnement requises :
GROQ_API_KEY=your_api_key_here
GROQ_MODEL=llama-3.3-70b-versatile
GROQ_TEMPERATURE=0.2
BASE_URL=http://127.0.0.1:8000
Modèles de données¶
L'agent utilise plusieurs modèles Django pour la persistance :
ChatConversation¶
- user : Utilisateur authentifié (optionnel pour utilisateurs anonymes)
- session_id : Identifiant de session unique (100 caractères max)
- message : Message complet de l'utilisateur (TextField)
- response : Réponse de l'agent (TextField, tronquée à 2000 caractères)
- is_feedback : Indicateur boolean pour classifier les feedbacks
- feedback_type : Type de feedback (complaint, suggestion, question, other)
- created_at : Timestamp automatique de création
Gestion des feedbacks¶
- Classification automatique : Système de types de feedback prédéfinis
- Historique complet : Toutes les conversations sont tracées
- Administration : Interface Django pour consulter et gérer les conversations
- Analytics : Possibilité d'analyser les patterns d'utilisation
Sécurité des sessions¶
- Session Django : Utilisation du système de session de Django
- Isolation : Chaque utilisateur a sa propre session
- Expiration : Sessions expirées automatiquement
- Authentification : Liaison avec l'utilisateur connecté
Avantages et bénéfices¶
Pour les utilisateurs¶
- Accessibilité : Interface intuitive sans formation
- Rapidité : Réponses instantanées
- Précision : Données toujours à jour
- Disponibilité : 24/7 sans intervention humaine
Pour l'entreprise¶
- Réduction de charge : Automatisation des requêtes simples
- Amélioration du service : Réponses cohérentes et rapides
- Collecte de données : Insights sur les demandes clients
- Scalabilité : Gestion simultanée de multiples conversations
Limitations et considérations¶
Contraintes techniques¶
- Dépendance API : Nécessite connexion internet pour Groq
- Limite de tokens : Conversations longues peuvent être tronquées
- Performance : Requêtes complexes peuvent prendre du temps
Aspects métier¶
- Pas de création : Ne peut pas ajouter/modifier des produits
- Données uniquement : Réponses basées sur l'existant
- Langue : Optimisé pour le français et l'arabe
Évolutions futures¶
Améliorations prévues¶
- Multilinguisme avancé : Support étendu des langues
- Apprentissage : Amélioration continue des réponses
- Intégrations : Connexions avec d'autres systèmes
- Analytics : Tableaux de bord des interactions
Nouvelles fonctionnalités¶
- Commandes vocales : Interface audio
- Notifications push : Alertes proactives
- Recommandations IA : Suggestions prédictives
- API externe : Exposition pour intégrations tierces
Maintenance et déploiement¶
Mise à jour des modèles¶
- Monitoring : Suivi des performances des réponses
- Retrain : Mise à jour des prompts selon les feedbacks
- Tests : Validation des nouvelles versions
Déploiement¶
- Environnement : Configuration séparée pour production
- Monitoring : Logs détaillés des interactions
- Backup : Sauvegarde des configurations
Conclusion¶
StockBot représente une avancée significative dans la digitalisation des processus de gestion de stock. En combinant les dernières technologies d'IA avec une architecture robuste, cet agent offre une expérience utilisateur exceptionnelle tout en maintenant des standards élevés de sécurité et de fiabilité.
Développé avec soin par Hinimdou Morsia Guitdam, StockBot démontre le potentiel de l'IA conversationnelle dans l'optimisation des opérations commerciales au Maroc.