Prototype ANSU · Phase de test · DRANE PACA / DNE
Six assistants IA pour les mathématiques
Du Brevet au Bac — questions libres avec figures précises, démonstrations rédigées, entraînement QCM, apprentissage par l'enseignement, ou exercices interactifs sur les équations de droites avec GeoGebra. Choisissez le mode qui vous convient.
01
AnSu Géométrie — figures statiques matplotlib
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Frontend │────▶│ FastAPI │────▶│ DeepSeek │
│ HTML/JS │◀────│ :8765 │◀────│ Flash API │
│ KaTeX │ │ │ │ │
└──────────────┘ │ matplotlib │ └──────────────┘
│ subprocess │
└──────────────┘
Pipeline
- L'utilisateur envoie une question de géométrie
- Le backend appelle DeepSeek Flash avec un prompt système (professeur de maths en français)
- Le LLM génère une explication textuelle + un bloc
```python - Le backend extrait le code Python, l'exécute avec matplotlib
- La figure PNG (150 DPI, fond blanc, axes égaux, grille légère) est sauvegardée dans
static/ - Le frontend affiche le texte (KaTeX pour les formules) et l'image
Spécifications
- Approche : code Python exécuté côté serveur
- Figures : PNG (matplotlib, 150 DPI)
- Modèle : DeepSeek Flash (deepseek-chat)
- Interactivité : image statique · ~5-15s
Fichiers — AnSu Géométrie (:8765)
| /var/www/ansu-geometrie/geometribot/app.py | Backend FastAPI (routes + HTML inline) |
| /var/www/ansu-geometrie/geometribot/static/ | PNG générées (geo_<uuid>.png) |
| geometry-bot.service | Service systemd |
| nginx → /geo → :8765 | Reverse proxy |
02
Geo2 — figures interactives SVG / Desmos / JSXGraph
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Frontend │────▶│ FastAPI │────▶│ Mistral │
│ HTML/JS │◀────│ :8766 │◀────│ Medium API │
│ KaTeX │ │ │ │ │
│ Desmos CDN │ │ parse_figure │ └──────────────┘
│ JSXGraph CDN│ │ 3 renderers │
└──────────────┘ └──────────────┘
Pipeline
- Le backend appelle Mistral Medium avec un prompt système spécialisé
- Le LLM génère une explication + un bloc balisé
<svg>,<desmos>ou<jsxgraph> - Le backend parse le bloc, le frontend rend la figure dans le navigateur
- SVG : rendu vectoriel statique (polygones, cercles, angles)
- Desmos : graphe interactif embed (courbes de fonctions, lieux)
- JSXGraph : constructions dynamiques avec points mobiles
Spécifications
- Approche : balises structurées parsées côté client
- Figures : SVG · Desmos · JSXGraph (interactif)
- Modèle : Mistral Medium (mistral-medium-latest)
- Interactivité : oui — zoom, point mobile, curseur · ~5-15s
Fichiers — Geo2 (:8766)
| /var/www/ansu-geometrie/geo2/app.py | Backend FastAPI (routes + 3 renderers) |
| /var/www/ansu-geometrie/geo2/static/ | Frontend HTML/CSS/JS + templates JSXGraph |
| geo2-bot.service | Service systemd |
| nginx → /geo2 → :8766 | Reverse proxy (via b.ansu-demo.net) |
| Mistral Medium | API externe (via api.mistral.ai) |
03
DNB Géo — entraîneur QCM Brevet
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Frontend │────▶│ FastAPI │────▶│ Mistral │
│ QCM + │◀────│ :8767 │◀────│ Medium API │
│ justific. │ │ │ │ │
│ KaTeX │ │ augmentation │ └──────────────┘
│ matplotlib │ │ + rotation │
└──────────────┘ │ + correction │
│ matplotlib │
└──────────────┘
Pipeline
- Génération QCM — Mistral génère une question avec 3 choix (A/B/C) dont 2 leurres basés sur les erreurs classiques de 3e
- Réponse + justification — l'élève choisit une réponse ET rédige sa justification
- Correction — ✅/❌, explication de l'erreur classique, rappel de méthode, et figure matplotlib
- Rotation 12 catégories — le backend suit automatiquement les catégories du cycle 4
- Bouton Régénérer — chaque réponse peut être regénérée avec restauration de l'état
Spécifications
- Type : entraîneur QCM Brevet (3 étapes)
- Figures : matplotlib PNG (correction uniquement)
- Catégories : 12 thèmes cycle 4, rotation automatique
- Modèle : Mistral Medium · ~5-15s
Fichiers — DNB Géo (:8767)
| /var/www/ansu-geometrie/dnb-geo/app.py | Backend FastAPI (routes + rotation + matplotlib) |
| /var/www/ansu-geometrie/dnb-geo/static/ | Frontend HTML/CSS/JS interactif QCM |
| dnb-geo-bot.service | Service systemd |
| nginx → /dnb-geo → :8767 | Reverse proxy (via b.ansu-demo.net) |
04
Agent Naïf — apprends en enseignant
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Frontend │────▶│ FastAPI │────▶│ Mistral │
│ HTML/JS │◀────│ :8768 │◀────│ Medium API │
│ KaTeX │ │ │ │ │
│ │ │ matplotlib │ │ "naïf" 🤖 │
│ │ │ subprocess │ └──────────────┘
└──────────────┘ └──────────────┘
Pipeline
- L'élève est le professeur — il donne des INSTRUCTIONS pour construire une figure
- Le backend appelle Mistral Medium avec un prompt "naïf" : l'agent suit les instructions À LA LETTRE
- Le LLM génère un bloc
```pythonmatplotlib correspondant exactement aux instructions - Le backend exécute le code, sauvegarde la figure PNG
- L'agent explique ce qu'il a compris et demande confirmation
- Si la figure est incomplète → l'élève reformule (apprentissage par l'enseignement)
Pédagogie — Learning by Teaching
- Principe : apprendre en enseignant
- Rôle élève : donne des instructions, l'agent exécute naïvement
- Figures : PNG (matplotlib, 150 DPI)
- Modèle : Mistral Medium · ~5-15s
Fichiers — Agent Naïf (:8768)
| /var/www/ansu-geometrie/geo3/app.py | Backend FastAPI (routes + HTML inline) |
| /var/www/ansu-geometrie/geo3/static/ | PNG générées (geo_naif_<uuid>.png) |
| geo3-bot.service | Service systemd |
| nginx → /geo3 → :8768 | Reverse proxy (via b.ansu-demo.net) |
05
Agent Naïf 2 — complète la figure inachevée
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Frontend │────▶│ FastAPI │────▶│ Mistral │
│ HTML/JS │◀────│ :8773 │◀────│ Medium API │
│ KaTeX │ │ │ │ │
│ │ │ matplotlib │ │ "naïf" + 🎯 │
│ │ │ subprocess │ │ pensée secrète│
└──────────────┘ └──────────────┘ └──────────────┘
Pipeline
- Mécanique inversée de l'Agent Naïf — c'est l'AGENT qui propose une figure inachevée
- Plusieurs objets candidats étiquetés (points A/B/C, droites d1/d2, cercles C1…), un seul correct, les autres sont des leurres
- L'élève répond en désignant une étiquette (« la droite d2 ») — pas de longue phrase
- La bonne réponse reste cachée dans une
<pensee_secrete>(jamais montrée) - Progression adaptative : relier un triangle → angle droit → carré → rectangle → tangente, carré inscrit dans un cercle…
- Mauvais choix → l'agent dessine littéralement l'erreur pour la révéler
Pédagogie — Compléter par désignation
- Principe : le schéma de départ étaye une consigne simple (désigner, pas reformuler)
- Rôle élève : choisit le bon objet parmi des leurres plausibles
- Figures : PNG (matplotlib, 150 DPI), points + objets persistés (anti-dérive)
- Modèle : Mistral Medium · ~5-15s
Fichiers — Agent Naïf 2 (:8773)
| /var/www/ansu-geometrie/geo4/app.py | Backend FastAPI (socle ansu_core) |
| /var/www/ansu-geometrie/geo4/prompt.txt | Prompt « défi par désignation » |
| /var/www/ansu-geometrie/geo4/static/ | PNG générées (geo_naif2_<uuid>.png) |
| geo4-bot.service | Service systemd |
| nginx → /geo4 → :8773 | Reverse proxy (via b.ansu-demo.net) |
06
Mimo — exercices interactifs sur les équations de droites
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Frontend │────▶│ Express │────▶│ LLM │
│ React 19 │◀────│ :3001 │◀────│ génération │
│ GeoGebra │ │ API │ │ exercices │
│ Tailwind │ │ (tsx) │ │ adaptatifs │
└──────────────┘ └──────────────┘ └──────────────┘
Pipeline
- Exercices QCM sur les droites affines y = ax + b (programme Seconde)
- Trois graphiques GeoGebra par exercice : la droite correcte + deux leurres basés sur des erreurs classiques (confusion signe de la pente, inversion ordonnée à l'origine, échange pente/ordonnée)
- Feedback adaptatif en deux niveaux : indice au 1er essai erroné, correction complète au 2e
- Génération déterministe des exercices (seed RNG) pour reproductibilité
- Stack React 19 + TypeScript + Vite + Tailwind CSS, backend Express
Pédagogie — misconceptions-driven
- Principe : chaque distracteur correspond à une erreur de conception identifiée
- Niveau : Seconde (droites affines, coefficient directeur, ordonnée à l'origine)
- Figures : GeoGebra interactif dans le navigateur
- Modèle : LLM pour la génération d'exercices · ~3-8s
Fichiers — Mimo (:3001)
| /var/www/ansu-geometrie/mimo/src/ | Code source React + TypeScript (Vite) |
| /var/www/ansu-geometrie/mimo/server/ | Serveur Express (génération IA) |
| /var/www/ansu-geometrie/mimo/dist/ | Build statique servi par nginx |
| mimo-server.service | Service systemd |
| nginx → /mimo → dist/ + /mimo/api → :3001 | Reverse proxy + alias |