Maintenance

Backend Status
Loading...
External APIs
Loading...
Actions

Sessions

Master File
Session History (Last 5)

Exercise Extraction Pipeline

📖 Guide — comment fonctionne cet onglet (à lire une fois)

But : partir d'un livre en PDF et en sortir une bibliothèque d'exercices que le coach pourra proposer pendant une séance. Le travail se fait en 3 étapes, dans l'ordre : Step 1 → Step 2 → Step 3.

🔎 Comment les exercices sont repérés (le tri en entonnoir)

Un livre contient surtout du texte explicatif, et seulement quelques vrais exercices. On les trie par passes successives, de la moins chère à la plus fine :

  1. Découpage. Le PDF est coupé en blocs (une section par titre).
  2. Pré-filtre gratuit (l'« heuristique »). Des règles simples donnent une note à chaque bloc : contient-il une phrase d'exercice, des étapes numérotées, des verbes d'action ? Aucune IA, instantané, gratuit. Son rôle : ne rien rater — il laisse passer même les blocs douteux. Le tri fin vient juste après.
  3. Juge IA (1er passage, strict). Une IA lit chaque bloc retenu et répond : exercice ou pas, avec un niveau de confiance de 0 à 1. C'est elle qui décide vraiment.
  4. Repêchage (2e juge, indulgent). Quand le 1er juge hésite (confiance basse), un 2e juge plus souple relit le bloc pour rattraper les vrais exercices qui auraient failli passer à la trappe.
  5. Complétion. Le texte est élargi autour du bloc pour être sûr d'avoir l'exercice entier (énoncé + consignes), jamais coupé en deux.

Résultat de Step 1 : un fichier .md par exercice. Tu peux les relire et les corriger à la main à tout moment.

🧭 Les 3 étapes

  • Step 1 — Extract. Déposer le PDF, donner un titre, lancer. Sort les fichiers d'exercices bruts (status: raw).
  • Step 2 — Enrich. Une IA ajoute les étiquettes utiles au coaching (émotions visées, mécanisme, durée, matériel, niveau d'effort, mode d'emploi…). Les fichiers passent en status: enriched.
  • Step 3 — Build Search Index. Range tous les exercices enrichis dans un index de recherche (LanceDB) pour que le coach retrouve le bon exercice au bon moment.

🎛️ Les réglages de Step 1 (en clair)

  • Modèle : quel « cerveau » IA fait le tri. Haiku = rapide et bon marché (défaut, suffit la plupart du temps) ; Sonnet = plus fin mais plus lent et plus cher.
  • Confidence min : la barre que le bloc doit franchir pour être gardé. Plus haut = plus sévère (moins d'exercices, mais plus sûrs) ; plus bas = plus permissif (plus d'exercices, dont quelques faux). Défaut 0,70.
  • ⚙️ Avancé — pré-filtre : règle la sensibilité du tri gratuit avant l'IA. Le levier principal est le score minimum candidat : le baisser fait tester plus de blocs par l'IA (on rate moins, mais ça coûte plus d'appels). Les poids disent à quel point chaque indice (phrase-exercice, structure, verbe d'action) compte.
  • ⚙️ Avancé — repêchage : active/règle le 2e juge indulgent. Utile si de vrais exercices sont ratés ; à laisser tel quel sinon.

🩺 Si le résultat n'est pas bon

  • Des exercices manquent → baisse Confidence min, ou baisse le score minimum candidat dans Avancé. Pour vérifier ce qui a été écarté : bouton 📊 Journal des titres (les lignes grises = blocs bloqués par le pré-filtre).
  • Trop de faux exercices → monte Confidence min.
  • ↺ Réinitialiser les défauts remet tous les réglages avancés à leurs valeurs d'origine.

🧨 Reset LanceDB (Step 3) vide entièrement l'index de recherche sans toucher aux fichiers .md — pour repartir propre avant de réindexer. 🗑️ Delete All (bibliothèque) supprime au contraire les fichiers d'exercices eux-mêmes.

Step 1 — Extract Exercises from a PDF
Reads a PDF, detects exercises using rules + AI, and writes one Markdown file per exercise to data/exercises/books/<book-id>/. Each file has status: raw.
0.55
⚙️ Avancé — Recall heuristique (pré-filtre gratuit)
L'heuristique est un pré-filtre gratuit avant l'IA : elle vise le recall (laisser passer le douteux). La précision est gérée ensuite par le juge LLM. Plafond de recall = lignes grises de headings.xlsx.
Baisser = plus de blocs testés par l'IA = plus de recall (mais plus d'appels). Levier recall le plus puissant.
Un bloc plus court que ce nombre de mots est ignoré d'office (trop court pour être un exercice).
Points ajoutés si phrase d'exercice explicite (« your task is to », « do this exercise »…).
Points si structure : étapes numérotées, puces, ≥2 questions, trous à remplir.
Points si ≥1 verbe d'action adressé au lecteur (écris, liste, réfléchis, note…).
Points retirés si phrase typiquement non-exercice (« en conclusion », « des études montrent »…). Monter = filtre plus dur.
⚙️ Avancé — 2e passe lenient (repêchage)
Quand le 1er juge (strict) est hésitant sur un bloc, un 2e juge indulgent le relit pour rattraper les vrais exercices ratés (faux négatifs).
Active la relecture indulgente sur les verdicts hésitants du 1er juge.
On relit un bloc quand la confiance du 1er juge est < ce seuil. ⚠️ Doit rester > ~0.75 : sinon la 2e passe ne se déclenche jamais (Haiku ne descend pas plus bas).
Le juge indulgent ne fait garder un bloc que s'il dit EXERCISE avec une confiance ≥ ce seuil. Monter = repêchage plus prudent.
Produces: raw .md files · Uses AI for validation · May take several minutes
Step 2 — Enrich Exercises with Coaching Metadata
For each status: raw exercise, asks an LLM to tag emotions, mechanisms, effort level, and usage context. Updates the Markdown file frontmatter to status: enriched.
You can manually edit the .md files before or after this step. Re-run to refresh enriched files.
Loading...
Produces: enriched metadata in frontmatter · Uses AI · May take several minutes
Step 3 — Build Search Index
Takes all status: enriched exercise files, computes embeddings, and loads them into LanceDB. Run this after Step 2, or after any manual edit to a .md file.
Manual edit flow: edit the file → set status: enriched → run this step.
Loading...
Produces: LanceDB vector index at data/exercises/lancedb/. Reset LanceDB vide entièrement l'index vectoriel (les fichiers .md ne sont pas touchés).
Library — All Exercises
📄 Documentation Télécharge la documentation PDF du pipeline. 📊 Log of headings Journal Excel de diagnostic : titres détectés, mots par section, parcours heuristique → IA. Généré à chaque extraction.
⬇️ Export Excel Exporte tous les exercices et leurs métadonnées (1 ligne par exercice). Réimporte un xlsx modifié (rapprochement par id). Relancer Step 3 ensuite pour ré-indexer.
Vide l'affichage de la liste. Les fichiers .md sont conservés. Supprime définitivement tous les exercices de la bibliothèque.
Loading...

Agents

Agent Files
Loading agents...
Indice de confiance Agent 2 → Agent 3

À la fin de sa phase, l'Agent 2 déduit de la conversation un profil de l'utilisateur (émotions, intensité 1-10, état somatique, cadre, temps disponible, énergie, besoin du moment) et déclare un indice de confiance entre 0 et 1 sur l'exactitude de ces déductions.

Ce que veut dire ce seuil : si l'indice déclaré par l'Agent 2 est supérieur ou égal au seuil ci-dessous, l'Agent 3 fait confiance au profil et passe directement au choix de l'exercice. S'il est inférieur, l'Agent 3 ouvre par 3-4 questions rapides (intensité, temps disponible, cadre, besoin) pour vérifier le profil avant de proposer un exercice.
0 = ne jamais poser ces questions (toujours faire confiance) · 1 = toujours les poser. Défaut : 0.7.

Tests

Tests unitaires

Exécute la suite pytest côté serveur (~2s) — détecte les régressions de logique pure : orchestrateur, state machine, signaux, extraction Excel, agent loader, config.

Tests scénarios (E2E texte)

Charge un Excel de scénarios. Une IA joue l'utilisateur (improvised) ou rejoue un script (scripted). Pas d'audio — text direct.

LLM par scénario via les colonnes user_llm (utilisateur simulé) et jury_llm (jury). Valeurs : haiku = Haiku 4.5, deepseek = DeepSeek, pro_sonnet = Sonnet 4.6.

⬇️ Télécharger template Excel
ID Nom Type Phase Tours Tokens Coût € Jury Statut
Historique des runs
Date Run ID Total PASS FAIL ERROR Actions
❓