Skip to content

Feat: substitution modeles chat legacy vers gpt-5.6-luna (tranche F2a #14755) - #16671

Merged
myia-ai-01 merged 1 commit into
mainfrom
feature/14755-f2a-model-swap
Sep 18, 2026
Merged

myia-ai-01 merged 1 commit into
mainfrom
feature/14755-f2a-model-swap

Conversation

@jsboige

@jsboige jsboige commented Sep 18, 2026

Copy link
Copy Markdown
Owner

Grain: DEEP/notebook-python — lane myia-po-2024:CoursIA — prev: DEEP/slides #16668

Feat: substitution modèles chat legacy vers gpt-5.6-luna (tranche F2a #14755)

Périmètre

Trois notebooks GenAI/Texte/** migrent leurs défauts de modèle vers la cible canonique gpt-5.6-luna de docs/genai/model-mapping.md §8.4 (tier mini, désignée par le mandat user « 5.6 pour OpenAI, Luna pour la taille mini ») :

Notebook Cellule Avant Après
07_Code_Interpreter.ipynb c2 os.getenv("OPENAI_MODEL", "gpt-4.1-mini") "gpt-5.6-luna"
19_OWUI_Orchestration.ipynb c17 os.getenv("OWUI_MODEL", "gpt-4o-mini") "gpt-5.6-luna"
19_OWUI_Orchestration.ipynb c18 model or os.getenv("OWUI_MODEL", "gpt-4o-mini") "gpt-5.6-luna"
22_Evaluating_Generated_Text.ipynb c28 os.getenv("OPENAI_CHAT_MODEL_ID", "gpt-4o-mini") "gpt-5.6-luna"

Les défauts sont conservés comme défauts substituables par .env (structure d'origine intacte : os.getenv(..., "<cible>")).

Adaptations API requises par gpt-5.6-luna — mesurées à l'exécution réelle

Deux murs API rencontrés pendant la re-exécution, chacun adapté par une mesure (pas par supposition) :

  1. max_tokens rejeté — l'API gpt-5.6-luna renvoie 400 Unsupported parameter: 'max_tokens' is not supported with this model. Use 'max_completion_tokens'. Corrigé dans 22 (c18 judge_choice + c33 claim_supported) : max_tokens=4 → max_completion_tokens=16. Le 16 est aussi mesuré : le budget 4 renvoyait contenu vide (finish: length, tokens consommés par le raisonnement du modèle) ; probe mct=16 → content='A', finish=stop. Le serveur vLLM local accepte aussi max_completion_tokens (probé avant substitution) — le paramètre est donc portable aux deux backends du notebook.
  2. temperature=0 rejeté — 400 Unsupported value: 'temperature' does not support 0.0 with this model. Only the default (1) value is supported. Corrigé dans 22 c28 (duel local vs API) : le juge API passe en temperature=1 ; le juge local vLLM conserve temperature=0 (déterminisme pédagogique documenté, la cellule c26 qui explore T∈{0.0, 0.7, 1.2} ne touche que le juge local). Ce contraste est explicité dans la cellule (« T=0 est le déterministe »).

Re-exécution réelle (C.2/H.1) — papermill kernel python3, cwd série

Environnement réparé (règle F), pas contourné :

  • Serveur vLLM local (requis par la sonde assertive de 22 c2) relancé sur 127.0.0.1:8185 (Qwen2.5-0.5B-Instruct-local), recette mémoire WSL2 (venv coursia-wsl, VLLM_WSL2_ENABLE_PIN_MEMORY=1, VLLM_USE_FLASHINFER_SAMPLER=0, setsid + keepalive) — le notebook 22 tient ses juges réels.
  • rouge-score installé (dépendance manquante au kernel, ModuleNotFoundError en c5).

Résultats par notebook :

Notebook Cellules code exec_count != null Erreurs Sorties clés
07_Code_Interpreter 12 12/12 0 Modele par defaut: gpt-5.6-luna, Fibonacci générés par le modèle, analyses/dataset réels
19_OWUI_Orchestration 8 8/8 0 Skip OWUI_API_KEY documenté (RECOVERABLE-USER-HAND, déjà déclaré dans le notebook) — squelette complet, aucune sortie fabriquée
22_Evaluating_Generated_Text 16 16/16 0 Duel juge local vLLM vs juge API : accord 6/6 ; verbosité 0/6 (juge choisit la version courte) ; fidelité factuelle 5/6 avec hallucination-piège détectée

Anti-collapse (ratchet base vs PR) : les comptes d'outputs par cellule ne diminuent pas (07 : 16→16 ; 19 : 8→9, une cellule skip gagne son print ; 22 : 25→24, regroupement de flush nbclient uniquement — contenu texte de la cellule c22 byte-identique, vérifié). metadata.papermill: input_path/output_path au basename, exception: None, 0 fuite de chemin machine (scan regex).

Conservations déclarées (hors substitutions)

Prose, commentaires et markdown pédagogiques mentionnant des modèles legacy — conservés tels quels, comme l'exige le mandat (« ne pas enseigner des modèles de 2024 » s'applique au code invoqué, pas à la pédagogie qui les contextualise) :

Fichier Cellules Nature
07_Code_Interpreter c4 markdown Corrigé : disait « l'exécution committée utilise gpt-4.1-mini » (factuellement obsolète après cette PR) → gpt-5.6-luna. Modif markdown-only, aucune re-exécution requise
16_Scaling_Test_Time_Compute c2 (commentaire), c17 (markdown) Mention historique « plus aucun modèle 2024 du type gpt-4o-mini » — décrit l'état modernisé, conservée
20_OWUI_Native_API c14 (print) Exemple illustratif de noms de modèles (OpenAI.gpt-4.1-nano), hors code invoqué
01_OpenAI_Intro c15, c16, c18 (markdown) Tokenisation comparée text-davinci-003 / gpt-4 / gpt-5-mini — pédagogie historique
06_PDF_Web_Search c3, c10, c25 (markdown) Support vision/PDF et web search — liste les modèles compatibles de l'API

Aucun autre fichier touché. SemanticKernel/** : scan complet à la tête → 0 mention legacy restante (tranches précédentes déjà passées). Catalogue et CATALOG-STATUS : byte-identiques à main (aucune cellule de code ajoutée/supprimée dans les séries — les substitutions ne changent pas le catalogue).

Validation

  • H.3 pre-commit : Passed (exécution réelle, execution_count partout, 0 erreur) — log complet dans le commit
  • Pre-commit hooks : gitleaks, .NET banner strips, papermill path scrub, H.3, cell-source parses — tous Passed
  • Serveur vLLM WSL2 : relancé pour cette re-exécution, laissé actif (port 8185) — retour à l'état antérieur non exigé par le notebook (le stocker le note comme service requis par 22)

Périmètre #14755 — tranche F2a (bornée)

Cette PR livre la tranche F2a : remplacement des identifiants de modèles chat legacy encore présents dans le code de GenAI/Texte/**. Les tranches voisines restent hors scope (F2 suite : fichiers restants si écart mesuré, sous réserve de re-mesure à la tête) — Audio/** est l'Epic #15791 (F3), ML+SymbolicAI/** l'Epic #16247 (F4), disjoints par les claims.

See #14755 (tranche partielle : d'autres sous-ensembles de l'Epic restent ouverts), pas Closes.

🤖 Generated with Claude Code

…14755)

Trois notebooks GenAI/Texte migrent leurs defauts de modele vers la cible
canonique gpt-5.6-luna (model-mapping.md 8.4): 07_Code_Interpreter
(OPENAI_MODEL gpt-4.1-mini), 19_OWUI_Orchestration (OWUI_MODEL gpt-4o-mini
x2), 22_Evaluating_Generated_Text (OPENAI_CHAT_MODEL_ID gpt-4o-mini).

Adaptations API requises par gpt-5.6-luna, mesurees a l'execution reelle:
- max_tokens -> max_completion_tokens (4 -> 16: budget 4 consomme par le
  raisonnement, contenu vide) dans judge_choice et claim_supported de 22
- temperature=0 rejete par gpt-5.6-luna (seul 1 accepte): le juge API de 22
  passe en temperature=1, le juge local vLLM conserve temperature=0 pour le
  determinisme pedagogique

Re-execution reelle via papermill (kernel python3, cwd serie):
- 07: 12 cellules code, 0 erreur, "Modele par defaut: gpt-5.6-luna"
- 19: 8 cellules code, 0 erreur (skip OWUI_API_KEY documente RECOVERABLE-USER-HAND)
- 22: 16 cellules code, 0 erreur, duel juge local vLLM vs API: accord 6/6
- Serveur vLLM local Qwen2.5-0.5B lance c. ce cycle sur port 8185 (recette WSL2)
- rouge-score installe (regle F: dependance manquante de 22)
- metadata.papermill normalise au basename, 0 fuite de chemin machine

Conservations declarees (prose ou mentions historiques pedagogiques):
- 16 c2 (commentaire "plus aucun modele 2024"), 16 c17, 20 c14 (print
  illustratif), 01 c15/16/18, 06 c3/10/25 (markdown pedagogique historique)
- 07 c4 markdown mis a jour (etait factuellement obsolette, disait
  gpt-4.1-mini) - modif markdown-only, pas de re-exec requise

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

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

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 3
  • Code cells validated: 36
  • 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

Copy link
Copy Markdown
Contributor

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

@github-actions

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 8/8 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 3.2s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 3.5s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 3.8s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 3.2s
Search-01-StateSpace.ipynb ✅ SUCCESS 2.5s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 1.7s
rl_4_multi_armed_bandits.ipynb ✅ SUCCESS 14.1s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.2s

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

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

VERDICT: LGTM (vérifié: accounting formel base↔tête + corroboration indépendante de tous les claims mesurables du body — ratchet outputs, exec_counts, byte-identité c22, duel 6/6)

[NanoClaw] structural review — CoursIA #16671, tête 3ff65dd5, 3 notebooks GenAI/Texte/** (+797/−489). Review structurelle : comparaison locale binaire base 58125a07 ↔ tête, aucune ingestion de diff brut.

Vérifié (mesure indépendante, pas les chiffres du body) :

  • Accounting exact au fichier près : +173/−186 (07), +420/−93 (19), +204/−210 (22) — diff local des fichiers sérialisés = chiffres GitHub exacts.
  • Substitutions : 4 défauts de code (gpt-4.1-mini/gpt-4o-mini ×2/gpt-4o-mini → gpt-5.6-luna en 07 c2, 19 c17/c18, 22 c28) + 1 correction markdown (07 c4, mention d'exécution modernisée). Comptages par modèle concordants : 07 src gpt-4.1-mini 3→1 / luna 0→2 ; 19 gpt-4o-mini 2→0 / luna 0→2 ; 22 gpt-4o-mini 1→0 / luna 0→1. Structure os.getenv(..., "<défaut>") intacte partout.
  • Toute cellule source changée est réductible à : substitution de modèle (5) ou adaptation API documentée (2). Aucune autre mutation de code ou de prose dans les 3 fichiers.
  • Adaptations API justifiées et mesurées dans le code : max_tokens=4 → max_completion_tokens=16 (2 occurrences, head uniquement) et temperature=1 ajouté au seul juge API de 22 c28 — le body documente les erreurs 400 réelles qui les motivent et la probe mct=16 → finish:stop ; le contraste juge local vLLM T=0 / juge API T=1 est explicite dans le notebook.
  • Re-exécution corroborée firsthand : exec_count non-null 12/12 (07), 8/8 (19), 16/16 (22) ; 0 erreur ; outputs réels (stream pip, OWUI_API_KEY ABSENT = skip documenté RECOVERABLE-USER-HAND, pas de sortie fabriquée).
  • Ratchet anti-collapse exact : blocs outputs 16→16 (07), 8→9 (19, le bloc stderr du skip), 25→24 (22) — le claim « regroupement de flush nbclient, contenu byte-identique » est VRAI : texte outputs de 22 c22 = 546 chars identiques base↔tête.
  • Duel de juges : « accord 6/6 local=A api=A » lu directement dans les outputs ré-exécutés.
  • 0 secret : le motif sk-manageme détecté en scan = fragment d'URL doc Open WebUI (task-management/), markdown inchangé base↔tête.

Notes (P5, non bloquantes) :

  1. 07 cell 2, ligne du commentaire # Charger le modele depuis .env ou utiliser gpt-4.1-mini par defaut : le commentaire décrit encore l'ancien défaut alors que la ligne active en dessous dit gpt-5.6-luna — la PR a corrigé le markdown c4 mais a raté ce commentaire dans la cellule même de la substitution. Classe « libellé périmé » (déjà vue sur #1426), hygiène seulement.
  2. Le body cite « c18 / c33 » pour les adaptations max_completion_tokens ; mes indices 0-based = 17 et 31. Micro-écart de convention de numérotation sans effet sur le fond (2 cellules, 2 occurrences, comptées).

— NanoClaw (myia-ai-01)

@github-actions

Copy link
Copy Markdown
Contributor

Path-collision (organ #13359/#13615)

Cette PR #16671 (Feat: substitution modeles chat legacy vers gpt-5.6-luna (tranche F2a #14755)) touche au moins un chemin de fichier aussi modifie par d'autres PRs ouvertes. Risque de double-livraison (meme fichier livre deux fois, 2x le travail et 2x les runs CI). Advisory : parfois legitime (tranches coordonnees, partition paths: explicite, PRs empilees exclues) -- l'organe rend visible, il ne bloque pas.

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.

3 participants