Un chatbot intelligent pour accompagner les étudiants de l'UTT dans leurs choix académiques
- Contexte
- Objectifs
- Architecture du projet
- Fonctionnalités
- Technologies utilisées
- Installation
- Utilisation
- L'équipe
- Ressources
- Licence
Chatb'UTT est un chatbot développé par une équipe d'étudiants ingénieurs de l'Université de Technologie de Troyes (UTT). Ce projet vise à résoudre une problématique concrète : aider les étudiants à naviguer dans la complexité des choix académiques en leur fournissant des recommandations personnalisées sur les Unités d'Enseignement (UE).
Développement d'un chatbot de base capable de répondre aux questions courantes des étudiants sur les UE, les branches, les prérequis et les parcours académiques.
Enrichissement du chatbot avec des capacités d'intelligence artificielle avancées :
- Intégration de LangChain pour des conversations plus naturelles
- Implémentation du RAG (Retrieval-Augmented Generation) pour des réponses contextualisées
- Ajout de la reconnaissance vocale pour faciliter l'interaction
- Support multilingue des requêtes
- 🎯 Obtenir des recommandations personnalisées d'UE basées sur leurs préférences, compétences et objectifs de carrière
- 💬 Interagir de manière naturelle grâce à une IA conversationnelle avancée
- 🌍 Poser des questions en plusieurs langues
- 🎙️ Utiliser la reconnaissance vocale pour soumettre des questions à l'oral
- 📊 Analyser les interactions via des tableaux de bord intelligents
- 🔄 Améliorer continuellement le système grâce à des tests de régression manuels et automatisés
- 📈 Assurer la scalabilité pour des évolutions futures
Le projet suit une architecture microservices avec séparation claire entre le backend et le frontend, orchestrée par Docker Compose.
chatbutt/
│
├── backend/ # API et logique métier
│ ├── documents/ # Documents sources (UE, branches, etc.)
│ ├── etl/ # Pipeline ETL pour l'ingestion de données
│ │ ├── core/ # Logique centrale d'extraction
│ │ ├── faiss/ # Indexation vectorielle avec FAISS
│ │ └── mongodb/ # Stockage dans MongoDB
│ ├── models/ # Modèles de données (Pydantic)
│ │ └── chats.py # Schéma des conversations
│ ├── pipeline/ # Pipeline de traitement des requêtes
│ │ ├── chatbot_pipeline.py # Orchestration du pipeline complet
│ │ ├── intention_detection.py # Détection d'intention (NLU)
│ │ ├── entity_extractor.py # Extraction d'entités nommées
│ │ ├── source_router.py # Routage vers la source de données appropriée
│ │ └── answer_generator.py # Génération de réponses avec LLM
│ ├── retrieve/ # Récupération de documents pertinents
│ │ ├── faiss_retriever. py # Recherche vectorielle avec FAISS
│ │ └── mongo_retriever.py # Recherche dans MongoDB
│ ├── routes/ # Points d'entrée API (FastAPI)
│ │ └── chat_routes.py # Endpoints pour le chat
│ ├── services/ # Logique métier
│ │ └── chat_service.py # Service de gestion des conversations
│ └── server. py # Point d'entrée de l'API (Uvicorn)
│
├── frontend/ # Interface utilisateur
│ ├── . streamlit/ # Configuration Streamlit
│ ├── utils/ # Utilitaires
│ │ └── auth.py # Gestion de l'authentification
│ ├── views/ # Pages de l'application
│ │ ├── login.py # Page de connexion
│ │ ├── logout.py # Page de déconnexion
│ │ ├── messagerie.py # Interface de chat
│ │ └── settings.py # Paramètres utilisateur
│ ├── config.yaml # Configuration de l'application
│ └── main.py # Point d'entrée Streamlit
│
├── docker-compose.yml # Orchestration des services
├── requirements.txt # Dépendances Python
├── . dockerignore # Fichiers ignorés par Docker
├── . gitignore # Fichiers ignorés par Git
└── README.md # Documentation du projet
Question utilisateur
↓
[1] Intention Detection (NLU)
↓
[2] Entity Extraction (NER)
↓
[3] Source Router (FAISS vs MongoDB)
↓
[4] Document Retrieval (RAG)
↓
[5] Answer Generation (LLM)
↓
Réponse contextualisée
- Intention Detection : Identifie l'intention de l'utilisateur (demande d'info sur une UE, conseil d'orientation, comparaison, etc.)
- Entity Extraction : Extrait les entités nommées (noms d'UE, branches, semestres, métiers, etc.)
- Source Router : Détermine la source de données optimale (recherche vectorielle FAISS ou requête structurée MongoDB)
- Document Retrieval : Récupère les documents pertinents via RAG
- Answer Generation : Génère une réponse naturelle et contextualisée avec un LLM
| Fonctionnalité | Description | Exemple |
|---|---|---|
| 📚 Recommandations personnalisées | Suggestions d'UE basées sur le profil et les objectifs | "Quelles UE choisir pour devenir data engineer ?" |
| 💬 IA conversationnelle | Dialogue naturel avec LangChain | "C'est quoi l'UE LO17 ?" |
| 🌍 Support multilingue | Requêtes en plusieurs langues | Français, Anglais |
| 🎙️ Reconnaissance vocale | Soumission de questions à l'oral | Questions audio |
| 🔍 Recherche avancée | Information sur les UE, branches, prérequis | "Quels sont les prérequis pour LO12 ?" |
| ⚖️ Comparaison d'UE | Analyse comparative de plusieurs UE | "Différence entre IF08 et IF10 ?" |
- 🐍 Python 3.8+ - Langage principal
- ⚡ FastAPI - Framework web moderne et performant
- 🧠 LangChain - Framework pour applications LLM
- 🤖 OpenAI API - Modèles de langage (GPT-4, GPT-3.5)
- 🔎 RAG (Retrieval-Augmented Generation) - Génération augmentée par récupération
- 📚 FAISS - Recherche vectorielle haute performance
- 🗄️ MongoDB - Base de données NoSQL
- 🗣️ Spacy / NLTK - Traitement du langage naturel (NLU/NER)
- 🎤 SpeechRecognition - Reconnaissance vocale
- 🎨 Streamlit - Framework de création d'applications web Python
- 📊 Streamlit Components - Composants personnalisés
- 🐳 Docker - Conteneurisation
- 🔧 Docker Compose - Orchestration multi-conteneurs
- ✅ Pytest - Tests unitaires et d'intégration
- Python 3.8+
- Docker & Docker Compose (optionnel)
- Compte OpenAI avec clé API
- Cloner le repository
git clone https://github.com/FredWantou/chatbutt.git
cd chatbutt- Configurer les variables d'environnement
cp .env.example .env
# Éditer . env et ajouter votre clé API OpenAI- Lancer l'application
docker-compose up --build- Accéder à l'application
- Frontend : http://localhost:8501
- Backend API : http://localhost:8000
- Documentation API : http://localhost:8000/docs
- Créer un environnement virtuel
python -m venv . venv- Activer l'environnement virtuel
# Windows
.venv\Scripts\activate
# macOS/Linux
source .venv/bin/activate- Installer les dépendances
pip install -r requirements.txt- Configurer les variables d'environnement
cp .env.example .env
# Éditer . env et ajouter votre clé API OpenAI- Lancer le backend
uvicorn backend.server:app --host 0.0.0.0 --port 8000 --reload- Ouvrir un nouveau terminal et activer l'environnement virtuel
# Windows
.venv\Scripts\activate
# macOS/Linux
source .venv/bin/activate- Lancer le frontend
streamlit run frontend/main.pyPour lancer le backend :
Pour lancer le frontend :
- "C'est quoi l'UE LO17 ?"
- "Quels sont les objectifs de MT15 ?"
- "Qui est responsable de l'UE GL03 ?"
- "Quelles UE sont proposées en branche ISI ?"
- "Quelles UE puis-je choisir au semestre 3 ?"
- "Quelle est la différence entre IF08 et IF10 ?"
- "Quelles UE choisir pour devenir data engineer ?"
- "Je veux travailler dans l'IA, que me conseillez-vous ?"
- "Quels sont les prérequis pour suivre LO12 ?"
- "Quel parcours pour accéder à la branche GM ?"
- "Combien de crédits faut-il pour passer en branche ?"
- "Comment fonctionne le tronc commun ?"
- "Quelle est la différence entre FISE et FISA ?"
- "Quel niveau d'anglais est requis pour valider le diplôme ?"
- "Quelles certifications sont acceptées ?"
Ce projet est développé par une équipe d'étudiants ingénieurs passionnés de l'UTT :
![]() Mohamed Amine Jabote Backend & NLP Engineer |
![]() Freddy Durel Pouna Wantou Full Stack Developer & AI Engineer |
![]() Youssef Sidqui Data Engineer & DevOps |
Encadrement : Nada Matta (Enseignante-chercheuse à l'UTT)
Le chatbot est testé de manière rigoureuse pour garantir sa fiabilité :
- ✅ Tests unitaires : Validation de chaque composant individuellement
- ✅ Tests d'intégration : Vérification du fonctionnement du pipeline complet
- ✅ Tests de régression : Assurance de la non-régression lors des évolutions
- ✅ Tests manuels : Validation par des cas d'usage réels
# Lancer les tests
pytest tests/If you encounter any issues, please create an issue on the GitHub repository.
Si vous rencontrez des problèmes, veuillez créer un ticket sur le dépôt GitHub.
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
- Nada Matta pour son encadrement et ses conseils précieux
- L'UTT pour le soutien institutionnel
- La communauté OpenAI pour les modèles de langage
- La communauté LangChain pour le framework conversationnel
Fait avec ❤️ par l'équipe Chatb'UTT
⭐ Si ce projet vous plaît, n'hésitez pas à lui donner une étoile sur GitHub !


