Bot WhatsApp
> 4) module de post-traitement pédagogique
voici un module de post-traitement pédagogique prêt à brancher après la génération RAG → LLM, optimisé WhatsApp (réponses courtes, claires, actionnables), avec garde-fous, citations et “pour aller plus loin”.

Pédagogique en découpant l’architecture en phases claires, avec couleurs et icônes pour chaque étape.
🌱 Explication des phases
- Phase 1 – Interaction (jaune clair) : l’étudiant pose une question sur WhatsApp.
- Phase 2 – Routage (gris clair) : le système détecte la matière (irrigation, maraîchage…).
- Phase 3 – Recherche (vert clair) : le RAG va chercher dans 3 sources pratiques : OdoLearn, YouTube, MOOC.
- Phase 4 – Génération (bleu clair) : l’IA assemble une réponse claire, comme un prof de TP.
- Phase 5 – Restitution (rose clair) : l’étudiant reçoit une réponse pratique + liens directs vers ressources.
Objectif
Transformer le brouillon du LLM en réponse pédagogique fiable, au format TP (étapes, matériel, sécurité), avec sources claires (OdoLearn / YouTube / MOOC) et risques pédagogiques/sécurité maîtrisés.
Pipeline (6 étapes)
- Contrôles de factualité & sécurité
-
Hallucination guard
- Vérifier que chaque fait clé (chiffres, protocoles, dosages, normes) est soutenu par ≥1 passage du contexte.
- Rejeter/éditer tout élément sans source ; si nécessaire, demander une précision à l’étudiant.
-
Sanity checks (agri TP)
- Unités : L/h, g/L, cm, °C cohérentes (ex. débit goutte-à-goutte tomates 1–2 L/plante/j).
- Ordre logique d’étapes (préparation → exécution → contrôle).
- Bornes sécuritaires (pas de dosage “extrême” ; produits autorisés).
-
Filtres de sécurité
- Pas d’incitation à tricher (ex. réponses d’examen).
- Pas de données perso.
- En “mode examen” : donner méthode et références, pas la solution complète.
- Normalisation du style pédagogique (prof de TP)
- Ton direct, phrases courtes, verbes d’action.
- Niveaux : adapter L1 (aucun jargon inutile, définir mots techniques).
- Si MG demandé : FR → traduction contrôlée (glossaire FR⇄MG).
- Mise en forme WhatsApp
- Max ~900–1 100 caractères (scindable en 2 messages si besoin).
- Bullet points (•), numérotation (1., 2., 3.), gras minimal (*…*) pour titres.
- Ajout boutons rapides (si intégration WABA) : “Voir TP OdoLearn”, “Voir la vidéo”, “Séquence MOOC”, “Exercice similaire”.
- Glossaire & définitions courtes
- Détécter 3–5 termes techniques → ajouter mini-glossaire (1 ligne/terme).
- FR⇄MG si l’étudiant a choisi MG.
- Citations ancrées & liens sources
-
2–5 citations obligatoires (au moins 2 sources différentes si possible).
- OdoLearn : OdoLearn — “Pose goutte-à-goutte”, p. 2
- YouTube : YouTube — “Drip setup”, 03:12
- MOOC : MOOC Irrigation chap. 2.4
- Renvoyer liens cliquables (si politiques internes OK). Sinon, intitulés + codes internes (doc_id@v, chap, timestamp).
- Si aucune source valable → demande de précision.
- Bloc “Résumé & Aller plus loin”
- Résumé en 2–3 puces (ce qu’il faut retenir).
- Pour aller plus loin : 1 TP OdoLearn + 1 vidéo YouTube (timestamp) + 1 séquence MOOC.
Gabarit de sortie (WhatsApp-friendly)
*Objectif du TP*
Installer un goutte-à-goutte pour tomates sur planches de 10 m.
*Matériel*
• Tuyau PE 16 mm • Émetteurs 2 L/h • Piques • Téflon • Coupe-tuyau
*Étapes*
- Tracer la ligne à 10 cm des tiges.
- Poser les émetteurs (espacement 30–40 cm).
- Purger, puis régler à 1,5 L/plante/j (matin).
- Tester 5 min et vérifier l’absence de fuites.
*Contrôles & erreurs*
• Sol détrempé = débit trop élevé. • Bouchons en bout de ligne fermés.
*Sécurité*
• Couper la pompe avant toute intervention. • Porter gants/yeux.
*Citations*
• OdoLearn — “Irrigation goutte-à-goutte (L1)”, p. 2.
• YouTube — “Installer goutte-à-goutte”, 03:12.
• MOOC Irrigation chap. 2.4.
*Résumé*
• Ligne à 10 cm des plants • Émetteurs 2 L/h • 1,5 L/plante/jour matin.
*Pour aller plus loin*
• TP OdoLearn: Pose & test de débit. • Vidéo: réglage en 4 min (03:12). • MOOC 2.4: maintenance.
(Boutons : Voir TP • Voir vidéo • Séquence MOOC)
Règles de validation automatiques (avant envoi)
- Règle 1 — Citations : count(citations) ≥ 2 ET couvre ≥2 types de sources.
- Règle 2 — Étapes : 1 ≤ n_étapes ≤ 8, chaque étape commence par verbe d’action.
- Règle 3 — Unités : toutes les valeurs numériques portent une unité connue (cm, L/h, g/L, °C).
- Règle 4 — Sécurité : ≥1 point sécurité si la réponse mentionne outils/énergie/produits.
- Règle 5 — Longueur : len(texte) ≤ seuil_whatsapp.
- Règle 6 — Mode examen : si exam_mode=true, masquer résultats finaux, ne donner que méthode + références.
Glossaire (auto-détection)
- Émetteur (goutteur) : pièce qui délivre un débit fixe (ex. 2 L/h).
- Purge : ouverture de fin de ligne pour chasser l’air/impuretés.
- ESP : espacement entre émetteurs.
(Option MG : fournir traduction alignée au glossaire interne FR⇄MG.)
Pseudo-code (post-process)
def postprocess(answer_draft, context_passages, mode="normal", lang="fr"): facts = extract_facts(answer_draft) # nombres, unités, protocoles citations = map_facts_to_sources(facts, context_passages) if not min_citations_ok(citations): return ask_clarify() answer = enforce_style(answer_draft, role="prof_TP", max_len=1100) answer = ensure_steps(answer, min_steps=3, max_steps=8) answer = add_safety_if_needed(answer) answer = attach_citations(answer, citations) # OdoLearn p.xx / YT mm:ss / MOOC chap answer = add_summary_and_more(answer, pick_more(context_passages)) answer = add_glossary(answer, lang_terms=['irrigation','débit','goutteur']) if mode == "exam": answer = redact_to_method_only(answer) if lang == "mg": answer = translate_fr_to_mg(answer, glossary="agri") return answer
KPI de qualité (post-traitement)
- Faithfulness (RAGAS) ≥ 0,85.
- Citation hit-rate (sources citées ∈ top-k) ≥ 0,95.
- Unit Sanity : 100 % des valeurs numériques avec unité valide.
- Sécurité : ≥ 1 mention quand outils/énergie/produits détectés.
- Satisfaction (👍/👎) ≥ 85 % 👍 sur 30 jours glissants.
Cas de fallback (exemples prêts)
-
Manque de source :
“Je n’ai pas assez de sources pour confirmer le dosage. Peux-tu préciser la culture (tomate/poivron) et la longueur de ligne ? Je te renvoie ensuite un TP validé.”
-
Doute sur unité :
“Tu parles de L/h par goutteur ou L/plante/jour ? Les deux existent, je m’aligne sur ton besoin.”
Souhaitez-vous que je génère un gabarit de code (middleware FastAPI/Node) qui applique ces règles et reformate automatiquement les réponses du LLM pour WhatsApp, avec options FR/MG et mode examen ?