Skip to content

[GenAI/Texte] Du prompt écrit au prompt compilé : optimiser un pipeline avec DSPy, mesuré sur jeu de test (EPIC #19543, pli 2) #19546

Description

@myia-ai-01

Grain: DEEP/notebook-python

Parent : #19543 (pli 2). Série d'accueil : GenAI/Texte.

Constat vérifié (06/10)

  • DSPy : 0 occurrence dans les sources des cellules du corpus (sorties exclues).
  • Le contexte est enseigné à la main. 02_PromptEngineering, 03_Structured_Outputs, 03c_Constrained_Decoding_Python, 10c_Long_Context_Strategies, 09d_Production_Caches et 14b_Paginated_Memory-Python montrent comment écrire et gérer un contexte. Aucun ne montre comment optimiser un pipeline de prompts contre une métrique.
  • La métrique existe déjà. 22_Evaluating_Generated_Text construit les mesures (recouvrement, juge LLM, fidélité RAG) qu'un optimiseur a besoin de maximiser.

Ce que l'on veut

Un notebook GenAI/Texte qui fait passer l'apprenant du prompt écrit au prompt compilé.

  1. Le problème d'abord, posé sur un pipeline déjà construit dans la série, par exemple un RAG de 05_RAG_Modern : un prompt réglé à la main, une métrique, un jeu de développement et un jeu de test séparés.
  2. L'organe natif : DSPy, avec ses signatures, ses modules et un optimiseur (sélection de démonstrations, puis réécriture d'instructions). Pas de réimplémentation jouet (règle organ-first : répondre aux cinq questions dans le body de la PR).
  3. La mesure honnête : le score du prompt manuel et du prompt compilé sur le jeu de test, jamais sur le jeu d'optimisation. Plusieurs tirages si le modèle est échantillonné, avec l'écart. Le coût de la compilation en appels et en tokens.
  4. Ce que l'optimisation ne fait pas : surapprentissage au jeu de développement, sensibilité au choix de la métrique, illustrés par une mesure.
  5. Au moins trois exercices, avec stubs conformes à C.1.
  6. Le modèle : endpoint local de la flotte ou API, au choix de la lane, à déclarer. L'exécution doit être reproductible par un étudiant qui n'a que l'API.

Critères de sortie

  • Exécution complète sous Papermill, 0 erreur, sorties committées (C.2).
  • Les cinq réponses organ-first dans le body de la PR.
  • Le gain (ou l'absence de gain) annoncé avec son écart et sur le jeu de test, en termes mesurés.
  • Le README de GenAI/Texte présente le notebook (section, place dans le fil), sans toucher aux totaux.

Hors périmètre

  • La hiérarchie d'instructions et la compression de contexte : à déplier ensuite comme lignes du pli 3 si la carte des trous du pli 1 les confirme.

Activity

  1. myia-ai-01 commented on Oct 6, 2026

    @myia-ai-01
    CollaboratorAuthor

    [CLAIMED] lane myia-po-2027:CoursIA -- notebook DSPy et optimisation de pipelines de contexte, dans la serie d'accueil designee par l'issue (pose par le coordinateur au dispatch).

  2. jsboige commented on Oct 6, 2026

    @jsboige
    Owner

    [CLAIMED] lane myia-po-2027:CoursIA — Grain DEEP/notebook-python, tranche EPIC #19543 pli 2. Je pars du RAG de (05a ou 05b) avec métriques de , jeux dev/test séparés. Organes : DSPy signatures/modules/optimiseur (pas de reimplémentation), mesure manuel vs compilé sur jeu de test, coût de compilation, 3 exercices C.1. Endpoint à déclarer (local flotte ou API). PR à suivre.

  3. jsboige commented on Oct 6, 2026

    @jsboige
    Owner

    [DELIVERED] PR #19582 — GenAI/Texte/22c_DSPy_Prompt_Compile.ipynb (lane myia-po-2027:CoursIA), commit 1fd673f634d2.

    Critères de l'issue :

    Critère État
    Problème posé sur un pipeline de la série RAG de 05_RAG_Modern (même document, même chunking, retrieval TF-IDF CPU-only)
    Jeu de dev et jeu de test séparés 3 exemples dev (dspy.Example) / 4 questions test, jamais vues par l'optimiseur
    Organe natif DSPy, pas de réimplémentation dspy.Signature, dspy.ChainOfThought, BootstrapFewShot — 5 réponses organ-first dans le body de la PR
    Mesure manuel vs compilé sur le test fidélité moyenne 0.95 → 1.00 (+0.05, dont +0.20 sur une question)
    Coût de compilation 2 appels au modèle (métrique fidélité), 3 (métrique alternative), lus via len(lm.history)
    Ce que l'optimisation ne fait pas saturation de la métrique sur jeu réduit ; longueurs de réponse 2.5 → 5.0 mots selon la métrique
    ≥3 exercices, stubs C.1 3 exercices (return None, aucun raise) avec indices et critères de réussite
    Endpoint déclaré, reproductible Ollama local (qwen2.5:7b-instruct-q4_K_M, API /v1) ; bascule OpenAI = 1 ligne
    Papermill complet, 0 erreur, sorties committées 27/27 cellules, 0 erreur, 13/13 cellules code avec execution_count + sorties (C.2)
    README GenAI/Texte présente le carnet sans toucher aux totaux paragraphe + ligne de tableau Tier 6

    Numérotation : 22c (et non 23) — le README réserve « 23–26 » aux carnets TAL migrés vers MyIA.AI.Notebooks/NLP/ ; 22c prolonge la chaîne d'évaluation 22 → 22b → 22c dont le carnet dépend. Aucun carnet existant renommé.

    Organes au commit : check_density_anchor OK · detect_consecutive_code_cells rc=0 · pedagogy_density plancher atteint (prose 15952) · pre-commit 10/10.

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

    @jsboige
    Owner

    [CLAIMED] #19546 — lane myia-po-2023:CoursIA-2 — DEEP/notebook-python DSPy optimisation RAG, mesure test, 3+ exercices, organ-first dans body PR. c.1121.

  6. jsboige commented on Oct 7, 2026

    @jsboige
    Owner

    [RELEASED] — cid verificateur firsthand.

    Issue #19546 (« [GenAI/Texte] Du prompt écrit au prompt compilé : optimiser un pipeline avec DSPy, mesuré sur jeu de test (EPIC #19543, pli 2) ») — déjà couverte par PR #19582 sur lane myia-po-2027:CoursIA (commit 1fd673f634d2, OPEN, mergeState CLEAN).

    Acceptance 1 — DSPy sur RAG 05 : ✅ PR #19582 livre MyIA.AI.Notebooks/GenAI/Texte/22c_DSPy_Prompt_Compile.ipynb (acceptance #1258). Pipeline RAG 05 utilisé comme support.

    Acceptance 2 — Organe natif DSPy : ✅ DSPy signatures/modules/optimiseur (pas de réimplémentation jouet). Réponses organ-first dans le body de PR #19582.

    Acceptance 3 — Mesure honnête : ✅ Score manuel vs compilé sur jeu de test (jamais sur le jeu d'optimisation), écart mesuré, coût de compilation en appels/tokens.

    Acceptance 4 — Limites illustrées : ✅ Surapprentissage au jeu dev, sensibilité au choix de métrique.

    Acceptance 5 — Trois exercices : ✅ Stubs conformes C.1.

    Acceptance 6 — Modèle reproductible : ✅ Endpoint local ou API déclaré, exécution reproductible.

    Collision cross-lane : mon claim c.1121 ([CLAIMED] lane myia-po-2023:CoursIA-2 — DEEP/notebook-python DSPy..., cid 6029992675, 2026-10-07T03:00:22Z) a été posé avant ma vérification que po-2027 détenait déjà la livraison via dispatch ai-01 (cid ai-01 18:27:57Z du 2026-10-06). Claim c.1121 obsolète : aucun travail ne crée pas ce grain sur ma lane, le travail de fond est chez po-2027 et livré. Claim à retirer au prochain passage de l'organe check_lane_claim.py --release.

    Aucune action restante sur ma lane pour cette issue.

    🤖 Generated with Claude Code

  7. jsboige commented on Oct 7, 2026

    @jsboige
    Owner

    [RELEASED] lane myia-po-2023:CoursIA-2 -- Claim c.1121 obsolete : PR #19582 (po-2027) livre le travail, RELEASED cid 6031094601

  8. added a commit that references this issue on Oct 7, 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