From 3bbf43cb307efdd5df0833f931d892dadee439b1 Mon Sep 17 00:00:00 2001 From: jsboige Date: Mon, 26 Oct 2026 12:39:57 +0100 Subject: [PATCH] Fix(langchain,#17387): Labs 5 et 7 -- six findings Hermes des 18-19/10 traites MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Les six audits Hermes de la campagne #17073 postes entre le 2026-10-18T17:07Z et le 2026-10-19T01:28Z arrivent apres les livraisons #19625 (Lab5) et #17392 (Lab6) : leurs findings n'avaient pas ete consommes. Cette tranche prend les deux carnets les plus recents du lot, re-verifie chaque finding firsthand (protocole audit-reassessment) et corrige les cinq confirmes. Lab5-Viz-ML (3 findings confirmes) - F1 exercise-mismatch : l'enonce de l'Exercice 1 annoncait « les deux volets de l'exercice » alors que son stub les etiquette « Exercice 1 » / « Exercice 2 », et l'Exercice 4 renvoyait au volet binaire comme « l'Exercice 1 ». Les deux enonces nomment desormais les etiquettes du stub. - F2 stale-claim : l'indice du boxplot portait `x='catégorie'` accentue. En-tete reel du jeu (`Lab4-DataWrangling/transactions.csv`) : `date,id_produit,categorie,quantite,prix_unitaire` -- la recopie levait un KeyError. Indice corrige en `categorie`, avec la raison ecrite. - F3 stale-claim : « Fichier `transactions.csv` genere dans le Lab 4 ». Mesure : 0 occurrence de `to_csv` dans Lab4 a aucun etat commis (`git log -S to_csv` vide), et son README porte une section « Donnees fournies ». Le prerequis dit desormais que le fichier est fourni avec le Lab 4. Lab7-Data-Analysis-Agent (2 findings confirmes) - F1 concept-error : la prose et la reference 4 nommaient `PythonREPLTool` (nom d'outil `python_repl`). Les sorties commitees des cellules 10, 12, 14 et 16 impriment `Invoking: python_repl_ast`, soit `PythonAstREPLTool`, la classe distincte reellement branchee par `create_pandas_dataframe_agent`. Les trois occurrences sont corrigees et le nom d'outil observable est nomme. - F2 exercise-mismatch : l'enonce de l'Exercice 3 annoncait « les donnees des etudiants creees dans le notebook Pandas ». Aucun jeu d'etudiants n'y est livre (l'exercice 1.3 part d'un `df = None` a completer) et le stub de cet exercice construit lui-meme un DataFrame synthetique de 8 lignes. L'enonce decrit ce que le stub fait reellement. Portee : markdown seul, 7 cellules, 11 insertions / 11 deletions. Aucune cellule code modifiee, `outputs` et `execution_count` byte-identiques, ids de cellules et metadonnees du carnet inchanges (verifie cellule par cellule contre HEAD). Co-Authored-By: Claude Sonnet 5.5 --- .../Labs/Lab5-Viz-ML/Lab5-Viz-ML.ipynb | 12 ++++++------ .../Lab7-Data-Analysis-Agent.ipynb | 10 +++++----- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/MyIA.AI.Notebooks/ML/DataScienceWithAgents/Track1-LangChain/Day3-Data-Agents/Labs/Lab5-Viz-ML/Lab5-Viz-ML.ipynb b/MyIA.AI.Notebooks/ML/DataScienceWithAgents/Track1-LangChain/Day3-Data-Agents/Labs/Lab5-Viz-ML/Lab5-Viz-ML.ipynb index 6e435125f6f..58e230a6b25 100644 --- a/MyIA.AI.Notebooks/ML/DataScienceWithAgents/Track1-LangChain/Day3-Data-Agents/Labs/Lab5-Viz-ML/Lab5-Viz-ML.ipynb +++ b/MyIA.AI.Notebooks/ML/DataScienceWithAgents/Track1-LangChain/Day3-Data-Agents/Labs/Lab5-Viz-ML/Lab5-Viz-ML.ipynb @@ -43,12 +43,12 @@ "\n", "### Prérequis\n", "- Avoir complété le Lab 4 (nettoyage de données avec Pandas)\n", - "- Fichier `transactions.csv` généré dans le Lab 4\n", + "- Fichier `transactions.csv` fourni avec le Lab 4 (section « Données fournies » de son README)\n", "- Notions de base en statistiques\n", "\n", "### Durée estimée : 40-50 minutes\n", "\n", - "***" + "***\n" ] }, { @@ -671,7 +671,7 @@ "source": [ "### Exercice 1 : Prix moyen par catégorie et classification binaire\n", "\n", - "À vous de pratiquer la visualisation et la classification binaire. La cellule ci-dessous contient les deux volets de l'exercice — complétez-la.\n" + "À vous de pratiquer la visualisation et la classification binaire. La cellule ci-dessous contient les deux volets de cet exercice — complétez-les. Ses deux blocs sont étiquetés `Exercice 1` (prix moyen par catégorie) et `Exercice 2` (classification binaire) **à l'intérieur du stub** : ce sont deux volets d'un même exercice, et l'Exercice 4 plus bas s'appuie sur le second.\n" ] }, { @@ -752,8 +752,8 @@ "\n", "**Indices** :\n", "- Utilisez `sns.histplot()` avec le paramètre `bins` pour l'histogramme\n", - "- Utilisez `sns.boxplot()` avec `x='catégorie'` et `y='prix_unitaire'` pour le boxplot\n", - "- Utilisez `plt.subplots(1, 2, figsize=(14, 5))` pour afficher les deux graphiques côte à côte" + "- Utilisez `sns.boxplot()` avec `x='categorie'` et `y='prix_unitaire'` pour le boxplot — la colonne du jeu s'écrit **sans accent** (`categorie`), la version accentuée lève un `KeyError`\n", + "- Utilisez `plt.subplots(1, 2, figsize=(14, 5))` pour afficher les deux graphiques côte à côte\n" ] }, { @@ -902,7 +902,7 @@ "source": [ "### Exercice 4 : Courbe ROC et évaluation visuelle du modèle\n", "\n", - "L'accuracy et la matrice de confusion donnent une vision globale, mais la courbe ROC (Receiver Operating Characteristic) permet de visualiser le compromis entre le taux de vrais positifs et le taux de faux positifs à différents seuils de décision. Vous allez tracer la courbe ROC pour la classification binaire construite à l'Exercice 1 (teneur en alcool élevée vs. basse).\n", + "L'accuracy et la matrice de confusion donnent une vision globale, mais la courbe ROC (Receiver Operating Characteristic) permet de visualiser le compromis entre le taux de vrais positifs et le taux de faux positifs à différents seuils de décision. Vous allez tracer la courbe ROC pour la classification binaire construite au **second volet de l'Exercice 1** — le bloc étiqueté `Exercice 2` dans le stub (teneur en alcool élevée vs. basse).\n", "\n", "**Objectif** : construire une cible binaire (`alcool_eleve` = 1 si la teneur en alcool dépasse la médiane du jeu), entraîner un `LogisticRegression`, puis tracer la courbe ROC avec `sklearn.metrics.roc_curve`.\n", "\n", diff --git a/MyIA.AI.Notebooks/ML/DataScienceWithAgents/Track1-LangChain/Day3-Data-Agents/Labs/Lab7-Data-Analysis-Agent/Lab7-Data-Analysis-Agent.ipynb b/MyIA.AI.Notebooks/ML/DataScienceWithAgents/Track1-LangChain/Day3-Data-Agents/Labs/Lab7-Data-Analysis-Agent/Lab7-Data-Analysis-Agent.ipynb index 9a22ac708e3..5886ca874ab 100644 --- a/MyIA.AI.Notebooks/ML/DataScienceWithAgents/Track1-LangChain/Day3-Data-Agents/Labs/Lab7-Data-Analysis-Agent/Lab7-Data-Analysis-Agent.ipynb +++ b/MyIA.AI.Notebooks/ML/DataScienceWithAgents/Track1-LangChain/Day3-Data-Agents/Labs/Lab7-Data-Analysis-Agent/Lab7-Data-Analysis-Agent.ipynb @@ -310,9 +310,9 @@ "tags": [] }, "source": [ - "Voici la fonction clé : `create_pandas_dataframe_agent`. C'est un \"constructeur d'agent\" spécialisé. Au lieu de lui donner nos propres outils manuellement, cette fonction va analyser le DataFrame et fournir à l'agent une boîte à outils (`PythonREPLTool`) lui permettant d'écrire et d'exécuter du code Python (et donc Pandas) pour répondre à des questions.\n", + "Voici la fonction clé : `create_pandas_dataframe_agent`. C'est un \"constructeur d'agent\" spécialisé. Au lieu de lui donner nos propres outils manuellement, cette fonction va analyser le DataFrame et fournir à l'agent une boîte à outils (`PythonAstREPLTool`) lui permettant d'écrire et d'exécuter du code Python (et donc Pandas) pour répondre à des questions. Son nom d'outil apparaît en `python_repl_ast` dans les traces d'exécution plus bas.\n", "\n", - "> **Référence — CodeAct.** Le mécanisme au cœur de cet agent — un LLM qui *écrit puis exécute lui-même du code* (ici via `PythonREPLTool`) pour agir et observer le résultat — est le paradigme **CodeAct** (*executable code actions*), formalisé par Wang et al. (2024) : utiliser du code exécutable comme espace d'action unifie raisonnement, appel d'outils et calcul dans une même boucle, plutôt que d'émettre des appels d'API figés. C'est précisément ce que fait l'agent pandas : il génère du code Pandas, l'exécute, lit la sortie, puis itère. Le paradigme ReAct (boucle Pensée→Action→Observation, Lab 6) sous-tend cette itération ; le prolongement data-science SOTA (DS-STAR) est au Lab 10." + "> **Référence — CodeAct.** Le mécanisme au cœur de cet agent — un LLM qui *écrit puis exécute lui-même du code* (ici via `PythonAstREPLTool`) pour agir et observer le résultat — est le paradigme **CodeAct** (*executable code actions*), formalisé par Wang et al. (2024) : utiliser du code exécutable comme espace d'action unifie raisonnement, appel d'outils et calcul dans une même boucle, plutôt que d'émettre des appels d'API figés. C'est précisément ce que fait l'agent pandas : il génère du code Pandas, l'exécute, lit la sortie, puis itère. Le paradigme ReAct (boucle Pensée→Action→Observation, Lab 6) sous-tend cette itération ; le prolongement data-science SOTA (DS-STAR) est au Lab 10.\n" ] }, { @@ -873,14 +873,14 @@ "source": [ "### Exercice 3 : Analyser un nouveau dataset avec l'agent\n", "\n", - "Un analyste de données doit souvent travailler avec des sources de données nouvelles. Vous allez charger un dataset différent (les données des étudiants créées dans le notebook Pandas) et demander à l'agent de produire une analyse complète.\n", + "Un analyste de données doit souvent travailler avec des sources de données nouvelles. Vous allez construire un jeu de données différent de celui de la démonstration — un petit tableau d'étudiants créé dans l'exercice lui-même, sans dépendre d'un autre carnet — et demander à l'agent de produire une analyse complète.\n", "\n", "**Objectif** : Créer un nouveau DataFrame à partir de données synthétiques et configurer un agent pour l'analyser.\n", "\n", "**Indices** :\n", "- Créez un DataFrame avec `pd.DataFrame()` contenant des données d'étudiants (Nom, Age, Note, Filière)\n", "- Utilisez `create_pandas_dataframe_agent()` avec le nouveau DataFrame\n", - "- Demandez à l'agent de calculer la moyenne par filière, d'identifier les outliers et de produire un résumé" + "- Demandez à l'agent de calculer la moyenne par filière, d'identifier les outliers et de produire un résumé\n" ] }, { @@ -984,7 +984,7 @@ "1. X. Wang, Y. Chen, L. Yuan, et al., *Executable Code Actions Elicit Better LLM Agents* (CodeAct), ICML 2024, PMLR 235:50208-50232, arXiv:2402.01030. Paradigme de l'action-par-code-exécutable : un LLM écrit et exécute lui-même du code pour raisonner et agir — mécanisme central du `create_pandas_dataframe_agent` (Étape 2).\n", "2. S. Yao et al., *ReAct: Synergizing Reasoning and Acting in Language Models*, ICLR 2023, arXiv:2210.03629. Boucle Pensée→Action→Observation sous-jacente à l'itération de l'agent — détaillée au Lab 6.\n", "3. Google Research, *DS-STAR: A State-of-the-Art Versatile Data Science Agent*, 2025. Agent data-science SOTA — référence détaillée au Lab 10.\n", - "4. H. Chase, *LangChain*, 2022 ; `langchain_experimental`. Implémentation de `create_pandas_dataframe_agent` / `PythonREPLTool` — référence bibliographique détaillée au Lab 8.\n" + "4. H. Chase, *LangChain*, 2022 ; `langchain_experimental`. Implémentation de `create_pandas_dataframe_agent` / `PythonAstREPLTool` (nom d'outil `python_repl_ast`) — référence bibliographique détaillée au Lab 8.\n" ] } ],