درس 1 — Cas d'usage et architecture

Un outil d'aide, pas de décision

5 دقائق قراءة

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

Un outil d'aide, pas de décision

Le besoin

Une équipe de recrutement reçoit des dizaines de candidatures pour un poste de développeur back-end Python. Elle veut un outil qui, pour chaque CV :

  • note chaque critère de la fiche de poste et justifie sa note par une citation du CV ;
  • propose des questions à poser en entretien ;
  • trie les dossiers pour que les recruteurs lisent d'abord les plus pertinents.

Elle ne veut pas d'un outil qui rejette des candidats automatiquement.

Ce qui peut mal tourner

Un attribut sensible est une caractéristique qui ne doit pas influencer la décision (et dont l'usage discriminatoire est interdit par la loi) : genre, âge, origine, nationalité, situation familiale, adresse, etc. Un proxy est une information apparemment neutre qui permet de deviner un attribut sensible.

Information du CVAttribut sensible devinéTraitement dans le lab
Nom, prénomgenre, origineretiré (identité) et remplacé par [NOM] dans le texte
Date de naissanceâgeretirée
Situation familiale, adresse, nationalitéfamille, origineretirées
« Développeuse », « diplômée »genreramené à une forme unique
Loisirs (« parents d'élèves »)situation familialesection entière non transmise
Langues (« wolof », « vietnamien »)originetransmise : limite discutée plus bas
Années de diplômeâgetransmises : limite discutée plus bas

Lequel de ces éléments est un « proxy » d'un attribut sensible ?

Le principe : le modèle juge, le code compte, l'humain décide

flowchart TB
  subgraph CODE["Code Python (déterministe)"]
    A["anonymiser + garde_anonymat"]
    S["scorer : pondération, tranche, preuves"]
  end
  subgraph LLM["Gemini (probabiliste)"]
    E["note 0 à 3 + justification + citation, par critère"]
  end
  subgraph HUM["Recruteur"]
    D["décision et commentaire"]
  end
  A --> E --> S --> D
ÉtapeQuiPourquoi
Retirer les attributs sensiblescodedoit être garanti et vérifiable
Lire le CV et noter chaque critèremodèlecomprendre un texte libre
Pondérer, calculer le scorecoderègle connue, identique pour tous
Vérifier les citationscodedétecter une justification inventée
Déciderhumainresponsabilité, contexte, droit des candidats

Pourquoi le score global est-il calculé en Python plutôt que demandé au modèle ?

Les données fictives

cvs.json contient 6 CV inventés, avec une partie identite (nom, genre, date de naissance, nationalité, situation familiale, adresse, contacts) et des sections (titre, expérience, compétences, formation, langues, loisirs). fiche_poste.json décrit 5 critères pondérés :

CritèrePoidsAttendu
python_backend3au moins 3 ans de Python côté serveur (API REST)
bases_donnees2SQL, bases relationnelles, migrations
cloud_devops2Docker, intégration continue, cloud
qualite2tests automatisés, revue de code
communication1documentation, équipe, anglais écrit

reference.json contient l'appréciation d'un recruteur fictif (fort, moyen, faible), écrite avant de lancer le modèle : c'est la base de comparaison de la leçon 4.

Exercice : compléter la fiche de risques

Pour le critère communication (« anglais technique écrit »), quel risque de biais voyez-vous, et comment le limiter ?

Voir la solution
  • Risque : le modèle peut valoriser une langue maternelle ou un parcours à l'étranger (proxy d'origine), ou pénaliser une formulation maladroite en français alors que le critère porte sur l'anglais écrit.
  • Limiter : rédiger un attendu observable (« a rédigé de la documentation technique en anglais »), exiger une citation comme preuve, donner un poids faible (1) au critère, et vérifier en entretien plutôt que sur le CV.

Résultat obtenu

Texte réellement envoyé au modèle pour le CV C3 le 2026-10-15 (après anonymisation) : plus de nom, de contact, de loisirs ni d'accord féminin (« ingénieure » devient « ingénieur »). La langue « vietnamien » est encore là : c'est la limite assumée du lab.

anonymiser(C3)
EXPERIENCE : 2024-2026 : ingénieur données dans un cabinet d'études fictif. Scripts Python (pandas) de nettoyage
de données, requêtes SQL sur PostgreSQL, tableaux de bord. Pas de développement d'API. Utilisation de Git en équipe.
COMPETENCES : Python, pandas, SQL, PostgreSQL, Git, notions de Docker.
FORMATION : Diplômé d'une école d'ingénieurs (2023).
LANGUES : Anglais courant, vietnamien.

Je sais faire

  • Je distingue un attribut sensible et un proxy, avec un exemple de chaque
  • Je répartis les rôles : le modèle juge, le code compte, l'humain décide
  • Je sais pourquoi le recrutement est un usage « à haut risque » au sens de l'AI Act
  • Je prépare une référence humaine avant d'évaluer un modèle
التالي