Plugin QCM Generator

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. Nécessaire pour faire tourner le modèle de langage.
RéseauLes deux machines doivent pouvoir communiquer (réseau local ou VPN type Tailscale).

Logiciels

LogicielVersion minimaleRôle
Moodle4.1+Plateforme LMS
PHP8.0+Exécution du plugin
vLLM0.19+Serveur d'inférence IA, API compatible OpenAI
pdftotext (optionnel)--Extraction du contenu des fichiers PDF

Configuration Moodle

1. Qu'est-ce que le QCM Generator ?

Le QCM Generator est un plugin Moodle qui génère automatiquement des questions d'examen à partir du contenu d'un cours. L'enseignant sélectionne les ressources (pages, documents, fichiers PDF), choisit les types de questions et la difficulté, et l'IA produit des questions prêtes à être importées dans un quiz Moodle.

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.

Cas d'usage :

Mme Yahi prépare un examen pour son cours Python. Plutôt que de rédiger 20 questions manuellement, elle ouvre le QCM Generator, sélectionne les chapitres concernés, et obtient 20 questions diversifiées en moins d'une minute. Elle les relit, modifie celles qui ne lui conviennent pas, et crée un quiz en un clic.

2. Wizard de génération en 3 étapes

La génération de questions se fait via un assistant en 3 étapes qui guide l'enseignant.

Étape 1 : Sélection du contenu

L'enseignant sélectionne les ressources du cours à utiliser comme source. Toutes les ressources sont affichées par section avec des icônes : pages, documents, fichiers, devoirs. Un bouton "Prévisualiser le contenu" permet de voir exactement ce que l'IA recevra, avec le nombre de caractères, mots et tokens estimés.

Wizard étape 1
Étape 1 : Sélection des ressources du cours à inclure

Étape 2 : Configuration

L'enseignant choisit le nombre de questions par type, la difficulté, et peut ajouter des instructions spécifiques.

Type de questionDescription
Choix multiples (QCM)4 options A/B/C/D, une seule bonne réponse
Vrai / FauxAffirmation à valider ou invalider
Réponse courteL'étudiant tape une réponse texte (avec synonymes acceptés)
CorrespondanceAssocier des termes à leurs définitions (4 à 6 paires)
NumériqueL'étudiant entre un nombre (avec tolérance configurable)

Niveaux de difficulté :

Wizard étape 2
Étape 2 : Configuration des types de questions, difficulté et vérification
Instructions spécifiques :

L'enseignant peut cibler précisément les compétences évaluées. Par exemple : "Génère des questions uniquement sur les statistiques descriptives (moyenne, médiane, écart-type). Ne pas inclure de probabilités."

Étape 3 : Confirmation

Avant de lancer la génération, un résumé affiche : le nombre total de questions, les types choisis, la difficulté, le nombre de ressources sélectionnées, et les instructions spécifiques. L'enseignant confirme ou revient en arrière pour ajuster.

Wizard étape 3
Étape 3 : Résumé de la configuration avant lancement de la génération

Pendant la génération, une barre de progression animée indique le type en cours de génération, le pourcentage et le temps restant estimé.

3. Preview du contenu extrait

Avant de générer, l'enseignant peut prévisualiser exactement le texte que l'IA recevra. Une fenêtre modale affiche le contenu extrait avec des statistiques : nombre de caractères, de mots et estimation du nombre de tokens.

Cela permet de vérifier que le contenu est suffisant et pertinent. Si le cours contient des fichiers PDF, leur texte est extrait automatiquement (si pdftotext est installé).

Preview modal
Modal de prévisualisation du contenu extrait avec statistiques

4. Review des questions générées

Après la génération, les questions sont affichées dans une page de review organisée par sessions et par date. Chaque question affiche son type (badge coloré), sa difficulté, son statut (En attente / Approuvée / Importée) et son statut de vérification.

Affichage par type

Review questions
Page de review avec les questions générées, badges de type et statuts

Groupement par date et session

Les questions sont groupées par date ("Aujourd'hui", "Hier", ou la date complète) puis par session de génération (fenêtre de 5 minutes). Chaque session est repliable et affiche l'heure, le nombre de questions et les types générés.

5. Édition inline des questions

L'enseignant peut modifier directement chaque question sans quitter la page de review. Un clic sur le texte le transforme en champ éditable. La modification est sauvegardée instantanément via AJAX (fond vert = sauvegardé).

Champs éditables :

Édition inline
Les questions peuvent être éditées directement en cliquant sur le texte

6. Filtres

En haut de la page review, trois filtres permettent d'afficher uniquement les questions souhaitées :

Les filtres agissent en temps réel (JavaScript) sans rechargement de page.

7. Vérification multi-modèles

Quand l'option est activée (étape 2 du wizard), un second appel IA vérifie chaque question générée. Le vérificateur compare la question et sa réponse au contenu du cours pour détecter :

Résultat : chaque question reçoit un badge Vérifié ou Non vérifié. Les questions non vérifiées affichent la raison du rejet en rouge sous la question.

Exemple :

L'IA génère la question "Quelle est la médiane de {2, 4, 6} ?" avec la réponse "3".

Le vérificateur détecte l'erreur : "La médiane de {2, 4, 6} est 4, pas 3. La médiane est la valeur centrale de la série ordonnée."

La question est marquée Non vérifié et l'enseignant peut la corriger ou la régénérer.

8. Feedback IA sur les mauvaises réponses

Chaque question générée inclut une explication pédagogique. Quand la question est importée dans un quiz Moodle, cette explication apparaît automatiquement :

Exemple dans un quiz Moodle :

Question : "Quel indicateur mesure la dispersion des données autour de la moyenne ?"

Étudiant répond : "La médiane" (faux)

Feedback : "Incorrect. La bonne réponse était : L'écart-type. L'écart-type mesure la dispersion des valeurs autour de la moyenne arithmétique. La médiane, elle, mesure la tendance centrale."

9. Régénération individuelle

Si une question ne convient pas, l'enseignant peut la régénérer individuellement en un clic (bouton "Régénérer"). L'IA génère une nouvelle question du même type et remplace l'ancienne. Cela évite de devoir relancer toute la génération pour corriger une seule question.

10. Few-shot prompting

Pour améliorer la qualité des questions, le plugin utilise le few-shot prompting : chaque type de question inclut 2 exemples concrets dans le prompt envoyé à l'IA. Ces exemples montrent le format attendu et le niveau de qualité souhaité.

Résultat : les questions générées sont mieux formatées, avec des distracteurs plus plausibles et des explications plus détaillées.

11. Mode entraînement vs examen

Le plugin génère des questions adaptées au contexte :

La température du modèle IA est automatiquement adaptée par type : basse (0.2-0.3) pour les questions factuelles (Vrai/Faux, Numérique), plus haute (0.7) pour les questions créatives (QCM).

12. Chunking intelligent

Quand le contenu du cours est trop long pour tenir dans une seule requête IA, le plugin découpe automatiquement le texte en sections logiques (par séparateurs de section). Chaque type de question reçoit un segment différent, ce qui garantit une couverture équilibrée de tout le contenu.

13. Création de quiz et import

Une fois les questions approuvées, l'enseignant peut :

Création de quiz
Page de création automatique de quiz Moodle à partir des questions approuvées

14. Accessibilité ARIA

Le plugin est conçu pour être accessible :

15. Sécurité et confidentialité

AspectMesure
Données100% local -- aucune donnée ne quitte l'IUT. Le modèle IA tourne sur le DGX Spark.
PermissionsSeuls les enseignants avec local/dreamu_qcm:generate peuvent générer des questions.
ValidationToutes les requêtes vérifient le sesskey Moodle (protection CSRF).
ContenuLe contenu du cours n'est jamais stocké en dehors de Moodle -- il est extrait à la volée pour chaque génération.

16. Récapitulatif des fonctionnalités

FonctionnalitéDescription
Wizard 3 étapesSélection du contenu > Configuration > Confirmation avant génération
5 types de questionsQCM, Vrai/Faux, Réponse courte, Correspondance, Numérique
3 niveaux de difficultéFacile, Moyen, Difficile avec température adaptée par type
Preview du contenuVoir le texte extrait avec stats (caractères, mots, tokens)
Vérification multi-modèlesSecond appel IA pour détecter les erreurs et hallucinations
Feedback IAExplication pédagogique sur chaque mauvaise réponse
Édition inlineModifier les questions directement dans la page review (AJAX)
Régénération individuelleRemplacer une question sans relancer toute la génération
FiltresFiltrer par type, statut et vérification en temps réel
Few-shot promptingExemples dans le prompt pour améliorer la qualité
Instructions spécifiquesCiblage par compétence (textarea libre)
Chunking intelligentDécoupage du contenu long en sections équilibrées
Sessions groupées par dateOrganisation "Aujourd'hui", "Hier", date dans la page review
Création de quizImport dans la banque de questions + création de quiz Moodle en un clic
Extraction PDFExtraction automatique du texte des fichiers PDF
Accessibilité ARIALabels, focus, navigation clavier

17. Architecture technique

FichierRôle
generate.phpWizard 3 étapes + formulaire de génération
review.phpReview, filtres, édition inline, actions approuver/rejeter
create_quiz.phpCréation de quiz Moodle + import banque de questions
classes/qcm_generator.phpGénérateur IA, parsing JSON, vérification, import banque
classes/course_content.phpExtraction du contenu du cours (pages, PDF, fichiers)
ajax_edit.phpSauvegarde AJAX des modifications inline
ajax_preview.phpExtraction du contenu pour la prévisualisation
ajax_regenerate.phpRégénération individuelle d'une question