Skip to content

Version opensource du chatbot intelligent propulsé par l'IA pour assister les étudiants de l'UTT dans le choix de leurs ue et leur orientation pédagogique

Notifications You must be signed in to change notification settings

FredWantou/chatbutt

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Chatb'UTT 🚀

Un chatbot intelligent pour accompagner les étudiants de l'UTT dans leurs choix académiques

License Python Docker


📋 Table des matières


🎯 Contexte

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

Phase 1 (P24) ✅

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.

Phase 2 (P25) 🚀

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

🎓 Objectifs

Pour les étudiants

  • 🎯 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

Pour les administrateurs

  • 📊 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

🏗️ Architecture du projet

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

🔄 Flux de traitement des requêtes (Pipeline)

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

Composants clés du pipeline :

  1. Intention Detection : Identifie l'intention de l'utilisateur (demande d'info sur une UE, conseil d'orientation, comparaison, etc.)
  2. Entity Extraction : Extrait les entités nommées (noms d'UE, branches, semestres, métiers, etc.)
  3. Source Router : Détermine la source de données optimale (recherche vectorielle FAISS ou requête structurée MongoDB)
  4. Document Retrieval : Récupère les documents pertinents via RAG
  5. Answer Generation : Génère une réponse naturelle et contextualisée avec un LLM

✨ Fonctionnalités

Pour les étudiants 🎓

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 ?"

🖥️ Technologies utilisées

Backend

  • 🐍 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

Frontend

  • 🎨 Streamlit - Framework de création d'applications web Python
  • 📊 Streamlit Components - Composants personnalisés

DevOps

  • 🐳 Docker - Conteneurisation
  • 🔧 Docker Compose - Orchestration multi-conteneurs
  • ✅ Pytest - Tests unitaires et d'intégration

🚀 Installation

Prérequis

  • Python 3.8+
  • Docker & Docker Compose (optionnel)
  • Compte OpenAI avec clé API

Option 1 : Installation avec Docker (Recommandé) 🐳

  1. Cloner le repository
git clone https://github.com/FredWantou/chatbutt.git
cd chatbutt
  1. Configurer les variables d'environnement
cp .env.example .env
# Éditer . env et ajouter votre clé API OpenAI
  1. Lancer l'application
docker-compose up --build
  1. Accéder à l'application

Option 2 : Installation manuelle 🛠️

Backend

  1. Créer un environnement virtuel
python -m venv . venv
  1. Activer l'environnement virtuel
# Windows
.venv\Scripts\activate

# macOS/Linux
source .venv/bin/activate
  1. Installer les dépendances
pip install -r requirements.txt
  1. Configurer les variables d'environnement
cp .env.example .env
# Éditer . env et ajouter votre clé API OpenAI
  1. Lancer le backend
uvicorn backend.server:app --host 0.0.0.0 --port 8000 --reload

Frontend

  1. Ouvrir un nouveau terminal et activer l'environnement virtuel
# Windows
.venv\Scripts\activate

# macOS/Linux
source .venv/bin/activate
  1. Lancer le frontend
streamlit run frontend/main.py

📖 Utilisation

Démarrage rapide

Pour lancer le backend :

Pour lancer le frontend :

Exemples de questions

Informations sur une UE

  • "C'est quoi l'UE LO17 ?"
  • "Quels sont les objectifs de MT15 ?"
  • "Qui est responsable de l'UE GL03 ?"

Liste des UE

  • "Quelles UE sont proposées en branche ISI ?"
  • "Quelles UE puis-je choisir au semestre 3 ?"

Comparaison d'UE

  • "Quelle est la différence entre IF08 et IF10 ?"

Conseil d'orientation

  • "Quelles UE choisir pour devenir data engineer ?"
  • "Je veux travailler dans l'IA, que me conseillez-vous ?"

Prérequis et parcours

  • "Quels sont les prérequis pour suivre LO12 ?"
  • "Quel parcours pour accéder à la branche GM ?"

Informations générales

  • "Combien de crédits faut-il pour passer en branche ?"
  • "Comment fonctionne le tronc commun ?"
  • "Quelle est la différence entre FISE et FISA ?"

Langues et certifications

  • "Quel niveau d'anglais est requis pour valider le diplôme ?"
  • "Quelles certifications sont acceptées ?"

👥 L'équipe

Ce projet est développé par une équipe d'étudiants ingénieurs passionnés de l'UTT :

Mohamed Amine Jabote
Mohamed Amine Jabote

Backend & NLP Engineer
Freddy Durel Pouna Wantou
Freddy Durel Pouna Wantou

Full Stack Developer & AI Engineer
Youssef Sidqui
Youssef Sidqui

Data Engineer & DevOps

Encadrement : Nada Matta (Enseignante-chercheuse à l'UTT)


🧪 Tests

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/

📚 Ressources

Documentation MongoDB Vector Search

Documentation LangChain


❓ Support

🇬🇧 English

If you encounter any issues, please create an issue on the GitHub repository.

🇫🇷 Français

Si vous rencontrez des problèmes, veuillez créer un ticket sur le dépôt GitHub.


📜 Licence

Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.


🙏 Remerciements

  • 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 !

About

Version opensource du chatbot intelligent propulsé par l'IA pour assister les étudiants de l'UTT dans le choix de leurs ue et leur orientation pédagogique

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages