AI Grader (local_dreamu_ai)
Version : 1.1.0 (2026051801) | Composant : local_dreamu_ai | Moodle 4.5+ | GitHub
Objectif
Correction automatique des devoirs Moodle (assign) par IA. Pipeline 5 passes, feedback HTML structuré, validation enseignant obligatoire avant publication.
Pipeline de correction (ai_grader.php)
- Pass 1 — Analyse (temp 0.3, 2000 tokens) : Lit la soumission, décrit les fichiers/sections sans juger.
- Pass 2 — Review exhaustif (temp 0.2, 3000 tokens) : Évalue exercice par exercice selon les critères. Vérifie les calculs. Anti-hallucination.
- Pass 3 — Notation par critère (temp 0.1, 4000 tokens) : JSON structuré {criteria_grades [{name, max, score, justification}], grade, points_forts, erreurs, suggestions, commentaire}. Note = somme des scores.
- Pass 4 — Contre-correction aveugle (temp 0.1, 3000 tokens) : Évaluation indépendante. Ne voit PAS la note pass 3. JSON {grade, feedback}.
- Pass 5 — Arbitrage (conditionnel, temp 0.1, 2000 tokens) : Si écart pass3/pass4 > 15% du barème. Si l'arbitrage échoue, fallback moyenne pondérée 60% pass3 / 40% pass4. Si écart faible, moyenne simple.
Calibrage post-traitement (calibrate_grade)
- Check 1 : Si justification contient « pas fait/non fait/vide » ET score > 50% forcé à 0.
- Check 2 : Si pass4 inférieure de > 15% du barème ajustement 70% pass3 + 30% pass4.
- Les checks 2 (error count) et 3 (review patterns) ont été supprimés suite au retour Morancey (faux positifs).
Intégration dans le formulaire de devoir (lib.php)
Via local_dreamu_ai_coursemodule_standard_elements() :
- Checkbox « Activer la correction IA » dans le formulaire de création de devoir
- Textarea consignes avec compteur tokens temps réel
- Panel dépliable 5 templates (code, dissertation, TP labo, maths, analyse de cas)
- Champ note maximale, sélecteur langue FR/EN
- Variables : {maxgrade}, {assignname}, {coursename}, {language}, {duedate}
Navigation (lib.php)
Menu Plus du devoir : Corriger tout avec l'IA | Valider les notes IA (N) | Historique IA | Statistiques IA | Importer des soumissions.
Navigation cours : Dashboard IA.
Tâche adhoc (grade_submissions.php)
Lancée par grade.php. Extrait le sujet (description + PDF joints). Pour chaque soumission : extraction texte, pipeline 5 passes, stockage en status=graded/validated=0. Notification Moodle à l'enseignant.
Formats supportés (get_submission_text)
Texte en ligne | Code source (30+ extensions) | HTML/Jupyter (extraction intelligente) | ZIP (max 10 fichiers, 5000 chars) | PDF (nom/taille seulement).
Smart truncation
Si > 6000 chars : découpe par exercice/section. Sinon 60% début + 40% fin.
Feedback HTML (build_html_feedback)
Bandeau éthique IA (bleu) | Note avec couleur | Tableau par critère (score/max/justification) | Points forts (vert) | Erreurs (rouge) | Suggestions (bleu) | Commentaire (gris) | Contre-correction (jaune) | Calibrage (orange) | Arbitrage (violet) | Analyse détaillée (dépliable).
Tables
| Table | Description |
| local_dreamu_ai_config | Config par devoir : assignid (unique), enabled, prompt, maxgrade, language |
| local_dreamu_ai_grades | Résultats : assignid+userid, grade, feedback, rawresponse, status, validated |
Capabilities
local/dreamu_ai:grade (MODULE, editingteacher+manager, RISK_PERSONAL) | local/dreamu_ai:configure (MODULE, editingteacher+manager).
Messages Moodle
grading_complete : Notification popup/email fin de correction.
Fichiers
| Fichier | Rôle |
| classes/ai_grader.php | Pipeline 5 passes, calibrage, parsing, feedback HTML |
| classes/task/grade_submissions.php | Tâche adhoc |
| lib.php | Intégration formulaire devoir + navigation |
| grade.php | Lancement correction |
| validate.php | Validation notes |
| progress.php | Progression temps réel |
| stats.php | Statistiques |
| history.php | Historique (cards dépliables) |
| dashboard.php | Dashboard cours |
| export_csv.php | Export CSV |
| regrade.php | Re-correction individuelle |
| import_submissions.php | Import ZIP |
| test_api.php | Test connexion API |
| settings.php | Config admin |