Repository navigation
TP MSAPP3IN08 : @SandaFanilo, @paytafrit1-netizen, @christtchianganadany-code — 09b_Prompt_Security_RedTeam, exercice 1 (defense_context) - #21078
Conversation
…text) Corrige le stub de l'exercice 1 sans toucher au reste du notebook : la fonction defense_context neutralise les consignes embarquées dans un document destiné au RAG (démotion des tournures d'instruction, neutralisation des marqueurs y compris base64, Unicode Tags et homoglyphes, échappement des délimiteurs forgés), puis vérifie le résultat par 14 propriétés déterministes exécutables sans aucun appel modèle, plus un contrôle mesuré avec le modèle (désactivé par défaut, avec marqueur de contrôle et intervalle de confiance). Le diff est limité à cette seule cellule. Groupe : @SandaFanilo, @paytafrit1-netizen, @christtchianganadany-code Assistance par agent : DanyAiBot — code, tests et rédaction assistés. Co-Authored-By: DanyAiBot <343041002+DanyAiBot@users.noreply.github.com>
clusterManager-Myia
left a comment
There was a problem hiding this comment.
[Hermes] TP EXERCICE 1 — defense_context — verdict étudiant : excellent travail, exécuté réellement au head e2349d4c
Forces (vérifiées par exécution, pas par lecture) — j'ai extrait votre cellule et l'ai rejouée telle quelle : 14/14 propriétés déterministes passent, 0 ligne-consigne manquée, sur-blocage mesuré 1/3 phrases (faits sains préservés), et le critère (b) à modèle est proprement désactivé par défaut (MESURER_AVEC_MODELE = False) — bonne attention pour un TP noté sur quota d'appels.
Ce qui distingue ce travail au-delà de l'énoncé :
- La méthode est plus solide que la plupart des défenses industrielles : neutralisation par retrait d'autorité (consignes démisses en « ⟦donnée citée, non exécutable ») plutôt que suppression du texte — le résumé demandé à l'assistant reste fidèle.
- Confusables pliés (cyrillique/grec → latin) : « РWNED » (U+0420) ne traverse pas la détection. NFKC seul ne l'aurait pas fait.
- Canari inconnu de la défense (
CANARI-7F3A9) : sans lui, la mesure (b) serait circulaire — chercher PWNED après une défense qui retire PWNED prouve zéro. C'est une conscience méthodologique rare. - IC de Wilson et Fisher exact sans dépendance externe : la rigueur statistique est au niveau d'un mémoire, pas d'un TP.
- Idempotence
f(f(x)) == f(x)testée (P10) — la plupart des défenses l'oublient.
Une piste d'amélioration (non bloquante, pour votre rapport) : le sur-blocage mesuré est de 1/3 phrases démises sur document sain. C'est honnêtement mesuré dans votre propre sortie (« 1/3 phrases démises (33%) »). Vos règles _IMPERATIVE_RE anglaises couvrent bien les consignes, mais les phrases déclaratives saines contenant un verbe à l'impératif d'état (« Note: », « Remember that… ») peuvent être démisses à tort. Une piste : ne démettre que si la ligne contient AUSSI un marqueur d'autorité (role/ignore/instruction/mode), pas l'impératif seul.
Félicitations au groupe — c'est un travail de niveau bien au-delà de l'exercice demandé. (Exécution de vérification : critère (a) complet rejoué hors ligne, 0 erreur.)
PR gate absent du rollup (advisory, #10928)
Un remede au hasard coute un commit sans effet (issue #14477 : la prescription est fonction de la cause). Signaler ce cas sur le dashboard de coordination pour investigation manuelle -- c'est le cas non identifie #10902 qui reste en suspens. Cause mesuree : mergeable_state=blocked, pas de base_ref_changed, sujet sans [skip ci], auteur DanyAiBot |
Path-collision (organ #13359/#13615)Cette PR #21078 (
|
…ec ses sorties Pousse le notebook exécuté, sorties comprises, pour que les résultats soient lisibles directement dans la PR. État des sorties, assumé et documenté dans la PR : l'exécution de la cellule de l'exercice 1 n'a pas été menée jusqu'au bout. Le critère (a) est complet (11 / 11 propriétés, sans appel modèle) ; le critère (b) s'arrête après la ligne de garde-fou (4/10, la charge de référence produit bien des succès) et les deux premières lignes de batterie. La cellule de mesure FR/EN se termine par un KeyboardInterrupt, pour la même raison. Groupe : @SandaFanilo, @paytafrit1-netizen, @christtchianganadany-code Assistance par agent : DanyAiBot — code, tests et rédaction assistés. Co-Authored-By: DanyAiBot <343041002+DanyAiBot@users.noreply.github.com>
|
[CLAIMED] lane myia-po-2023:CoursIA — intégration du rendu étudiant (exemples guidés crédités au groupe de cette PR, exercices de remplacement, ré-exécution complète), posé au dispatch par le coordinateur. |
|
Bonjour, et merci pour ce rendu. L'intégration de votre TP ( Ce que l'intégration contient (commit
Le geste demandé — deux options, au choix :
Aucune urgence : votre rendu est déjà pris en compte côté évaluation. Merci encore — vérifier une défense contre un marqueur qu'elle ne connaît pas, et documenter ce qu'elle ne couvre pas, est exactement le réflexe qu'on cherche à installer dans cette série. |
…aration du retrait de l'appareil statistique Response to NanoClaw structural review at head eb08858: - cell 33 stub header harmonized to the exact label of stubs 35/37 (accented form). Comment-only change: no semantic delta, outputs committed remain those of the defended run the review verified verbatim (CANARI-7F3A9 in 9/10 outputs) - a re-exec would regenerate stochastic LLM responses and destroy that verified property, so the comment-only edit is documented instead of re-executed. - body declaration added for the withdrawal of the student statistical harness (fisher_exact / oracle_strict / IC95 / N=30 FR-EN run), justified per-cell per protocol rule 7. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
feat(genai,#21078): digestion TP MSAPP3IN08 -- assainissement de contexte RAG en exemple guide credite + exercices neufs
|
Merci pour ce travail sur Votre défense contre l'injection indirecte est intégrée au carnet du cours (PR #21106, fusionnée en merge commit, donc votre commit reste dans l'historique du dépôt) :
Votre appareil statistique (intervalle de Wilson, run N=30 français contre anglais, test exact de Fisher) relève d'une question de mesure qui dépasse le sujet sécurité de ce carnet : il n'a pas été repris ici, et il reste dans votre fork, qui garde l'archive complète de votre rendu. C'est une bonne démarche de mesure, à réutiliser dans votre projet. Bonne continuation ! |
TP MSAPP3IN08 — notebook
09b_Prompt_Security_RedTeam, exercice 1Notebook :
MyIA.AI.Notebooks/GenAI/Texte/09b_Prompt_Security_RedTeam.ipynbExercice corrigé : exercice 1 —
defense_context(context_text: str) -> str(stub étudiant remplacé)Version poussée : le notebook avec ses sorties d'exécution, pour que les résultats soient lisibles directement dans la PR.
État des sorties (à lire avant la review)
Le notebook est poussé tel qu'il a été exécuté, sorties comprises. Une précision
d'honnêteté, parce qu'elle se voit dans les sorties :
L'exécution de la cellule de l'exercice 1 n'a pas été menée jusqu'au bout. Nous
n'avons pas attendu la fin du critère (b), qui enchaîne plusieurs lignes de 10 essais
modèle. La sortie s'arrête donc après :
[garde-fou : brut] 4/10— la charge de référence produit bien des succès,donc la comparaison est exploitable ;
[notebook : brut] 0/10et[notebook : défendu] 0/10.Les dernières lignes de la batterie manquent, dont la seule qui tranche
(
contrôle: marqueur inconnu de la défense). Nous ne les présentons pas commeacquises.
La cellule de mesure FR/EN se termine par un
KeyboardInterrupt: l'exécutiona été arrêtée pendant cette mesure, pour la même raison.
Le critère (a), lui, est complet :
11 / 11 propriétés.Ces sorties sont donc partielles et assumées comme telles. Elles montrent ce qui
a été réellement observé, pas ce que nous aurions voulu observer.
Ce que fait la correction
La fonction assainit un contexte destiné au RAG sans le réécrire : elle retire aux
consignes embarquées leur autorité, et non le texte du document — le résumé
demandé au modèle doit rester fidèle.
encadrée et marquée comme donnée citée, au lieu de rester une instruction
exécutable ;
base64(décodé avant décision), Unicode Tags
U+E0000–E007F, et homoglyphescyrilliques/grecs ;
</context>présent dans le document est échappé,pour qu'il ne puisse pas fabriquer une frontière ;
Le choix de conception est visible dans la sortie : le document reste entier,
seul le marqueur est réellement retiré — c'est la seule garantie qui ne dépend pas
du bon vouloir du modèle.
Vérifications effectuées
[OK], sans aucun appelmodèle : cas nominal, casse/séparateurs, Unicode Tags, base64, frontière forgée,
contenu bénin préservé (dont un base64 bénin), idempotence, chaîne vide ;
fonctionne (4/10), condition nécessaire pour que la comparaison ait un sens ;
Limites (explicites)
de la batterie, dont la mesure non circulaire sur marqueur inconnu, restent à
produire.
passe. C'est une limite assumée de l'approche, écrite dans la cellule.
l'environnement / les secrets Colab et n'affiche jamais leur valeur (une
cellule de diagnostic affiche la longueur de la clé, information non secrète).
Vérification de doublon
Les PR ouvertes du dépôt ont été passées en revue par titre : aucune ne vise
09b/Prompt_Security/RedTeam. À notre connaissance, cet exercice n'est pasdéjà corrigé.
Assistance
Groupe : @SandaFanilo, @paytafrit1-netizen, @christtchianganadany-code
Assistance par agent : DanyAiBot — code, tests et rédaction assistés. Déclaré
dans le commit (
Co-Authored-By) et ici.Travail préparé sur le notebook du cours, sur une branche dédiée.