Skip to content
Open
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
Original file line number Diff line number Diff line change
Expand Up @@ -786,7 +786,7 @@
"\n",
"**Limite honnête** : le filtre est **mécaniquement fiable pour le marqueur connu**, mais **fragile** — un attaquant qui contourne le motif (variante de casse, paraphrase, encodage) réintroduit le canal. Le filtre **rattrape**, il ne **prévient** pas, et il n'attrape un marqueur que si le modèle le rend effectivement.\n",
"\n",
"La règle de production qui en découle : **défense en profondeur**, jamais un seul mur. La cellule suivante formalise cela en test de non-régression.\n"
"La règle de production qui en découle : **défense en profondeur**, jamais un seul mur. Le tableau ci-dessous agrège les verdicts observés, et la suite de tests red-team, plus bas, formalise cela en test de non-régression.\n"
]
},
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -576,7 +576,7 @@
"source": [
"**Lecture.** La réponse JSON est **emballée** par un wrapper Anthropic (`type: result`, `subtype: success`, `session_id`, `total_cost_usd`, `usage`). Le contenu utile est dans `result` -- ici une string qui contient un **bloc markdown JSON** (`\\`json` ... `\\`).\n",
"\n",
"**Ce qu'il faut comprendre :** le format `run_claude_json()` ne **parse** pas automatiquement le markdown dans la réponse -- il rend la string `result` telle quelle. Pour récupérer la vraie structure JSON, il faudrait soit demander au modèle de répondre en JSON natif (sans markdown), soit appliquer un `re.search(r'\\[.*\\]', result, re.DOTALL)` côté client. C'est un piège classique documenté dans la cellule suivante."
"**Ce qu'il faut comprendre :** le format `run_claude_json()` ne **parse** pas automatiquement le markdown dans la réponse -- il rend la string `result` telle quelle. Pour récupérer la vraie structure JSON, il faudrait soit demander au modèle de répondre en JSON natif (sans markdown), soit appliquer un `re.search(r'\\[.*\\]', result, re.DOTALL)` côté client. C'est un piège classique documenté plus loin — voir la correction guidée de l'exercice 4, section « Corrections guidées — exercices 4 à 9 »."
]
},
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8473,7 +8473,7 @@
"</owl:ObjectProperty>\n",
"```\n",
"\n",
"> **Note** : La cellule suivante necessite un fichier `Ontology.rdf` d'exemple (absent dans le notebook vierge)."
"> **Note** : les démonstrations ci-dessous construisent leur exemple en mémoire — aucun fichier `Ontology.rdf` externe n'est requis ; le bloc XML ci-dessus est purement illustratif."
]
},
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -361,13 +361,13 @@
"\n",
"**Illustration sur AF1 (`a1 <-> b1 -> c1`).** Partons de `S = ∅` :\n",
"- `F(∅)` = arguments non attaqués du tout = `∅` (chacun de `a1`, `b1`, `c1` est attaqué : `a1` par `b1`, `b1` par `a1`, `c1` par `b1`).\n",
"- On est déjà en point fixe : `F(∅) = ∅`. L'extension grounded vaut donc `{}` — c'est exactement ce que renvoie `SimpleGroundedReasoner().getModel(af1)` dans la cellule suivante. Le conflit symétrique `a1 <-> b1` laisse le raisonneur sceptique incapable de trancher.\n",
"- On est déjà en point fixe : `F(∅) = ∅`. L'extension grounded vaut donc `{}` — c'est exactement ce que renvoie `SimpleGroundedReasoner().getModel(af1)` dans la cellule de code ci-dessous. Le conflit symétrique `a1 <-> b1` laisse le raisonneur sceptique incapable de trancher.\n",
"\n",
"**Lemme fondamental de Dung (monotonie de l'admissibilité).** Si `S` est admissible et `a` est acceptable vis-à-vis de `S`, alors `S ∪ {a}` reste admissible. En clair : **on peut toujours étendre une position admissible en acceptant un argument qu'elle défend, sans jamais perdre la propriété d'admissibilité**. Ce lemme est le moteur qui garantit :\n",
"- l'**existence** d'extensions preferred (on peut grandir tant qu'on reste admissible, jusqu'à un maximal),\n",
"- la **convergence** de l'itération de `F` vers le grounded.\n",
"\n",
"C'est aussi ce qui explique pourquoi, dans la sortie de la cellule suivante, `{a1}` figure parmi les extensions admissibles d'AF1 : `a1` se défend lui-même contre `b1` (puisque `a1` attaque `b1`), donc accepter `a1` seul est une position défendable — même si elle n'est ni complete (elle ne contient pas tout ce qu'elle défend) ni maximale."
"C'est aussi ce qui explique pourquoi, dans la sortie de la cellule de code ci-dessous, `{a1}` figure parmi les extensions admissibles d'AF1 : `a1` se défend lui-même contre `b1` (puisque `a1` attaque `b1`), donc accepter `a1` seul est une position défendable — même si elle n'est ni complete (elle ne contient pas tout ce qu'elle défend) ni maximale."
],
"metadata": {}
},
Expand Down
Loading