Quelle fonction demande le plus de soin
Une évaluation du risque dit quel tort une fonction IA peut causer, donc quel soin elle exige avant sa mise en service. Elle compte, car un planificateur de menus et un tri de CV peuvent utiliser le même modèle sans présenter le même risque.
Cette leçon donne des informations générales et non un conseil juridique. Vérifiez les règles qui vous concernent, et demandez l’avis d’un juriste quand une décision touche une personne.
À la fin de cette leçon
Remarque
Je peux évaluer le risque d’une fonction IA et dire qui en est responsable.
Mots clés
| Mot | Ce que ça veut dire |
|---|---|
| Niveau de risque | un niveau qui dit quel soin la fonction exige |
| Décision automatique | un résultat qu’aucune personne ne relit avant qu’il agisse |
| Réversible | un mauvais résultat peut être corrigé |
| Responsable | la personne nommée qui répond de la fonction |
| Redevable | tenu de rendre des comptes : expliquer et réparer |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Quatre questions donnent un niveau
Posez quatre questions sur une fonction. Agit-elle sur des personnes ? Une personne relit-elle chaque résultat avant qu’il agisse ? Peut-on corriger un mauvais résultat ? Combien de personnes touche-t-elle ?
Quatre réponses ajoutent des points. La fonction agit sur des personnes. Personne ne relit les résultats. On ne peut pas les annuler. Elle touche plus de mille personnes. Le total donne un niveau. Le niveau lance la discussion, il ne la clôt pas.
Exemple détaillé : deux fonctions
| Fonction | Personnes | Automatique | Non annulable | Plus de 1000 | Score et niveau |
|---|---|---|---|---|---|
| Suivi de commande | non | oui : 2 | non | non | 2, faible |
| Tri des CV | oui : 2 | oui : 2 | oui : 2 | non | 6, élevé |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Chaque fonction a un responsable nommé
Un rôle comme « l’équipe données » n’est pas un responsable. Un responsable est une personne que l’on interroge quand la fonction fait du tort, et qui peut l’arrêter.
Certains pays ont des règles sur les décisions prises seulement par un système au sujet de personnes. Elles demandent souvent qu’un humain puisse les revoir. C’est un résumé, pas un conseil juridique : cherchez les règles qui vous concernent.
Une erreur courante
Attention
Beaucoup pensent que le modèle décide du risque, donc qu’un modèle sûr donne une fonction sûre. Le risque vient de ce que la fonction fait, à qui, et de la possibilité de revenir en arrière. Évaluez la fonction, jamais le modèle.
Écrire l’assistant du modèle, partie 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const base = process.env.AI_URL || \"http://ai:4000\";' '// Les jetons d’une réponse, ou null si elle n’en donne pas.' 'function compter(donnees, nom) {' ' return donnees.usage && typeof donnees.usage[nom] === \"number\" ? donnees.usage[nom] : null;' '}' > model.js"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Écrire l’assistant du modèle, partie 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function demander(messages, echantillon, max) {' ' try {' ' const res = await fetch(base + \"/v1/chat/completions\", {' ' method: \"POST\",' ' headers: { \"content-type\": \"application/json\", authorization: \"Bearer lab\" },' ' body: JSON.stringify({ model: \"lab\", messages: messages, max_tokens: max || 100 }),' ' signal: AbortSignal.timeout(30000),' ' });' ' if (res.ok === false) throw new Error(\"statut \" + res.status);' ' const d = await res.json();' ' return { texte: d.choices[0].message.content, entree: compter(d, \"prompt_tokens\"), sortie: compter(d, \"completion_tokens\"), enregistre: false };' ' } catch (erreur) {' ' console.log(\"Échantillon enregistré : aucun modèle n’a répondu (\" + erreur.message + \").\");' ' return { texte: echantillon, entree: null, sortie: null, enregistre: true };' ' }' '}' 'module.exports = { demander };' >> model.js"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Écrire l’évaluateur de risque, partie 1
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { demander } = require(\"./model\");' '' '// Des fonctions inventées : ce qu’elles font, à qui, et si l’on peut revenir en arrière.' 'const fonctions = [' ' { nom: \"Suivi de commande\", personnes: false, automatique: true, annulable: true, utilisateurs: 500 },' ' { nom: \"Tri des CV\", personnes: true, automatique: true, annulable: false, utilisateurs: 300 },' ' { nom: \"Aide aux devoirs\", personnes: true, automatique: false, annulable: true, utilisateurs: 2000 },' ' { nom: \"Robot de remboursement\", personnes: true, automatique: true, annulable: true, utilisateurs: 800 },' '];' 'const responsables = { \"Tri des CV\": \"Camille Roux\", \"Robot de remboursement\": \"\" };' > risque.js"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Écrire l’évaluateur de risque, partie 2
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function score(f) {' ' let s = 0;' ' if (f.personnes) s = s + 2;' ' if (f.automatique) s = s + 2;' ' if (f.annulable === false) s = s + 2;' ' if (f.utilisateurs > 1000) s = s + 1;' ' return s;' '}' 'function niveau(s) {' ' if (s >= 5) return \"élevé\";' ' if (s >= 3) return \"moyen\";' ' return \"faible\";' '}' >> risque.js"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Écrire l’évaluateur de risque, partie 3
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' ' fonctions.forEach(function (f) {' ' const s = score(f);' ' const qui = responsables[f.nom] || \"personne\";' ' console.log(f.nom + \" : score \" + s + \", \" + niveau(s) + \", responsable : \" + qui);' ' });' ' const q = \"En deux phrases : un tort qu’une fonction de tri de CV peut causer à une personne, et qui doit en répondre.\";' ' const r = await demander([{ role: \"user\", content: q }], \"Elle peut écarter par erreur un bon candidat sans que personne le voie. Une personne nommée dans l’entreprise doit en répondre.\", 80);' ' console.log(\"Une réponse possible : \" + r.texte);' '}' 'main();' >> risque.js"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Lancer l’évaluateur de risque
docker exec -w /home/node/project agent node risque.jsAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Une sortie possible
| Ligne | Ce qu’elle montre |
|---|---|
| Suivi de commande : score 2, faible, responsable : personne | Risque faible, donc l’absence de responsable est moins urgente |
| Tri des CV : score 6, élevé, responsable : Camille Roux | Risque élevé et un responsable nommé |
| Aide aux devoirs : score 3, moyen, responsable : personne | Risque moyen et personne n’en répond |
| Robot de remboursement : score 4, moyen, responsable : personne | Un manque : risque moyen et personne n’en répond |
| Une réponse possible : ... | Votre propre appel. Il change à chaque exécution, ou affiche Échantillon enregistré |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.