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

  1. Phase 1 – Interaction (jaune clair) : l’étudiant pose une question sur WhatsApp.
  2. Phase 2 – Routage (gris clair) : le système détecte la matière (irrigation, maraîchage…).
  3. Phase 3 – Recherche (vert clair) : le RAG va chercher dans 3 sources pratiques : OdoLearn, YouTube, MOOC.
  4. Phase 4 – Génération (bleu clair) : l’IA assemble une réponse claire, comme un prof de TP.
  5. Phase 5 – Restitution (rose clair) : l’étudiant reçoit une réponse pratique + liens directs vers ressources.



Découvrir plus

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)

  1. 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.
  1. 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).
  1. 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”.
  1. 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.
  1. 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.
  1. 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*

  1. Tracer la ligne à 10 cm des tiges.
  2. Poser les émetteurs (espacement 30–40 cm).
  3. Purger, puis régler à 1,5 L/plante/j (matin).
  4. 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 ?