Project Files
README.md
Démo pédagogique d'un dispositif d'apprentissage de la dissertation de philosophie de terminale, sous forme de fiction interactive jouée avec un narrateur LLM local et un corpus de citations vérifiées.
Lis le
WARNING.mdavant d'utiliser ce dispositif en contexte scolaire ou avec des élèves. Cette démo a des limites connues que tu dois comprendre pour l'utiliser sainement.
Les outils d'IA générative sont déjà dans la vie des lycéens. Beaucoup les utilisent pour leurs devoirs, le plus souvent sans cadrage : ils interrogent un chatbot grand public, ils reçoivent une réponse plausible, ils copient. Le risque est double — ils apprennent à faire confiance à un outil qui peut leur inventer des citations fausses, et ils contournent le travail intellectuel que la dissertation est censée muscler.
Ce dispositif propose une alternative cadrée à cet usage par défaut, fondée sur quatre principes :
Le narrateur n'a le droit de citer entre guillemets que des textes qui figurent dans un corpus de citations attestées par au moins deux sources web indépendantes (hostnames distincts). Pour chaque citation on conserve : le texte français de référence, le texte dans la langue originale quand applicable, le traducteur canonique, les variantes connues, et les URLs des sources.
Pas d'invention. Pas de plausibilité statistique. Si une citation n'est pas dans le corpus, le narrateur la paraphrase ou la refuse.
Chaque réponse du narrateur est passée au crible d'un vérificateur qui extrait toutes les phrases entre guillemets, les compare au corpus (avec tolérance pour les variantes typographiques et accents) et vérifie l'attribution. Si une citation hallucinée ou mal attribuée est détectée, le système rejette la réponse et redemande au narrateur de la réécrire — sans que l'élève voie jamais la version fautive.
Au moment d'écrire ces lignes, quatre niveaux de garde-fous sont en place :
La dissertation se décompose en cinq opérations intellectuelles — problématiser, conceptualiser, illustrer, objecter, synthétiser. Dans ce dispositif, chaque tour de la fiction est exactement une de ces opérations. L'élève qui joue ne le sait pas pendant qu'il joue. À la fin de la session (au 5ᵉ tour), il peut demander à voir le squelette de dissertation qu'il vient d'écrire sans le savoir — révélant que ses choix narratifs successifs formaient en fait un plan dialectique argumenté.
C'est ce qu'on appelle en sciences de l'éducation un échafaudage (scaffolding) : porter temporairement l'élève au-dessus de ses moyens, pour qu'il ressente ce qu'on lui demandera bientôt de produire seul.
Tout est auditable :
~/.livre-heros-bac/sessions/, format JSONL append-only)./admin) liste les sessions des 7 derniers jours
et permet de lire le transcript détaillé avec, tour par tour,
les diagnostics du vérificateur (citation validée / hors corpus,
retries, patches serveur, violations détectées).Aucune télémétrie, aucun envoi de données vers un service tiers. Le narrateur tourne en local sur ton poste (via LM Studio) ou sur une machine de ton réseau.
Les pièces principales :
src/data/system-prompt.md — règles du narrateur (compteur,
continuité narrative, cadres dramaturgiques, guide d'usage des
citations).lmsWARNING.md section « Variabilité du modèle »)Dans le chat LM Studio, invoque le tool exposé par le plugin :
Le navigateur s'ouvre sur le catalogue de sujets. Choisis-en un ou ajoute le tien, et lance une session.
Tout est dans le panneau de config du plugin LM Studio (clic sur le plugin dans la liste) :
Soyons clairs : ce dépôt est une démonstration.
WARNING.md).L'objectif initial n'est pas de servir directement des élèves à grande échelle, mais de montrer concrètement qu'on peut bâtir un dispositif d'IA pédagogique :
Cette démo a la forme d'un seed. Si une communauté d'enseignant·e·s, de parents, de chercheur·e·s en sciences de l'éducation, et de développeur·euse·s s'agrège autour, elle peut devenir un outil pédagogique communautaire mature avec :
src/skeleton-validator.ts est conçue
pour grandir avec les sessions analysées).Rien de tout cela n'est en place. La démo existe pour rendre la conversation possible.
Si tu es :
Issues et PR sur le dépôt. Pas de hiérarchie de contributions préétablie ; on construit le processus à mesure que la communauté se forme.
MIT (voir package.json).
Le corpus (src/data/verified.jsonl) inclut des citations
philosophiques toutes du domaine public, sourcées depuis Wikisource
et des éditions universitaires en ligne. Les URLs des sources sont
conservées avec chaque citation pour traçabilité.
Avant de jouer : WARNING.md.
Avant de contribuer : essaie d'abord 3 sessions complètes pour
comprendre les forces et faiblesses du dispositif en pratique.
src/data/verified.jsonl — corpus de citations source-vérifiées.src/session.ts — orchestration des tours, validation,
retries, patches.src/verifier.ts — extraction et matching des citations
(Levenshtein normalisé, seuil 18%).src/skeleton-validator.ts — validation pédagogique du squelette
final (alignement citation/titre, diversité d'auteurs).src/web.ts — serveur HTTP, SSE streaming, pages chat /
catalogue / corpus / admin.src/corpus-builder.ts — enrichissement du corpus depuis
Wikisource (LLM-assisted extraction + double-source).Enseignant·e de philosophie : signale-nous les misuses de
citations que tu observes en jouant le dispositif. Chaque misuse
ajouté à la liste FORBIDDEN_IN_DEVELOPMENT_PARTS dans
src/skeleton-validator.ts est un faux sens en moins qu'un
futur élève fera.
Parent : utilise le dispositif avec ton enfant, raconte-nous ce qui se passe (issue GitHub avec le numéro de session, on a toute l'auditabilité nécessaire pour reproduire).
Développeur·euse : le code est structuré pour qu'on puisse
forker et adapter. Lis src/index.ts pour démarrer, puis
src/session.ts pour comprendre le cœur de la mécanique.
Chercheur·euse en didactique : on cherche des regards critiques sur la mécanique d'échafaudage proposée — est-ce qu'on risque d'aplatir la dissertation à 5 cases mécaniques ? Comment mesurer ce que les élèves retiennent réellement ?
┌──────────────────────────────────────────────────────────────┐
│ Plugin LM Studio (Node.js / TypeScript) │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Tool launch_livre_heros_web │ │
│ │ → démarre un serveur HTTP local (par défaut │ │
│ │ 127.0.0.1:7321, configurable) │ │
│ │ → ouvre le navigateur sur le catalogue de sujets │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Pipeline d'un tour : │ │
│ │ │ │
│ │ user "B" │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ [serveur] injecte état + carte assignée │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ [LM Studio] streame la réponse token par token │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ [vérificateur] check citations + état + squelette │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ si fautes → retry avec corrective │ │
│ │ si encore faux → patch serveur (label, strip…) │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ persistance JSONL + envoi UI │ │
│ └─────────────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────┘
git clone <ce-dépôt>
cd livre-heros-bac
npm install
npm run build
lms push
Lance la démo livre-héros dans le navigateur.