Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Revoir le parcours des données d’une fonction d’IA

Après cette leçon: Je peux revoir le parcours des données d’une fonction avec une liste de contrôle.

Leçon de 70 min6 commandesLab agent de code IA : utiliser opencode pour expliquer et corriger du code, et vérifier son travail

Suivre les données à travers une fonction

Une revue de parcours suit les données personnelles de leur entrée jusqu’à leur fin. Elle demande où elles vont, qui les voit, combien de temps elles restent et pourquoi.

Une revue repère des problèmes sur le papier, avant la mise en service. C’est une façon de réfléchir, pas un certificat que quoi que ce soit est conforme.

À la fin de cette leçon

Remarque

Je peux revoir le parcours des données d’une fonction avec une liste de contrôle.

Mots clés

MotCe que ça veut direExemple
Parcours des donnéesle chemin que prennent les données personnelles dans une fonction
Liste de contrôleune liste de questions auxquelles chaque étape doit répondre
Lieu approuvéun endroit où vous avez décidé que des données peuvent allernotre base
Lecteurune personne ou un groupe qui peut voir les données
Finalitéla raison pour laquelle une étape utilise les données

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Un parcours est une liste d’étapes

Écrivez chaque étape du trajet sur une ligne. Une étape a un nom, les données qu’elle utilise, le lieu où elles vont et qui peut les lire là-bas.

Elle a aussi le nombre de jours de conservation, l’indication d’un masquage préalable et la raison de son usage. Cinq questions transforment ces lignes en revue.

Les cinq contrôles

ContrôleIl échoue quandExemple du Run
Envoyé sans masquageDes données vont vers un lieu non approuvé, sans masquageApplication vers modèle
Trop de lecteursLes lecteurs comprennent tout le mondeÉcriture du journal
Pas de limiteAucun nombre de jours n’est fixéÉcriture du journal
Gardé trop longtempsLes jours dépassent votre limiteExport hebdomadaire, 400 jours
Pas de finalitéAucune raison n’est écriteExport hebdomadaire

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

La revue signale chaque échec

Contrôlez chaque étape dans l’ordre et listez chaque échec qu’elle a. Une étape peut échouer à plusieurs contrôles. Une étape qui n’échoue à aucun n’ajoute rien à la liste.

Comptez les échecs par contrôle. Vous voyez alors, par exemple, que trois étapes n’ont pas de limite, et vous les corrigez ensemble.

Une erreur courante

Attention

Beaucoup pensent qu’un parcours qui passe la liste est conforme à la loi. Ce n’est pas vrai. Cela montre seulement que cinq questions ont une réponse. Les règles varient selon le lieu et l’usage : une personne compétente décide. Cette leçon n’est pas un avis juridique.

Écrire l’assistant du modèle, partie 1

Commande
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

Commande
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 le réviseur de parcours, partie 1

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { demander } = require(\"./model\");' 'const approuves = [\"notre application\", \"notre base\"];' 'const limite = 90;' 'const parcours = [' '  { etape: \"Formulaire vers application\", donnees: [\"courriel\", \"message\"], vers: \"notre application\", qui: [\"assistance\"], jours: 30, masque: false, pourquoi: \"Répondre au client\" },' '  { etape: \"Application vers modèle\", donnees: [\"message\"], vers: \"hébergeur du modèle\", qui: [\"hébergeur du modèle\"], jours: 0, masque: false, pourquoi: \"Écrire une réponse\" },' '  { etape: \"Écriture du journal\", donnees: [\"courriel\"], vers: \"notre base\", qui: [\"tout le monde\"], jours: null, masque: false, pourquoi: \"Débogage\" },' '];' > revue.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 le réviseur de parcours, partie 2

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'parcours.push({ etape: \"Export hebdomadaire\", donnees: [\"courriel\"], vers: \"prestataire d’analyse\", qui: [\"analyste\"], jours: 400, masque: true, pourquoi: \"\" });' 'parcours.push({ etape: \"Cache\", donnees: [], vers: \"notre application\", qui: [\"assistance\"], jours: 1, masque: false, pourquoi: \"Rapidité\" });' 'function verifier(e) {' '  const sortie = [];' '  if (e.donnees.length > 0 && approuves.indexOf(e.vers) < 0 && e.masque === false) sortie.push(\"envoyé sans masquage\");' '  if (e.qui.indexOf(\"tout le monde\") >= 0) sortie.push(\"trop de lecteurs\");' '  if (e.jours === null) sortie.push(\"pas de limite\");' '  else if (e.jours > limite) sortie.push(\"gardé trop longtemps\");' '  if (e.pourquoi.trim().length === 0) sortie.push(\"pas de finalité\");' '  return sortie;' '}' >> revue.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 le réviseur de parcours, partie 3

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  let en_echec = 0;' '  parcours.forEach(function (e) {' '    const f = verifier(e);' '    if (f.length > 0) en_echec = en_echec + 1;' '    console.log(e.etape + \" -> \" + (f.length === 0 ? \"réussit\" : f.join(\", \")));' '  });' '  console.log(\"étapes en échec : \" + en_echec + \" sur \" + parcours.length);' '  const q = \"En une courte phrase, pourquoi écrire la finalité de chaque étape qui utilise des données personnelles ?\";' '  const echantillon = \"Une finalité écrite montre pourquoi les données servent, et une étape sans raison saute aux yeux.\";' '  const r = await demander([{ role: \"user\", content: q }], echantillon, 60);' '  console.log(\"le modèle dit : \" + r.texte);' '}' 'main();' >> revue.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 le réviseur de parcours

Commande
docker exec -w /home/node/project agent node revue.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.

Ce que le Run affiche

LigneCe qu’elle montre
Formulaire vers application -> réussitUn lieu approuvé, une raison et une limite
Application vers modèle -> envoyé sans masquageUn message est parti sans masquage
Écriture du journal -> trop de lecteurs, pas de limiteDeux échecs dans une étape
Export hebdomadaire -> gardé trop longtemps, pas de finalitéDeux échecs de plus
étapes en échec : 3 sur 5Le résumé
le modèle dit : ...Une phrase. Les mots changent à chaque exécution

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

À propos de ce labo et de sa source: Lab agent de code IA : utiliser opencode pour expliquer et corriger du code, et vérifier son travail

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.