Plugin Tutor IA

Rapport de présentation -- Plateforme estud{IA}nt.e.s
Projet Dream-U -- IUT Aix-Marseille Université -- Mai 2026
Younes Benahmed -- BUT2 Informatique
← Retour aux rapports

Pré-requis

Infrastructure

ComposantSpécification
Serveur MoodleMachine Linux (Debian/Ubuntu) avec Docker et Docker Compose
GPU / Serveur IAGPU avec minimum 24 Go de VRAM (ex : NVIDIA GB10 Blackwell, RTX 4090, A100). Nécessaire pour faire tourner le modèle de langage.
RéseauLes deux machines doivent pouvoir communiquer (réseau local ou VPN type Tailscale). Le serveur IA doit être accessible depuis le serveur Moodle via HTTP.
StockageMinimum 50 Go libres sur le serveur IA pour les modèles. 10 Go sur le serveur Moodle.

Logiciels

LogicielVersion minimaleRôle
Moodle4.1+ (recommandé 4.5+)Plateforme LMS
PHP8.0+Exécution du plugin (inclus dans l'image Docker Bitnami)
vLLM0.19+Serveur d'inférence IA, expose une API compatible OpenAI
Docker24+Conteneurisation de Moodle et de la base de données
Caddy2.7+Reverse proxy HTTPS (optionnel, recommandé pour la sécurité)
Tailscale1.60+VPN mesh pour relier les machines (optionnel)

Modèle IA

Le plugin est compatible avec tout modèle de langage exposé via une API compatible OpenAI (/v1/chat/completions). Il a été testé avec :

ModèleVRAMNotes
Qwen3-Coder-30B-A3B-Instruct-FP8~30 GoUtilisé en production. Bon équilibre performance/qualité.
Qwen2.5-32B-AWQ~20 GoTesté. Fonctionne bien pour le chat et la génération de questions.
Qwen2.5-Coder-14B~10 GoPlus léger, adapté comme modèle de fallback.
Gemma-4-26B~16 GoTesté. Bonne qualité de conversation.

Le modèle doit supporter le streaming SSE et le format JSON pour la génération de quiz et flashcards.

Configuration Moodle

Côté enseignant

Côté étudiant

1. Qu'est-ce que le Tutor IA ?

Le Tutor IA est un assistant pédagogique intelligent intégré directement dans Moodle. Quand un enseignant l'active sur son cours, un bouton de chat apparaît en bas à droite de chaque page. Les étudiants peuvent poser des questions et recevoir des explications personnalisées, basées sur le contenu réel du cours.

L'IA tourne entièrement en local sur l'infrastructure de l'IUT (DGX Spark). Aucune donnée n'est envoyée à un service externe.

Widget chat sur la page du cours
Le bouton bleu du Tutor IA apparaît en bas à droite de la page du cours. Un clic ouvre la fenêtre de conversation.

2. Chat IA contextualisé

Quand un étudiant pose une question, l'IA analyse le contenu du cours (pages, documents, devoirs) et répond en se basant uniquement sur le programme. Si la question est hors-sujet, l'IA refuse poliment.

Exemple concret :

Étudiant : "Comment créer une liste en Python ?"

Tutor IA : L'IA ne donne pas directement la réponse. En mode socratique, elle répond par des questions : "Bonne question ! D'abord, qu'est-ce qu'une variable pour toi ? Et si tu devais stocker plusieurs valeurs, comment ferais-tu ?"

Étudiant : "Je mettrais plusieurs variables ?"

Tutor IA : "C'est une piste, mais imagine que tu aies 100 valeurs. Est-ce pratique d'avoir 100 variables ? Python a une structure qui permet de regrouper des valeurs. Cherche dans ton cours, section 'Fonctions et listes'..."

Chat en mode socratique - premier message
L'étudiant demande "C'est quoi une variable en Python ?". L'IA répond avec une explication puis pose une question : "Penses-tu qu'une variable peut stocker plusieurs valeurs à la fois ?"

3. Mode socratique

L'enseignant peut activer le mode socratique dans les paramètres du cours. Dans ce mode, l'IA ne donne jamais la réponse directement : elle pose des questions, donne des indices, et guide l'étudiant étape par étape. Après plusieurs échanges infructueux, elle propose un indice plus explicite.

Ce mode est particulièrement utile pour les cours de programmation où l'enseignant ne veut pas que l'IA fasse le travail à la place de l'étudiant.

Page de paramètres du cours
L'enseignant active le Tutor IA et le mode socratique depuis les paramètres du cours. Il peut aussi ajouter des instructions personnalisées.
Scénario enseignant :

Mme Yahi enseigne l'introduction à Python. Elle active le Tutor IA avec le mode socratique et ajoute dans le syllabus : "Ne pas donner de solution complète pour le TP1. Guider les étudiants vers la documentation Python."

Résultat : quand un étudiant demande la solution du TP, l'IA l'oriente vers les ressources du cours sans lui donner le code.

4. Aide contextuelle sur les devoirs

Quand un étudiant est sur la page d'un devoir (ex : "TP1 - Fonctions et listes en Python"), le Tutor IA détecte automatiquement l'énoncé et adapte ses réponses. L'étudiant n'a pas besoin de copier-coller l'énoncé.

Exemple concret :

Étudiant (sur la page du TP1) : "Je ne comprends pas ce qu'on me demande"

Tutor IA : "Je vois que tu travailles sur le TP1 'Fonctions et listes en Python'. L'énoncé te demande d'implémenter une fonction compter_occurrences(liste, element) qui retourne combien de fois un élément apparaît dans une liste. Tu veux que je t'explique ce qu'est une occurrence ?"

5. Conversation avancée et mini-quiz

Après plusieurs échanges, l'IA continue de guider en mode socratique avec du code en couleur. Elle utilise des exemples concrets (ma_liste, 42) et pose des questions de plus en plus précises.

Conversation longue avec bouton quiz
Après 8 messages, le bouton vert "Tester mes connaissances" apparaît automatiquement. L'IA utilise du code coloré dans ses réponses.

Après 8 messages ou plus dans une conversation, un bouton vert "Tester mes connaissances" apparaît. L'IA génère 3 questions QCM basées sur ce qui vient d'être discuté. L'étudiant répond directement dans le chat et reçoit un feedback immédiat.

Mini-quiz dans le chat
Le mini-quiz généré après une conversation sur les variables et les listes. 3 questions QCM avec choix radio, directement dans la fenêtre de chat.
Exemple concret :

Après une conversation sur les listes Python, le mini-quiz propose :

Question 1 : Quel est le résultat de len([1, 2, 3]) ?
A) 2   B) 3   C) 4   D) Erreur

L'étudiant clique sur B) -- Correct ! len() retourne le nombre d'éléments dans la liste.

Score final : 2/3 -- Les réponses incorrectes sont expliquées.

6. Résumé de cours

En un clic, l'IA génère un résumé structuré de tout le contenu du cours : titres, définitions, points clés, formules. Le résumé apparaît en temps réel (streaming) et peut être imprimé ou exporté en PDF. Il est mis en cache automatiquement et ne sera régénéré que si le contenu du cours change.

Résumé de cours généré par IA
Résumé généré automatiquement pour le cours "Introduction à la Programmation Python" avec titres, définitions et points clés.
Cas d'usage :

Avant un examen, l'étudiant ouvre le résumé IA de son cours de Python. En 30 secondes, il obtient une synthèse de toutes les notions vues : variables, types, listes, fonctions, boucles. Il clique "Imprimer / PDF" pour l'emporter en révision.

7. Flashcards

L'IA génère 15 cartes recto/verso à partir du contenu du cours. L'étudiant clique sur la carte pour la retourner, puis indique s'il la connaît ("Je sais") ou s'il doit la réviser ("À revoir"). Les cartes marquées "à revoir" reviennent plus fréquemment grâce à un système de répétition espacée.

Flashcard recto
Recto de la carte : "Qu'est-ce qu'une fonction en Python ?" -- L'étudiant peut cliquer pour retourner la carte. Boutons "A revoir" et "Je sais" en dessous. Compteur 1/5.
Flashcard verso
Verso de la carte (fond bleu) : "Une fonction est un bloc de code réutilisable qui effectue une tâche spécifique. Elle peut accepter des paramètres et retourner une valeur."
Exemples de flashcards générées pour un cours Python :

Carte 1 -- Recto : "Qu'est-ce qu'une liste en Python ?"
Verso : "Une structure de données ordonnée et modifiable qui peut contenir des éléments de types différents. Syntaxe : ma_liste = [1, 2, 3]"

Carte 2 -- Recto : "Quelle est la différence entre append() et extend() ?"
Verso : "append() ajoute un seul élément à la fin. extend() ajoute chaque élément d'un itérable à la fin."

Carte 3 -- Recto : "Comment définir une fonction en Python ?"
Verso : "Avec le mot-clé def suivi du nom et des paramètres : def ma_fonction(param1, param2):"

8. Dashboard enseignant

Les enseignants accèdent à un tableau de bord qui montre comment les étudiants utilisent le Tutor IA. Sans voir les conversations individuelles, le professeur peut identifier les sujets qui posent problème et adapter son cours en conséquence.

Dashboard enseignant
Tableau de bord du Tutor IA : sessions, étudiants actifs, messages, tokens consommés et graphique d'activité par heure.
Scénario enseignant :

M. Casali consulte le dashboard de son cours C++ le vendredi. Il voit que 15 étudiants ont posé des questions sur les "pointeurs" cette semaine (sujet le plus demandé). Il décide de consacrer la prochaine séance à un exercice pratique sur les pointeurs.

Le graphique d'activité montre un pic à 22h -- les étudiants révisent le soir. Le Tutor IA est disponible 24h/24, contrairement aux horaires de permanence.

Alertes automatiques

Quand un sujet est demandé par plus de 5 étudiants différents en une semaine (seuil configurable par l'administrateur), le système envoie automatiquement une notification Moodle à tous les enseignants du cours. La notification indique le sujet concerné et le nombre d'étudiants. L'alerte est déclenchée par une tâche planifiée qui s'exécute chaque jour à 6h30.

Liste des notifications de Morgan Morancey
Morgan Morancey reçoit la notification "Alerte Tuteur IA - PROG-PYTHON" dans sa boîte de notifications Moodle.
Détail de l'alerte
Contenu de l'alerte : "les sujets suivants ont été fréquemment demandés par les étudiants ces 7 derniers jours : "listes python" (3 étudiants). Consultez le tableau de bord pour plus de détails."
Fonctionnement :

1. Les étudiants posent des questions au Tutor IA. Chaque message est analysé et un mot-clé est extrait automatiquement (ex : "listes python", "boucle while").

2. Tous les jours à 6h30, une tâche planifiée Moodle analyse les mots-clés des 7 derniers jours.

3. Si un mot-clé a été demandé par plus de N étudiants distincts (seuil configurable, défaut : 5), une notification est envoyée à chaque enseignant du cours.

4. L'enseignant clique sur la notification et accède au tableau de bord pour voir les détails.

9. Gamification

Le mode gamification transforme la limite de messages en opportunité d'apprentissage. Quand un étudiant atteint sa limite horaire, au lieu d'être bloqué, un quiz bonus apparaît. Chaque bonne réponse donne 5 messages supplémentaires. Cette option est activable par l'enseignant dans les paramètres du cours.

Limite atteinte avec gamification
L'étudiant atteint sa limite de 3 messages. Au lieu du blocage, un message l'invite à répondre à un quiz pour gagner des messages supplémentaires.
Quiz bonus gamification
Le quiz bonus apparaît automatiquement dans un encadré jaune : "Quiz bonus - Gagnez des messages !" avec 3 questions QCM basées sur la conversation.
Score et tokens gagnes
Résultat : Score 1/3. La bonne réponse est en vert, la mauvaise en rouge. L'étudiant gagne 5 messages supplémentaires (1 bonne réponse x 5).
Fonctionnement :

1. L'enseignant active "Mode gamification" dans les paramètres du cours.

2. L'étudiant discute normalement avec l'IA (limite configurable, défaut 30 messages/heure).

3. Quand la limite est atteinte, un quiz de 3 QCM apparaît automatiquement.

4. Chaque bonne réponse donne 5 messages supplémentaires. Score 3/3 = 15 messages bonus.

5. L'étudiant peut ensuite continuer à discuter avec les messages gagnés.

6. Si la gamification est désactivée, le message de blocage classique s'affiche.

10. Paramètres administrateur

L'administrateur du site configure les garde-fous globaux :

Page d'administration
Paramètres globaux : limite de messages, budget tokens, endpoint de secours.

10. Navigation dans Moodle

Toutes les fonctionnalités sont accessibles depuis le menu "Plus" du cours. Les enseignants voient les liens vers les paramètres, le dashboard, le résumé et les flashcards.

Menu Plus avec les liens Tutor IA
Menu "Plus" du cours avec les liens de navigation vers les différentes fonctionnalités du Tutor IA.

11. Sécurité et confidentialité

AspectMesure
Données100% local -- aucune donnée ne quitte l'IUT. Le modèle IA tourne sur le DGX Spark.
HTTPSToutes les connexions sont chiffrées (certificat Tailscale valide + auto-signé local).
Vie privéeL'enseignant voit les statistiques agrégées (sujets, nombre de sessions), jamais les conversations individuelles.
AccèsSeuls les étudiants inscrits au cours peuvent utiliser le chatbot. Permissions Moodle standard.
Anti-abusLimite de messages par heure et budget tokens par jour pour protéger les ressources.

12. Récapitulatif des fonctionnalités

FonctionnalitéPour quiDescription
Chat IAÉtudiantsPoser des questions en temps réel, réponses basées sur le contenu du cours
Mode socratiqueEnseignantsL'IA guide par des questions au lieu de donner la réponse
Aide sur les devoirsÉtudiantsDétection automatique de l'énoncé, aide ciblée sans donner la solution
Mini-quizÉtudiants3 QCM générés après une conversation pour vérifier la compréhension
Résumé de coursTousSynthèse structurée du cours, exportable en PDF
FlashcardsÉtudiants15 cartes recto/verso avec répétition espacée pour réviser
DashboardEnseignantsStatistiques d'utilisation, sujets fréquents, activité par heure
AlertesEnseignantsNotification automatique quand un sujet pose problème à plusieurs étudiants
Rate limitingAdminLimite de messages/heure et budget tokens/jour
GamificationEnseignantsQuiz bonus quand la limite est atteinte : bonnes réponses = messages supplémentaires
FallbackAdminModèle de secours en cas de panne