Skip to content

feat(genai,#18574): muscle l'exemple guide 2 de 02_PromptEngineering — few-shot contre zero-shot mesure - #18867

Merged
myia-ai-01 merged 2 commits into
mainfrom
feature/18574-texte02-muscle
Oct 2, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
feature/18574-texte02-muscle

Conversation

@jsboige

@jsboige jsboige commented Oct 2, 2026 •

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python — lane myia-po-2025:CoursIA — prev: DEEP/research-code #18811

Contexte

Seconde passe EPF (#18574), carnet GenAI/Texte/02_PromptEngineering.ipynb. Verdicts posés sur l'issue (commentaire 2026-10-02) : exemple guidé 1 SOLIDE, exemple guidé 2 À MUSCLER, cascade SOLIDE. Cette PR traite le seul À MUSCLER.

Ce que fait la PR — muscler l'exemple guidé 2 sans l'effacer

L'exemple guidé 2 (few-shot, traduction technique, contribution de @StarkMac22 / @Will-emma, PR #18552) est conservé tel quel : cellule code inchangée, crédit intact. Ce qui manquait était la mesure : la démonstration montrait une réponse unique et lui attribuait la copie de la forme, alors que la Partie 2 du carnet affirme une « amélioration significative » du few-shot.

Deux cellules ajoutées après la lecture d'origine :

  1. une introduction du montage (markdown) ;
  2. une cellule de mesure (code) : même tâche, deux conditions — le prompt à deux exemples (repris de l'élève) contre le même prompt privé de ses exemples (zero-shot) — sur un jeu évalué de 4 termes disjoints des deux exemples du prompt (« les exemples du prompt ne sont pas les cas évalués »), avec vérification automatique : présence de la traduction anglaise attendue (référence écrite à la main) et des quatre rubriques demandées, étiquettes détectées en début de ligne, accents et gras ignorés.

Le muscle, mesuré (résultats de l'exécution, reproductibles) : zero-shot 4/4 traductions attendues présentes, 0/4 réponses portant les 4 rubriques ; few-shot 4/4 et 4/4. Deux réponses zero-shot (« fuite de données », « apprentissage par transfert ») gardent Traduction et Domaine mais perdent Definition et Exemple ; les deux autres n'en portent aucune. Autrement dit, sur ces termes courants, les exemples n'ajoutent pas de justesse — ils rendent obligatoires en pratique les rubriques que la consigne énumérait déjà, exactement la « copie de forme » que la lecture d'origine attribuait aux exemples. Une cellule de lecture dérivée de ces mesures suit la cellule de code.

L'exercice remplaçant reste différent (étape 4 de la méthode)

L'exercice 2 (« Few-shot contre zero-shot, mesuré sur un jeu étiqueté », classification de messages de commit, 8 cas, 3 exemples choisis par l'élève, analyse des erreurs ambiguës) est inchangé et reste d'un autre type : la musculation de l'exemple mesure la forme (rubriques, traduction de référence) sur 4 termes, l'exercice mesure la justesse de classification sur 8 cas avec tri des erreurs modèle/étiquette. L'exercice demande en plus d'écrire classer() (construction du prompt, normalisation, gestion du budget de jetons).

Vérifications

  • Exécution Papermill de bout en bout via scripts/notebook_tools/notebook_tools.py execute (kernel mcp-jupyter-py310, --batch-mode) : Success — 24 cellules code exécutées, 0 erreur, temps total 229,8 s.
  • Noyau aligné sur le canon de la série : check_kernel_drift.py origin/main --explain → OK: 0 kernel-drift regression. La première exécution tournait sous Python 3.13, hors canon (kernelspec python3 + language_info 3.10.x, confirmé par les jumeaux 01_ et 03_) ; le carnet est ré-exécuté sous 3.10.18.
  • Sorties stochastiques recâlées : les valeurs citées dans les cellules de lecture sont celles de l'exécution committée (temps 9,73 s / 4,24 s ; distribution zero-shot), pas celles du run précédent.
  • 0 erreur, tous les execution_count renseignés (24 cellules code), sorties committées.
  • Vérificateur testé hors-ligne avec un client factice, contrôle positif et contrôle négatif (le vérificateur doit pouvoir échouer — il détecte une réponse en prose sans rubriques).
  • Métadonnées Papermill normalisées (scrub_papermill_paths.py).
  • CSV de traduction : non touché à la main (fichier dérivé, le guard refuse les éditions non-bot ; la synchro passe par translation-sync.yml) — conforme au précédent TP Prompt Engineering (02) : exercices 1 et 2 #18552 (aucun CSV dans le diff).

Portée

Un seul fichier : MyIA.AI.Notebooks/GenAI/Texte/02_PromptEngineering.ipynb. Aucune cellule code existante modifiée (ajout seul), aucun exercice touché, crédits étudiants conservés.

See #18574

🤖 Generated with Claude Code

…(few-shot contre zero-shot mesure)

Seconde passe EPF du carnet GenAI/Texte/02_PromptEngineering : l'exemple guide 2
(few-shot, contribution etudiante PR #18552) est conserve tel quel, la mesure qui
manquait est ajoutee apres sa lecture.

- cellule de mesure : meme tache, deux conditions (prompt de l'eleve contre le meme
  prive de ses exemples), sur 4 termes disjoints des exemples du prompt, avec
  verification automatique (traduction de reference + 4 rubriques, accents ignores) ;
- resultat mesure : zero-shot 4/4 traductions / 0/4 rubriques ; few-shot 4/4 / 4/4 —
  les exemples n'ajoutent pas de justesse ici, ils rendent obligatoires les rubriques ;
- re-execution Papermill de bout en bout (24 cellules code, 0 erreur, 169,8 s) ;
- deux lectures dont les chiffres citaient l'ancienne execution sont re-alignees sur
  la nouvelle (temps chat/reasoning, citation d'exemple du tableau zero-shot).

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

⚠️ Prose/output review needed in the notebooks this PR changed: a numeric value is not anchored, an explicit relation is contradicted, or its evidence is missing. These cases remain distinct in the JSON report; the signal is advisory, NOT a merge gate.

Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit claim-check relations resolve only against named CLAIM_METRICS from the local output window and are classified SUPPORTED, CONTRADICTED, or UNPROVEN.
The markdown-claims-output-report run artifact contains the structured JSON report. See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 numeric pathology, extended with low-noise relational evidence.

@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

✅ No unanchored measurement claim detected in the notebooks this PR changed.

Scope = notebooks CHANGED in this PR, not the whole corpus. The stale-claim-report run artifact holds the structured JSON.
Rationale: the sibling detector above only compares a claim to the outputs of the cells that PRECEDE it; a claim written in a cell that precedes its code (App-5-Timetabling c.2/c.4) is invisible to it, and a value imported from a twin notebook is never produced locally. See python scripts/check_stale_claims.py --help.

@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams).

Scope = notebooks CHANGED in this PR, not the whole corpus. The factual-mislabel-report run artifact holds the structured JSON.
Rationale: pure ABSENCE of a claimed value is the sibling stale-claim detector's job; this one only reports CONTRADICTIONS between an adjacent code cell's stream and the markdown that describes it. See python scripts/check_factual_mislabel.py --help.

@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 23
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

@github-actions

github-actions Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

Notebook outputs-required (H.4 schema): PASS (every code cell carries an outputs: list)

@github-actions

github-actions Bot commented Oct 2, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 9/9 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 6.8s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 6.1s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 8.0s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 7.4s
Search-01-StateSpace.ipynb ✅ SUCCESS 6.7s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 5.0s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 34.7s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 3.7s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 12.0s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

…ectures alignees

La premiere re-execution du carnet muscle avait tourne sous le noyau Python 3.13,
hors canon de la serie GenAI/Texte (kernelspec python3 + language_info 3.10.11,
confirme par les jumeaux 01_ et 03_) : le garde check_kernel_drift signalait
'3.10.11' -> '3.13.14'. Re-execution sous mcp-jupyter-py310 (3.10.18).
Success 1 / Failed 0 / 229,8 s ; 24 cellules code, 0 execution_count nul, 0 erreur.

Les sorties etant stochastiques, les trois cellules de lecture sont recalees sur
la sortie reellement committee plutot que sur la precedente :
- [16] citation C++ remplacee par la formulation produite
- [28] distribution zero-shot corrigee (2 reponses gardent Traduction/Domaine,
  les 2 autres n'en portent aucune) ; les comptes 4/4 et 0/4 sont inchanges
- [54] temps mesures 9,73 s (chat) / 4,24 s (raisonnement)

Cellules code byte-identiques a HEAD ; aucune source modifiee.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@jsboige

jsboige commented Oct 2, 2026

Copy link
Copy Markdown
Owner Author

Réparation de la dérive de noyau signalée sur cette PR — commit 770784ceb5.

Cause. La première exécution était passée sous Python 3.13, hors du canon de la série GenAI/Texte (kernelspec python3 + language_info 3.10.11, confirmé par les carnets jumeaux 01_ et 03_). check_kernel_drift.py origin/main --explain rendait FAIL: '3.10.11' -> '3.13.14'.

Correctif. Le carnet est ré-exécuté sous mcp-jupyter-py310 (Python 3.10.18) via notebook_tools.py execute --batch-mode : Success 1 / Failed 0, 229,8 s, 24 cellules code, 0 execution_count nul, 0 erreur. Le garde rend maintenant OK: 0 kernel-drift regression across 1 changed notebooks.

Effet de bord traité. Les sorties étant stochastiques, trois cellules de lecture citaient les valeurs du run précédent. Elles sont recâlées sur la sortie réellement committée — sans toucher une seule cellule de code (les 24 sources code sont byte-identiques à la tête précédente) :

  • cellule [16] : la citation C++ est remplacée par la formulation effectivement produite ;
  • cellule [28] : distribution zero-shot corrigée — 2 réponses gardent Traduction/Domaine, les 2 autres n'en portent aucune (les comptes 4/4 et 0/4 sont inchangés d'un run à l'autre) ;
  • cellule [54] : temps mesurés 9,73 s (chat) / 4,24 s (raisonnement).

Le body de la PR est mis à jour (résumé d'exécution + section noyau).

@jsboige

jsboige commented Oct 2, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2026:CoursIA-3
pr: 18867
head: 770784c
complete: true
body: read
comments-reviewed: 8
reviews-reviewed: 0
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: ebf8de19d53707b5496d4b481796a959013b601152e2730a0ec744110d8f48ac
diff-files: 1
diff-additions: 1050
diff-deletions: 228
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
[/ADJOINT PREFLIGHT]

note: Troisieme dossier c368. feat(genai,#18574) muscle l'exemple guide 2 du carnet 02_PromptEngineering sans l'effacer. Cellule code eleve (PR #18552 @StarkMac22/@Will-emma) inchangee, credit preserve. 2 cellules ajoutees (intro montage + mesure few-shot vs zero-shot sur 4 termes avec verificateur rubriques), 1 cellule lecture derivee. Mesure : zero-shot 4/4 traductions + 0/4 rubriques ; few-shot 4/4 + 4/4. Papermill end-to-end Success 24 cellules code, kernel python3.10.18 (canon, drift 0), 0 erreur, execution_count maintenu, metadonnees papermill normalisees. Lane porteuse myia-po-2025:CoursIA (DIFFERENTE de ma lane :CoursIA-3). Crible de fond : pas de source collapse, exercice 2 inchange (autre type : justesse classification 8 cas, l'exemple muscle la forme sur 4 termes), pas d'identifiants accentues, pas de hand-edit de sortie. PR gate success a 22:23:30Z, 0 fails, B.0 rc=0. MED/notebook-python -> merge_ready eligible, dossier tiers debloque.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants