درس 8 — Projet final

Projet final : comparer trois modèles, corriger, décider

6 دقائق قراءة

هذا المحتوى غير مترجم بعد. تُعرض النسخة الأصلية.

Projet final : comparer trois modèles, corriger, décider

La démarche

flowchart LR
  T["pytest : 7 tests sans clé"] --> X["extraction.py × 3 modèles"]
  X --> E["evaluer.py : précision, erreurs, revue"]
  E --> A["Analyse des erreurs"]
  A --> C["Correction ciblée du prompt"]
  C --> X2["Nouvelle extraction"]
  X2 --> E2["Nouvelle évaluation"]
  E2 --> D["Décision : modèle, seuils, règles"]
terminal
pytest -q
MODEL=gemini-3.5-flash      python extraction.py jeu_annote.jsonl res_flash.jsonl
MODEL=gemini-3.5-flash-lite python extraction.py jeu_annote.jsonl res_lite.jsonl
GOOGLE_GENAI_USE_VERTEXAI=TRUE GOOGLE_CLOUD_PROJECT=mon-projet GOOGLE_CLOUD_LOCATION=europe-west1 \
  MODEL=gemini-2.5-flash    python extraction.py jeu_annote.jsonl res_vertex.jsonl
for f in res_*.jsonl; do python evaluer.py jeu_annote.jsonl $f; done

Étape 1 : la comparaison

Modèle (plateforme)Champs correctsDocs fauxEnvoyés en revueErreurs manquéesMédiane / doc
gemini-3.5-flash (API)95/95 (100 %)02aucune5,8 s
gemini-3.5-flash-lite (API)92/95 (96,8 %)35cr-02, cr-041,1 s
gemini-2.5-flash (Vertex AI)90/95 (94,7 %)37aucune6,5 s

Les erreurs de flash-lite : le niveau d'études d'Amina (licence en cours comptée), l'échéance « vendredi » oubliée dans cr-02, et Projet Entrepôt Nord (question d'annotation, vue au module 3). Celles de gemini-2.5-flash : une urgence inventée (cmd-01), la même échéance oubliée, et la date 14/10/26 lue « 26 octobre 2014 ».

Étape 2 : une correction ciblée

Les erreurs de Vertex AI portent surtout sur des dates. Essai : compléter les règles du prompt, sans toucher au code, en surchargeant REGLES dans un petit script :

essai_regles.py
import sys
import extraction

extraction.REGLES += (" Les dates abrégées JJ/MM/AA se lisent jour/mois/année, avec l'année 20AA."
                      " Un jour de la semaine cité sans date (« vendredi ») désigne le prochain jour de ce nom"
                      " après la date du document.")
extraction.extraire_lot(sys.argv[1], sys.argv[2])

Résultat réel sur Vertex AI (gemini-2.5-flash) :

AvantAprès
Champs corrects90/95 (94,7 %)92/95 (96,8 %)
Erreurs de dates (cr-02, cr-05)4 champs1 champ (lundi 19 → 20 octobre)
Nouvelles erreurscv-05 niveau d'études, cmd-03 50 gobelets au lieu d'1 lot de 50
Envoyés en revue / erreurs manquées7 / aucune6 / aucune

Après la correction, la précision globale passe de 94,7 % à 96,8 %. Quelle conclusion est la plus juste ?

Pour un flux de 50 000 e-mails de commande par mois, quels critères comptent pour choisir le modèle ?

Exercice final : votre recommandation

Rédigez en 10 lignes une recommandation pour l'entreprise fictive : quel modèle pour quel type de document, quels seuils et règles de revue, et quelles actions avant la mise en production. Appuyez chaque point sur un chiffre ci-dessus.

Voir la solution

Une recommandation possible :

  1. Commandes et CV : gemini-3.5-flash-lite est 5 fois plus rapide ; sur ces deux types, une seule erreur (cv-05) sur 65 champs, signalée par un champ incertain. Le garder, avec revue sur champ incertain.
  2. Comptes rendus : gemini-3.5-flash (aucune erreur), car les dates relatives piègent les deux autres modèles et flash-lite en a manqué une en revue (cr-02).
  3. Règle métier à ajouter : action sans échéance alors que le texte cite un jour de la semaine ⇒ revue (attrape cr-02).
  4. Prompt : garder les règles sur les dates (gain mesuré), mais seulement après réévaluation sur un jeu plus grand.
  5. Avant production : porter le jeu annoté à au moins 50 documents par type, en y ajoutant les cas corrigés en revue ; aligner guide d'annotation et descriptions de champs (nom du projet) ; relancer l'évaluation à chaque changement de modèle ou de prompt.
  6. Suivi : chaque semaine, part des documents en revue et erreurs trouvées par les relecteurs.

Résultat obtenu

Les tests sans clé, puis l'évaluation réelle du meilleur modèle, le 2026-10-15 :

pytest -v (sortie réelle, 2026-10-15)
test_extraction.py::test_regles_metier_des_schemas PASSED                [ 14%]
test_extraction.py::test_reparation_reussie PASSED                       [ 28%]
test_extraction.py::test_echec_apres_reparation_part_en_revue PASSED     [ 42%]
test_extraction.py::test_confiance_basse_ou_champ_incertain_part_en_revue PASSED [ 57%]
test_extraction.py::test_normalisation PASSED                            [ 71%]
test_extraction.py::test_evaluation_par_champ PASSED                     [ 85%]
test_extraction.py::test_jeu_annote_coherent_avec_les_schemas PASSED     [100%]
============================== 7 passed in 0.28s ===============================
python evaluer.py, gemini-3.5-flash (sortie réelle, 2026-10-15)
TOTAL : 95/95 champs corrects (100.0%)

Erreurs :

Revue humaine : {'docs_avec_erreur': 0, 'envoyes_en_revue': 2, 'erreurs_attrapees': 0, 'erreurs_manquees': []}

100 % sur 15 documents ne prouve pas que le modèle ne se trompe jamais : cela prouve que ces 15 pièges ne le piègent plus. Ajoutez-en d'autres.

Je sais faire

  • Comparer plusieurs modèles sur le même jeu annoté
  • Analyser les erreurs pour proposer une correction ciblée
  • Vérifier qu'une correction n'a pas déplacé les erreurs ailleurs
  • Rédiger une recommandation chiffrée : modèle, règles de revue, prochaines étapes