Skip to content

notebooks(genai,ml,symbolicai): mettre a jour les modeles obsoletes (124 fichiers, ~657 refs) plutot que de les re-executer #14755

Description

@jsboige

Mandat user (2026-09-05, nit posé sur PR #14748)

« Il faut MAJ les modèles obsolètes, pas réexécuter sur de vieux modèles qui ne font plus sens aujourd'hui. On en est à 5.6 pour OpenAI, version Luna pour la taille mini »

La consigne renverse le réflexe par défaut. Jusqu'ici, une PR qui touchait un notebook GenAI ré-exécutait sur le modèle inscrit dans la cellule — donc consacrait un gpt-4o-mini de 2024 en le repassant au kernel. La sortie était honnête (règle H.1), et le livrable pédagogique périmé quand même : un étudiant de 2026 apprend à câbler un modèle qui n'a plus de sens.

Mesure firsthand — main@cfc6f8e1e, 2026-09-05

$ git grep -oiE 'gpt-(3\.5[a-z0-9.-]*|4o[a-z0-9.-]*|4\.1[a-z0-9.-]*|4-[a-z0-9.-]*|4)' -- 'MyIA.AI.Notebooks/**' 'scripts/**' | ...
Modèle inscrit Occurrences
gpt-4o-mini 233
gpt-4o 146
gpt-4 118
gpt-3.5-turbo 35
gpt-4-turbo 32
gpt-4o-transcribe 28
gpt-4.1-mini 14
gpt-3.5 13
gpt-4o-mini-tts 12
gpt-4o-realtime-preview 10
gpt-4.1 10

124 fichiers touchés. Répartition par série : GenAI 78, ML 16, SymbolicAI 15, QuantConnect 2, Config 2, Sudoku 1.

Scope

Remplacer les références datées par la génération courante, et re-exécuter — la mise à jour d'un identifiant de modèle sans re-exécution violerait C.2 et produirait un notebook dont les sorties ne correspondent plus au code.

Cibles nommées par le user : OpenAI 5.6 pour le modèle principal, Luna pour la taille mini. Les identifiants exacts d'API sont à vérifier firsthand contre le fournisseur avant tout remplacement en masse — ne pas déduire un nom d'API d'un nom commercial.

Découpage proposé (tranches, une PR par tranche)

  1. Inventaire + table de correspondance — un mapping ancien -> nouveau par famille d'usage (chat, mini, transcribe, tts, realtime, embeddings), vérifié contre l'API, publié dans la PR. Aucune substitution avant ça.
  2. GenAI/Texte + SemanticKernel — la plus grosse concentration.
  3. GenAI/Audio (transcribe, tts, realtime) — familles distinctes, correspondances distinctes.
  4. ML + SymbolicAI — usages d'appoint.
  5. Config + scripts + QuantConnect — hors notebooks, pas de re-exécution.

Contraintes

  • Re-exécution réelle obligatoire (H.1 / C.2) : execution_count non nul + outputs cohérents. Un notebook non ré-exécutable localement se route vers la machine qui le peut (règle F, RECOVERABLE-MACHINE), jamais un « markdown explicatif » de contournement.
  • Un budget provider est consommé par les re-exécutions : annoncer la tranche sur le dashboard avant de lancer, et vérifier l'état des clés — trois clés étaient invalides/épuisées au 2026-09-05 (Mistral 402, Qwen 401, OpenRouter ~0,2 %).
  • Ne pas mélanger avec un enrichissement de densité ou une correction de prose : une PR = une tranche de substitution + sa re-exécution.
  • Les notebooks qui enseignent explicitement un modèle historique (comparatif d'époques, exercice sur les limites de GPT-3.5) se conservent tels quels et se déclarent dans la PR — la substitution n'est pas mécanique.

Acceptance

  • Table de correspondance publiée, vérifiée contre l'API du fournisseur (tranche 1)
  • git grep -ciE 'gpt-(3\.5|4o|4-|4")' sur MyIA.AI.Notebooks/** décroît tranche après tranche, chiffre cité dans chaque PR
  • Chaque notebook substitué est ré-exécuté (preuve Papermill ou kernel dans le body)
  • Les conservations délibérées sont listées avec leur raison

Activity

  1. jsboige commented on Sep 5, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] lane myia-po-2023:CoursIA-2 — tranche 1 #14755 : inventaire exhaustif des modèles obsolètes (git grep, comptage par fichier/famille/série) + table de correspondance ancien→nouveau par famille d'usage (chat, mini, transcribe, tts, realtime, embeddings), vérifiée contre l'API du fournisseur avant toute publication, le tout publié dans la PR de la tranche.

    Aucune substitution de modèle dans cette tranche — l'inventaire et la table précèdent les tranches 2-5 (substitution + re-exécution). Les cibles nommées par le user (« OpenAI 5.6 », « Luna » mini) sont des noms commerciaux, pas des identifiants d'API : ils ne seront pas déduits, ils seront vérifiés firsthand contre les endpoints /v1/models.

    scope: paths: docs/ci/, docs/ledgers/ (document d'inventaire+mapping publié en PR ; les notebooks GenAI/ML/SymbolicAI sont inventoriés en lecture seule, non édités dans cette tranche)

  2. jsboige commented on Sep 5, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED-AMEND] lane myia-po-2023:CoursIA-2 -- paths: docs/genai/** (tranche 1 #14755 : inventaire + table de correspondance ancien->nouveau verifiee contre l API du fournisseur, publiee en PR. Aucune substitution de modele, aucun notebook edite dans cette tranche)

  3. added 2 commits that reference this issue on Sep 6, 2026
  4. added a commit that references this issue on Sep 6, 2026
  5. added
    candidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)
    on Sep 7, 2026
  6. jsboige commented on Sep 7, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED-AMEND] lane myia-po-2023:CoursIA-2 -- paths: docs/genai/model-mapping.md, docs/genai/** (tranche 1 livree : PR #15021 OPEN, branche fix/14755-tranche1-mapping, 1 fichier +115, table de correspondance publiee avec 4 statuts OBS/CUR-OFF/CUR-OR/PED, 124 fichiers inventaires, 8 familles d'usage identifiees, AUCUNE substitution de notebook -- gel explicite tranche 2 lookup API). Tranches 2-5 (substitution effective) restent dues : tranche 2 GenAI/Texte+SemanticKernel, tranche 3 GenAI/Audio, tranche 4 ML+SymbolicAI, tranche 5 Config+scripts+QC.

  7. removed
    candidate-deliveredReferenced by a merged PR with no post-merge activity -- candidate for close triage (#10466)
    on Sep 8, 2026
  8. added a commit that references this issue on Sep 9, 2026
  9. jsboige commented on Sep 9, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED-AMEND] lane myia-po-2023:CoursIA-2 -- paths: MyIA.AI.Notebooks/GenAI/Texte/, MyIA.AI.Notebooks/GenAI/SemanticKernel/, docs/genai/model-mapping.md -- tranche 2 #14755 (découpage tranche 1 : GenAI/Texte + SemanticKernel) : (1) levée du gel — validation de la table contre GET /v1/models OpenAI + lookup OpenRouter, statuts confirmés dans le doc ; (2) substitution des identifiants OBS confirmés + re-exécution des notebooks substitués, PR par tranches. Hors scope : 10_LocalLlama.ipynb (PR #15018), conservations pédagogiques §4 (gpt-3.5-turbo historique 02-*, comparatifs gpt-4-turbo, dall-e-3 citations), placeholders gpt-invalid-model.

  10. added 3 commits that reference this issue on Sep 9, 2026
  11. added a commit that references this issue on Sep 9, 2026
  12. 35 remaining items

  13. jsboige commented on Sep 26, 2026

    @jsboige
    OwnerAuthor

    Grain: MED/genai — lane myia-po-2025:CoursIA — prev: DEEP/notebook-python #17967
    [CLAIMED] lane myia-po-2025:CoursIA -- paths: MyIA.AI.Notebooks/GenAI/Image/examples/science-diagrams.ipynb
    Fournée F1 Image : contrôler la référence Vision gpt-4o en cellule, corriger le traitement de réponse JSON si confirmé par la réexécution de référence, puis réexécuter réellement le carnet et conserver ses sorties. Périmètre limité au carnet scientifique ; pas de substitution automatique des références pédagogiques historiques.

  14. added a commit that references this issue on Sep 27, 2026
  15. added a commit that references this issue on Sep 28, 2026
  16. added a commit that references this issue on Sep 29, 2026
  17. jsboige commented on Oct 2, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED-AMEND] lane myia-po-2024:CoursIA-2 -- paths: MyIA.AI.Notebooks/GenAI/CaseStudies/Medical-Chatbot/medical_chatbot.ipynb, MyIA.AI.Notebooks/GenAI/CaseStudies/Medical-Chatbot/medical_chatbot_en.ipynb, MyIA.AI.Notebooks/GenAI/CaseStudies/Recipe-Maker/receipe_maker.ipynb, MyIA.AI.Notebooks/GenAI/Security/Tooling/Tooling-MCP-Attack-Surface.ipynb -- F7 CaseStudies+Security : substitution gpt-4o-mini/gpt-4o restants (code actif medical FR+EN, receipe, tooling MCP) + re-executions. L'ancien scope F4 (ML/** + SymbolicAI/**) est livre (F4a #16710 + F4b #16712 MERGED) ; barbie/fort-boyard ne portent que des fiches de cout du dernier run reel (conservées, rien du sans re-exec).

  18. added a commit that references this issue on Oct 4, 2026
  19. jsboige commented on Oct 7, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED] lane myia-po-2023:CoursIA -- dispatch coordinateur ai-01 (file profonde du 07/10) : tranche QuantConnect/ML des modeles obsoletes -- inventaire mesure puis remplacement, re-execution des seuls notebooks modifies.

  20. jsboige commented on Oct 7, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED-AMEND] lane myia-po-2023:CoursIA -- paths: MyIA.AI.Notebooks/QuantConnect/Python/QC-Py-26-LLM-Trading-Signals.ipynb, MyIA.AI.Notebooks/QuantConnect/README.md, MyIA.AI.Notebooks/QuantConnect/docs/HANDSON_DATA_REQUIREMENTS.md -- tranche QC du dispatch (file profonde 07/10) ; les labs ML DataScienceWithAgents et projects/ML-LLM-Summarization/main.py restent dans la même claim, traités en PRs suivantes (clés OpenRouter/ADK a vérifier ; main.py exige un backtest QC, noeud actuellement occupé)

  21. jsboigeEpita commented on Oct 7, 2026

    @jsboigeEpita
    Contributor

    [DELIVERED] tranche QuantConnect — lane myia-po-2023:CoursIA — PR #19731

    Scope = claim amendée c.6040710527 (paths: QC-Py-26 + QuantConnect/README.md + docs/HANDSON_DATA_REQUIREMENTS.md) :

    • Substitution : 38 refs gpt-4o-mini/gpt-4o/GPT-4 → gpt-5.6-luna/gpt-5.6-sol (mapping canonique docs/genai/model-mapping-openai.md), 2 conservations délibérées (timeline historique cell 4), prix vérifiés firsthand OpenRouter 2026-10-07, 2 refs prose.
    • Adaptation API gpt-5.6 prouvée par 400 mesurés : max_tokens→max_completion_tokens (champ + 3 sites), temperature retiré des appels OpenAI + code de référence QC — sans ça, un étudiant branchant une vraie clé obtient un notebook en erreur 400 systématique.
    • Re-exécution C.2 : mode mock déterministe canonical (46/46 cellules, 0 erreur, 17/17 code séquentiel), prose coûts réalignée sur les sorties ($0.0019→$0.0034 luna).
    • Signalé non touché : pairing OPENAI_BASE_URL proxy master.env renvoie 401 « invalid proxy authentication » (clé OK en direct) — infra .secrets partagée, à arbitrer par le propriétaire du trousseau.

    Résiduels sous la claim (PRs suivantes) : labs ML/DataScienceWithAgents (analyse clé-par-clé OpenRouter/ADK, 2.9e = benchmark historique à conserver), projects/ML-LLM-Summarization/main.py:133 (gate backtest G, nœud QC occupé par #19678), tranche Anthropic résiduelle (claude-3-5-sonnet).

  22. added a commit that references this issue on Oct 7, 2026
  23. myia-ai-01 commented on Oct 8, 2026

    @myia-ai-01
    Collaborator

    [CLAIMED] lane myia-po-2023:CoursIA -- Fournée ADK bornée : défaut OpenRouter legacy vérifié providers.py:48 ; cible API réelle, cohérence des defaults et test du consommateur, sorties des seuls notebooks modifiés -- paths: MyIA.AI.Notebooks/ML/DataScienceWithAgents/Track2-GoogleADK/config/providers.py

    (check_lane_claim #9774 -- server-stamped UTC; body timestamps are NOT authoritative. Release with [RELEASED] when your PR lands.)

  24. jsboige commented on Oct 8, 2026

    @jsboige
    OwnerAuthor

    [CLAIMED-AMEND] lane myia-po-2023:CoursIA -- paths: MyIA.AI.Notebooks/ML/DataScienceWithAgents/Track2-GoogleADK/config/providers.py, MyIA.AI.Notebooks/ML/DataScienceWithAgents/Track2-GoogleADK/config/test_providers.py, MyIA.AI.Notebooks/ML/DataScienceWithAgents/Track2-GoogleADK/.env.example, MyIA.AI.Notebooks/ML/DataScienceWithAgents/Track2-GoogleADK/config/.env.example

    Portee complete du lot ADK. Le claim d'ai-01 n'en nommait qu'un fichier (providers.py) ; la mesure a montre que le defaut legacy n'y etait pas seul : Settings.openrouter_model (meme fichier) et les deux gabarits .env.example portaient deux autres etats du meme identifiant OpenRouter, et rien ne liait les trois.

    Le lot borne l'identifiant OpenRouter de Track2-GoogleADK : defauts du module, gabarits, et le test qui manquait pour les lier.

    Reste HORS de ce lot (sujets distincts, tranche config du #14755) : le VLLM_MODEL=Qwen/Qwen2.5-72B-Instruct de config/.env.example, perime lui aussi mais d'une autre famille ; et projects/ML-LLM-Summarization/main.py, que le coordinateur a explicitement garde separe (backtest obligatoire).

    Aucun notebook touche : pas de re-execution dans ce lot.

  25. jsboige commented on Oct 8, 2026

    @jsboige
    OwnerAuthor

    [DELIVERED] fournée ADK — lane myia-po-2023:CoursIA — PR #19972 (fix/14755-adk-openrouter-model)

    Scope = claim amendé c.18:58 (paths: Track2-GoogleADK/config/providers.py + config/test_providers.py + .env.example + config/.env.example). Aucun notebook touché : aucune ré-exécution due.

    Tête attestée : 3defdf99604d2bc328ef01b12a88d7232184b723 — tête inchangée depuis la poussée.

    Le défaut, mesuré contre l'API

    L'identifiant OpenRouter de Track2-GoogleADK pointait un modèle retiré du catalogue du fournisseur (467 modèles au moment de la mesure) :

    ABSENT   anthropic/claude-3.5-sonnet
    EXISTE   openai/gpt-5
    EXISTE   openai/gpt-5.6-sol
    

    Appel de contrôle par le chemin réel du dépôt : litellm.NotFoundError 404 — « No endpoints found for anthropic/claude-3.5-sonnet. » Le défaut n'était pas seulement daté, il était mort.

    Il était invisible parce que get_provider_config résout settings.openrouter_model or defaults["model"] : tant que la variable d'environnement porte une valeur, le repli DEFAULTS n'est jamais exercé. Quatre lignes portaient quatre états, et rien ne les liait.

    Emplacement Avant Après
    config/providers.py:48 — DEFAULTS[OPENROUTER] anthropic/claude-3.5-sonnet (mort) openai/gpt-5.6-sol
    config/providers.py:90 — Settings.openrouter_model openai/gpt-5 openai/gpt-5.6-sol
    .env.example:18 openai/gpt-5 openai/gpt-5.6-sol
    config/.env.example:21 (commenté) anthropic/claude-3.5-sonnet (mort) openai/gpt-5.6-sol

    Cible retenue : openai/gpt-5.6-sol — présente au catalogue, cohérente avec le défaut OpenAI du même fichier (openai_model = "gpt-5.6-sol"). Retenir openai/gpt-5 aurait harmonisé en consacrant la génération précédente, ce que le mandat de #14755 interdit.

    Réponse aux demandes, point par point

    Demande du coordinateur État Preuve
    Vérifier la cible réelle contre l'API fait catalogue interrogé ; l'ancien identifiant rend 404 au contrôle négatif
    Harmoniser le défaut et la config consommée fait les 4 lignes ci-dessus alignées, toutes sur la même valeur
    Tester le chemin OpenRouter réel fait exercé par le code du dépôt (get_provider_config → get_litellm_model → litellm.completion), réponse 'OK'
    Annoncer le budget avant l'appel fait crédit relevé avant l'appel, consigné dans le body de la PR
    Périmètre notebooks sans objet 0 notebook modifié — le correctif est config + test
    main.py QC gardé séparé respecté non touché, laissé au grain QC avec backtest obligatoire

    Le test qui manquait — c'est la pièce qui compte

    test_settings_model_matches_provider_default_for_each_provider lie Settings et ProviderConfig.DEFAULTS pour les six providers. C'est l'invariant dont l'absence a laissé les deux valeurs dériver : le repli mort se périmait sans que rien ne rougisse. Le test ne répare pas une ligne — il ferme la classe de défaut.

    Preuve firsthand, rejouée par la lane sur la tête exacte :

    python -m pytest config/test_providers.py -q
    collected 31 items
    config\test_providers.py ...............................   [100%]
    31 passed in 0.41s
    

    30 tests avant, 31 après (+1). 20 des 21 jambes CI vertes ; la seule rouge est PR gate en DWELL — un minuteur, pas un défaut : plancher écoulé à 2026-10-08T20:58:07Z, la jambe se ré-agrège seule au balayage suivant.

    État

    PR ouverte, sans review — c'est le seul point qui reste, et il n'appartient pas à la lane. Aucune re-poussée prévue (un re-push remettrait le plancher DWELL à zéro).

  26. added a commit that references this issue on Oct 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions