Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
174 changes: 87 additions & 87 deletions COURSE_CATALOG.generated.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion MyIA.AI.Notebooks/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Le catalogue rassemble près de 500 notebooks répartis sur les onze domaines ci
series: ALL
total: 504
breakdown: GenAI=120, QuantConnect=101, SymbolicAI=100, Search=45, Probas=43, Sudoku=32, ML=27, GameTheory=25, RL=6, CaseStudies=4, IIT=1
maturity: PRODUCTION=359, BETA=105, ALPHA=31, DRAFT=5, TEMPLATE=4
maturity: PRODUCTION=365, BETA=99, ALPHA=31, DRAFT=5, TEMPLATE=4
-->

Dernière mise à jour : 2026-05-28
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -13,47 +13,7 @@
},
"tags": []
},
"source": [
"## 5. Agent : 🧐 InformalAnalysisAgent (Définitions)\n",
"\n",
"\n",
"[Retour au README](../README.md) | [Precedent : Init](./Argument_Analysis_Agentic-0-init.ipynb) | [Suivant : PL Agent](./Argument_Analysis_Agentic-2-pl_agent.ipynb)\n",
"\n",
"Cet agent est spécialisé dans l'analyse informelle du discours.\n",
"\n",
"**Rôle :**\n",
"* Identifier les arguments principaux présents dans un texte (`InformalAnalyzer.semantic_IdentifyArguments`, puis `StateManager.add_identified_argument`).\n",
"* Analyser la présence de sophismes en explorant une taxonomie externe (CSV via Pandas) et en enregistrant les trouvailles (`InformalAnalyzer.explore_fallacy_hierarchy`, `InformalAnalyzer.get_fallacy_details`, puis `StateManager.add_identified_fallacy`).\n",
"* Répondre aux tâches assignées par le PM (`StateManager.add_answer`).\n",
"\n",
"**Composants Définis Ci-dessous :**\n",
"* Constantes et `InformalAnalysisPlugin` (Classe V12)\n",
"* Prompt Sémantique (`prompt_identify_args_v7`) et Fonction Setup (`setup_informal_kernel`)\n",
"* Instructions Système (`INFORMAL_AGENT_INSTRUCTIONS` - V13)\n",
"\n",
"---\n",
"\n",
"### Contexte et Objectifs\n",
"\n",
"L'**InformalAnalysisAgent** constitue le premier niveau d'analyse argumentative dans notre système multi-agents. Contrairement à l'analyse formelle qui manipule des structures logiques strictes, cet agent travaille sur le **langage naturel** pour détecter:\n",
"\n",
"1. **Les arguments implicites et explicites** - en utilisant un LLM pour extraire la structure argumentative du texte\n",
"2. **Les sophismes rhétoriques** - en explorant une taxonomie hiérarchique de plus de 100 types de sophismes\n",
"\n",
"Cette approche hybride (LLM + base de connaissances structurée) permet de combiner la compréhension contextuelle des modèles de langage avec la rigueur d'une taxonomie formelle des erreurs de raisonnement.\n",
"\n",
"### Architecture du Plugin\n",
"\n",
"Le plugin `InformalAnalysisPlugin` s'appuie sur trois piliers techniques:\n",
"\n",
"| Composant | Technologie | Fonction |\n",
"|-----------|-------------|----------|\n",
"| **Analyse sémantique** | Semantic Kernel + LLM | Extraction d'arguments via prompt engineering |\n",
"| **Taxonomie des sophismes** | Pandas DataFrame + CSV | Navigation hiérarchique dans la classification des erreurs |\n",
"| **Caching intelligent** | TTL en mémoire | Éviter les rechargements répétés du CSV (1h de cache) |\n",
"\n",
"> **Note technique**: La taxonomie provient du projet open-source [Argumentum](https://github.com/ArgumentumGames/Argumentum), un jeu éducatif sur l'argumentation critique."
]
"source": "## Introduction : Agent InformalAnalysisAgent (Definitions)\n\n\n[Retour au README](../README.md) | [Precedent : Init](./Argument_Analysis_Agentic-0-init.ipynb) | [Suivant : PL Agent](./Argument_Analysis_Agentic-2-pl_agent.ipynb)\n\nDans ce notebook, nous definissons l'InformalAnalysisAgent, un agent specialise dans l'analyse informelle du discours. Cet agent identifie les arguments principaux d'un texte et detecte les sophismes en explorant une taxonomie hierarchique (CSV Argumentum) combinee a un LLM.\n\n**Role :**\n* Identifier les arguments principaux presents dans un texte (`InformalAnalyzer.semantic_IdentifyArguments`, puis `StateManager.add_identified_argument`).\n* Analyser la presence de sophismes en explorant une taxonomie externe (CSV via Pandas) et en enregistrant les trouvailles (`InformalAnalyzer.explore_fallacy_hierarchy`, `InformalAnalyzer.get_fallacy_details`, puis `StateManager.add_identified_fallacy`).\n* Repondre aux taches assignees par le PM (`StateManager.add_answer`).\n\n**Composants Definis Ci-dessous :**\n* Constantes et `InformalAnalysisPlugin` (Classe V12)\n* Prompt Semantique (`prompt_identify_args_v7`) et Fonction Setup (`setup_informal_kernel`)\n* Instructions Systeme (`INFORMAL_AGENT_INSTRUCTIONS` - V13)\n\n---\n\n### Contexte et Objectifs\n\nL'**InformalAnalysisAgent** constitue le premier niveau d'analyse argumentative dans notre systeme multi-agents. Contrairement a l'analyse formelle qui manipule des structures logiques strictes, cet agent travaille sur le **langage naturel** pour detecter:\n\n1. **Les arguments implicites et explicites** - en utilisant un LLM pour extraire la structure argumentative du texte\n2. **Les sophismes rhetoriques** - en explorant une taxonomie hierarchique de plus de 100 types de sophismes\n\nCette approche hybride (LLM + base de connaissances structuree) permet de combiner la comprehension contextuelle des modeles de langage avec la rigueur d'une taxonomie formelle des erreurs de raisonnement.\n\n### Architecture du Plugin\n\nLe plugin `InformalAnalysisPlugin` s'appuie sur trois piliers techniques:\n\n| Composant | Technologie | Fonction |\n|-----------|-------------|----------|\n| **Analyse semantique** | Semantic Kernel + LLM | Extraction d'arguments via prompt engineering |\n| **Taxonomie des sophismes** | Pandas DataFrame + CSV | Navigation hierarchique dans la classification des erreurs |\n| **Caching intelligent** | TTL en memoire | Eviter les rechargements repetes du CSV (1h de cache) |\n\n> **Note technique**: La taxonomie provient du projet open-source [Argumentum](https://github.com/ArgumentumGames/Argumentum), un jeu educatif sur l'argumentation critique."
},
{
"cell_type": "markdown",
Expand Down Expand Up @@ -440,81 +400,16 @@
},
"tags": []
},
"outputs": [],
"source": [
"# %% CELLULE [5.2] - Prompt Sémantique et Fonction Setup (Informal)\n",
"# (Remplace une partie de l'ancienne cellule 83ec3fe2)\n",
"\n",
"import semantic_kernel as sk\n",
"import logging\n",
"\n",
"# S'assurer que les dépendances sont là\n",
"if 'InformalAnalysisPlugin' not in globals(): raise NameError(\"Classe InformalAnalysisPlugin non définie.\")\n",
"\n",
"logger = logging.getLogger(\"Orchestration.AgentInformal.Setup\")\n",
"\n",
"# --- Fonction Sémantique (Prompt) pour Identification Arguments ---\n",
"prompt_identify_args_v7 = \"\"\"\n",
"[Instructions]\n",
"Analysez le texte argumentatif fourni ($input) et identifiez les principaux arguments ou affirmations distincts.\n",
"Listez chaque argument de manière concise, un par ligne. Retournez UNIQUEMENT la liste, sans numérotation ou préambule.\n",
"Focalisez-vous sur les affirmations principales défendues ou attaquées.\n",
"\n",
"[Texte à Analyser]\n",
"{{$input}}\n",
"+++++\n",
"[Arguments Identifiés (un par ligne)]\n",
"\"\"\"\n",
"logger.debug(\"Prompt sémantique 'prompt_identify_args_v7' défini.\")\n",
"\n",
"# --- Fonction setup_informal_kernel (V13 - Simplifiée) ---\n",
"def setup_informal_kernel(kernel: sk.Kernel, llm_service):\n",
" \"\"\"\n",
" Configure le kernel pour l'InformalAnalysisAgent.\n",
" Ajoute une instance du InformalAnalysisPlugin et la fonction sémantique.\n",
" \"\"\"\n",
" plugin_name = \"InformalAnalyzer\"\n",
" logger.info(f\"Configuration Kernel pour {plugin_name} (V13 - Plugin autonome)...\")\n",
"\n",
" informal_plugin_instance = InformalAnalysisPlugin()\n",
"\n",
" if plugin_name in kernel.plugins:\n",
" logger.warning(f\"Plugin '{plugin_name}' déjà présent. Remplacement.\")\n",
" kernel.add_plugin(informal_plugin_instance, plugin_name=plugin_name)\n",
" logger.debug(f\"Instance du plugin '{plugin_name}' ajoutée/mise à jour dans le kernel.\")\n",
"\n",
" default_settings = None\n",
" if llm_service:\n",
" try:\n",
" default_settings = kernel.get_prompt_execution_settings_from_service_id(llm_service.service_id)\n",
" logger.debug(f\"Settings LLM récupérés pour {plugin_name}.\")\n",
" except Exception as e:\n",
" logger.warning(f\"Impossible de récupérer les settings LLM pour {plugin_name}: {e}\")\n",
"\n",
" try:\n",
" kernel.add_function(\n",
" prompt=prompt_identify_args_v7,\n",
" plugin_name=plugin_name,\n",
" function_name=\"semantic_IdentifyArguments\",\n",
" description=\"Identifie les arguments clés dans un texte.\",\n",
" prompt_execution_settings=default_settings\n",
" )\n",
" logger.debug(f\"Fonction {plugin_name}.semantic_IdentifyArguments ajoutée/mise à jour.\")\n",
" except ValueError as ve:\n",
" logger.warning(f\"Problème ajout/MàJ semantic_IdentifyArguments: {ve}\")\n",
"\n",
" native_facades = [\"explore_fallacy_hierarchy\", \"get_fallacy_details\"]\n",
" if plugin_name in kernel.plugins:\n",
" for func_name in native_facades:\n",
" if func_name not in kernel.plugins[plugin_name]:\n",
" logger.error(f\"ERREUR CRITIQUE: Fonction native {plugin_name}.{func_name} non enregistrée!\")\n",
" else:\n",
" logger.debug(f\"Fonction native {plugin_name}.{func_name} trouvée.\")\n",
" else:\n",
" logger.error(f\"ERREUR CRITIQUE: Plugin {plugin_name} non trouvé après ajout!\")\n",
"\n",
" logger.info(f\"Kernel {plugin_name} configuré (V13).\")\n"
]
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Fonction setup_informal_kernel et prompt semantique prompt_identify_args_v7 definis\n"
]
}
],
"source": "# %% CELLULE [5.2] - Prompt Sémantique et Fonction Setup (Informal)\n# (Remplace une partie de l'ancienne cellule 83ec3fe2)\n\nimport semantic_kernel as sk\nimport logging\n\n# S'assurer que les dépendances sont là\nif 'InformalAnalysisPlugin' not in globals(): raise NameError(\"Classe InformalAnalysisPlugin non définie.\")\n\nlogger = logging.getLogger(\"Orchestration.AgentInformal.Setup\")\n\n# --- Fonction Sémantique (Prompt) pour Identification Arguments ---\nprompt_identify_args_v7 = \"\"\"\n[Instructions]\nAnalysez le texte argumentatif fourni ($input) et identifiez les principaux arguments ou affirmations distincts.\nListez chaque argument de manière concise, un par ligne. Retournez UNIQUEMENT la liste, sans numérotation ou préambule.\nFocalisez-vous sur les affirmations principales défendues ou attaquées.\n\n[Texte à Analyser]\n{{$input}}\n+++++\n[Arguments Identifiés (un par ligne)]\n\"\"\"\nlogger.debug(\"Prompt sémantique 'prompt_identify_args_v7' défini.\")\n\n# --- Fonction setup_informal_kernel (V13 - Simplifiée) ---\ndef setup_informal_kernel(kernel: sk.Kernel, llm_service):\n \"\"\"\n Configure le kernel pour l'InformalAnalysisAgent.\n Ajoute une instance du InformalAnalysisPlugin et la fonction sémantique.\n \"\"\"\n plugin_name = \"InformalAnalyzer\"\n logger.info(f\"Configuration Kernel pour {plugin_name} (V13 - Plugin autonome)...\")\n\n informal_plugin_instance = InformalAnalysisPlugin()\n\n if plugin_name in kernel.plugins:\n logger.warning(f\"Plugin '{plugin_name}' déjà présent. Remplacement.\")\n kernel.add_plugin(informal_plugin_instance, plugin_name=plugin_name)\n logger.debug(f\"Instance du plugin '{plugin_name}' ajoutée/mise à jour dans le kernel.\")\n\n default_settings = None\n if llm_service:\n try:\n default_settings = kernel.get_prompt_execution_settings_from_service_id(llm_service.service_id)\n logger.debug(f\"Settings LLM récupérés pour {plugin_name}.\")\n except Exception as e:\n logger.warning(f\"Impossible de récupérer les settings LLM pour {plugin_name}: {e}\")\n\n try:\n kernel.add_function(\n prompt=prompt_identify_args_v7,\n plugin_name=plugin_name,\n function_name=\"semantic_IdentifyArguments\",\n description=\"Identifie les arguments clés dans un texte.\",\n prompt_execution_settings=default_settings\n )\n logger.debug(f\"Fonction {plugin_name}.semantic_IdentifyArguments ajoutée/mise à jour.\")\n except ValueError as ve:\n logger.warning(f\"Problème ajout/MàJ semantic_IdentifyArguments: {ve}\")\n\n native_facades = [\"explore_fallacy_hierarchy\", \"get_fallacy_details\"]\n if plugin_name in kernel.plugins:\n for func_name in native_facades:\n if func_name not in kernel.plugins[plugin_name]:\n logger.error(f\"ERREUR CRITIQUE: Fonction native {plugin_name}.{func_name} non enregistrée!\")\n else:\n logger.debug(f\"Fonction native {plugin_name}.{func_name} trouvée.\")\n else:\n logger.error(f\"ERREUR CRITIQUE: Plugin {plugin_name} non trouvé après ajout!\")\n\n logger.info(f\"Kernel {plugin_name} configuré (V13).\")\n\nprint(\"Fonction setup_informal_kernel et prompt semantique prompt_identify_args_v7 definis\")"
},
{
"cell_type": "markdown",
Expand Down Expand Up @@ -1256,4 +1151,4 @@
},
"nbformat": 4,
"nbformat_minor": 5
}
}
Loading
Loading