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

Poids ouverts et licences de modèles

Après cette leçon: Je peux lire la licence d’un modèle et dire ce qu’elle me permet.

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

Poids ouverts ne veut pas dire libre

Poids ouverts veut dire que les fichiers des nombres d’un modèle se téléchargent. Cela ne veut pas dire que vous pouvez en faire ce que vous voulez. Une licence fixe les conditions.

C’est important, car une entreprise qui bâtit sur un modèle qu’elle n’a pas le droit d’employer pour vendre peut devoir s’arrêter. Lire les conditions d’abord prend dix minutes.

À la fin de cette leçon

Remarque

Je peux lire la licence d’un modèle et dire ce qu’elle me permet.

Mots clés

MotCe que ça veut dire
Poidsles nombres appris d’un modèle
Licenceles conditions pour utiliser une chose
Clauseune règle à l’intérieur d’une licence
Attributiondire qui l’a fait
Limite d’usageun plafond, comme un nombre d’utilisateurs

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

Une licence dit ce que vous pouvez faire

Les poids d’un modèle ont une licence, et le code qui les fait tourner peut en avoir une autre. Lisez les deux.

Chaque règle est une clause. Les clauses courantes posent cinq questions. L’usage commercial est-il permis ? Y a-t-il une limite d’usage ? Quels buts sont interdits ? Peut-on modifier le modèle, et faut-il partager les changements ? Faut-il une attribution ?

Les clauses à vérifier, en mots simples

ClauseQuestion à poser
CommercialPuis-je gagner de l’argent avec ?
Limite d’usageY a-t-il un plafond, comme un nombre d’utilisateurs ?
Usages interditsMon but est-il sur la liste ?
ModificationsPuis-je le modifier, et dois-je partager le changement ?
AttributionDois-je montrer qui l’a fait ?

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

Testez un usage contre chaque clause

Écrivez votre usage : est-il commercial, pour combien d’utilisateurs, dans quel but, allez-vous modifier le modèle et partager les changements. Testez-le ensuite contre chaque clause, l’une après l’autre.

Une clause qui échoue suffit pour dire refusé. Si toutes passent mais que l’attribution est exigée, l’usage est autorisé sous conditions.

Une erreur courante

Attention

Beaucoup pensent qu’un modèle posé sur un site public est libre pour tout usage. Être facile à télécharger ne dit rien des conditions. Lisez les clauses pour votre propre usage avant de bâtir dessus. Cette leçon est un exercice, pas un conseil 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 vérificateur de licence, partie 1

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { demander } = require(\"./model\");' 'const licences = [' '  { nom: \"Libre A\", commercial: true, maxUtilisateurs: 2000, interdits: [\"armes\"], attribution: true, modification: true, partage: false },' '  { nom: \"Libre B\", commercial: false, maxUtilisateurs: Infinity, interdits: [], attribution: false, modification: true, partage: true },' '];' 'const usage = { commercial: true, utilisateurs: 800, but: \"soutien scolaire\", modifie: true, partage: false };' 'function problemes(l, u) {' '  const trouves = [];' '  if (u.commercial && l.commercial === false) trouves.push(\"usage commercial interdit\");' '  if (u.utilisateurs > l.maxUtilisateurs) trouves.push(\"au-dessus de la limite d’utilisateurs\");' > licence.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 vérificateur de licence, partie 2

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' '  if (l.interdits.includes(u.but)) trouves.push(\"usage interdit : \" + u.but);' '  if (u.modifie && l.modification === false) trouves.push(\"modifications interdites\");' '  if (u.modifie && l.partage && u.partage === false) trouves.push(\"modifications à partager\");' '  return trouves;' '}' >> licence.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 vérificateur de licence, partie 3

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'function verdict(l, u) {' '  const trouves = problemes(l, u);' '  if (trouves.length > 0) return \"refusé\";' '  return l.attribution ? \"autorisé sous conditions\" : \"autorisé\";' '}' >> licence.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 vérificateur de licence, partie 4

Commande
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'async function main() {' '  console.log(\"usage : commercial, 800 utilisateurs, soutien scolaire, modifié, modifications gardées privées\");' '  for (const l of licences) console.log(l.nom + \" : \" + verdict(l, usage) + \" | \" + problemes(l, usage).join(\" ; \"));' '  const q = \"En une phrase courte, pourquoi faut-il lire la licence d’un modèle avant d’utiliser ses poids ?\";' '  const echantillon = \"La licence dit ce que l’on peut faire des poids, et ne pas respecter ses conditions peut faire perdre le droit de les utiliser.\";' '  const reponse = await demander([{ role: \"user\", content: q }], echantillon, 60);' '  console.log(\"le modèle dit : \" + reponse.texte);' '}' 'main();' >> licence.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 vérificateur de licence

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

Les licences d’ici sont inventées

Libre A et Libre B sont faites pour s’exercer. Ce ne sont pas de vraies licences et elles ne disent rien d’un vrai modèle.

Le vérificateur ne fait que ce que vous lui dites. Une vraie licence demande une lecture soignée, et un vrai doute demande une personne qualifiée.

Ce que le Run affiche

LigneCe qu’elle montre
Libre A : autorisé sous conditions | Chaque clause passe, mais l’attribution est exigée
Libre B : refusé | usage commercial interdit ; modifications à partagerDeux clauses échouent
le modèle dit : ...Une phrase. Les mots changent à chaque Run

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.