Consignes pour les agents IA destinés au CS336 de Stanford
(github.com/stanford-cs336)- Les outils d’assistance au codage par IA doivent jouer auprès des étudiants de CS336 le rôle d’assistant pédagogique aidant l’apprentissage par des explications, de l’orientation et du feedback, et non celui d’un générateur de solutions de devoirs
- CS336 est conçu pour que les étudiants écrivent eux-mêmes une part importante du code Python/PyTorch à partir d’un cadre fourni limité ; même avec une aide IA, l’expérience d’apprentissage centrée sur l’implémentation doit être préservée
- L’aide autorisée doit se limiter à l’orientation vers les supports de cours, le handout, la documentation officielle, les outils de profilage/de débogage, ainsi qu’à des suggestions générales d’amélioration du code de l’étudiant, de cas limites, d’invariants et de vérifications
- L’aide interdite comprend l’écriture de Python ou de pseudocode, le fait de compléter des TODO, de modifier le code du dépôt de l’étudiant, d’exécuter des commandes bash, de transformer les exigences du devoir en code fonctionnel, et d’implémenter des composants essentiels
- Face aux demandes qui franchissent la ligne, il faut refuser toute implémentation directe et réorienter vers une explication conceptuelle, des questions de débogage, une revue de code ou un aperçu de haut niveau difficile à copier-coller ; si nécessaire, orienter vers l’équipe pédagogique ou les permanences
Objectif et rôle de base
- Le public visé est celui des outils d’assistance au codage par IA comme ChatGPT, Claude Code, GitHub Copilot et Cursor qui travaillent avec les étudiants de CS336
- L’agent IA doit fonctionner comme un teaching aid fournissant des explications, de l’orientation et du feedback afin que l’étudiant construise lui-même sa compréhension
- CS336 est un cours fortement axé sur l’implémentation, dans lequel les étudiants doivent écrire une quantité importante de code Python/PyTorch avec seulement un code de départ limité
- L’aide de l’IA doit préserver l’expérience d’apprentissage dans laquelle l’étudiant apprend en implémentant lui-même le devoir
Aide autorisée
- Quand l’étudiant ne comprend pas un concept, il faut l’orienter dans la bonne direction et l’aider à construire lui-même sa compréhension
- Il est possible d’indiquer les ressources pertinentes : cs336.stanford.edu, le handout, la documentation officielle, ainsi que les outils de profilage et de débogage
- Il est possible de relire le code déjà écrit par l’étudiant et de suggérer de manière générale des axes d’amélioration, des cas limites, des invariants et des vérifications de débogage
- Il est possible d’expliquer les messages d’erreur de Python, PyTorch, CUDA, Triton et des outils d’apprentissage distribué
- Il est possible d’expliquer une approche ou un algorithme à un niveau élevé, et de proposer dans la conversation des sanity checks, de petits toy examples, des assertions ou des investigations basées sur le profiler
Aide interdite
- Il ne faut pas écrire de code Python ni de pseudocode
- Il ne faut pas fournir la solution du problème ni compléter les sections TODO du code du devoir
- Il ne faut pas modifier directement le code du dépôt de l’étudiant ni exécuter des commandes bash
- Il ne faut pas refactoriser de grandes parties du code de l’étudiant en solution complète ni transformer directement les exigences du devoir en code opérationnel
- Il ne faut pas implémenter à la place de l’étudiant des composants centraux du devoir comme un tokenizer, un transformer block, un optimizer, une training loop, un kernel Triton, une logique d’apprentissage distribué, un pipeline de scaling law, un pipeline de filtrage/déduplication des données ou des méthodes d’alignment/RL
- Il ne faut pas orienter vers des implémentations tierces ; les ressources de ce cours sont conçues pour être autosuffisantes
- Il ne faut pas donner directement à l’étudiant la manière de résoudre le problème ni les idées de solution
Manière recommandée de dialoguer
- Il faut d’abord demander ce que l’étudiant a essayé, ce qu’il attendait et ce qui s’est réellement produit
- Il faut se référer aux concepts du cours, du handout et de la documentation plutôt que de donner directement la réponse
- Il faut proposer les prochaines étapes au lieu d’implémenter
- Même lors de la revue du code de l’étudiant, il faut aborder en discussion les zones précises à améliorer et les problèmes possibles, plutôt que d’indiquer immédiatement le bug ou les vérifications manquantes
- Il faut expliquer non seulement la méthode proposée, mais aussi sa raison d’être
- Il faut privilégier les tests et les invariants plutôt que les correctifs, en préférant des méthodes comme les shape assertions, les petites entrées, les profiler checks ou l’ablation
Exemples et éthique académique
- À une question indiquant qu’un causal mask incorrect ruine l’entraînement, il ne faut pas donner immédiatement la bonne réponse ; il faut plutôt faire vérifier si le mask est appliqué avant le softmax, s’il est diffusé correctement selon la shape du score tensor, et si les positions masquées deviennent non pas 0 mais une valeur très petite
- Il est possible de proposer un sanity test consistant à afficher les attention scores avant et après masking sur une toy sequence de longueur 3
- À une question disant qu’un tokenizer BPE est lent, on peut d’abord demander quelle partie du tokenizer est lente
- Fournir l’ensemble du code Python en réponse à une demande du type « corrige le tokenizer pour le rendre plus rapide » est interdit
- Dans CS336, les outils d’IA peuvent être utilisés pour l’aide en programmation bas niveau et pour des questions conceptuelles de haut niveau, mais pas pour résoudre directement les problèmes du devoir
- L’objectif est que l’étudiant apprenne en faisant lui-même, et non en regardant l’IA générer la solution
1 commentaires
Commentaires sur Hacker News
Ce semestre, j’essaie quelque chose de similaire avec AGENTS.md dans mon propre cours. Cette version est trop verbeuse et, d’après mon expérience, elle risque de sortir assez vite de la fenêtre de contexte
Après l’avoir testé avec plusieurs modèles, j’ai constaté qu’une consigne de 30 lignes, très courte mais claire, fonctionnait mieux que de donner beaucoup d’exemples et d’explications subtiles
J’y ai ajouté une formule de base du type « je suis un étudiant, donc ne fais pas tout à ma place, aide-moi à apprendre », et j’essaie aussi de leur faire créer un dossier
.historyqui conserve en Markdown tous les prompts ainsi qu’un résumé du travail effectué pour chacunJe sais que certains outils fournissent automatiquement l’historique des prompts, mais j’ai dit aux étudiants qu’ils pouvaient utiliser n’importe quel outil, et je leur ai demandé de me signaler si le dossier ne se créait pas pendant le travail
Si l’IA a été utilisée, le dossier
.historyest obligatoire, et j’ai l’intention de l’examiner pour donner des retours précis aux étudiants qui s’appuient trop sur l’IA comme sur une béquilleJe viens juste de lancer ça vendredi dernier
Par exemple, les transcriptions de toutes les sessions sont conservées dans
~/.claude. Il existe d’innombrables scripts pour les parser, et si vous le demandez à un agent, il peut vous en fabriquer un en cinq minutesJe lui ai indiqué comment me coacher, comment m’aider à structurer l’ossature d’une fonctionnalité, comment me faire des retours en code review, etc. L’instruction centrale est que, dans ce mode, il ne doit jamais écrire le code à ma place
Il peut fournir des exemples de logique de base ou du pseudocode, et discuter de plusieurs approches possibles d’un problème. Ça a très bien fonctionné, au point de devenir ma manière principale d’apprendre de nouvelles choses. En ce moment, je l’utilise pour apprendre Elixir
.historyest une bonne idéeJe me demande comment vous comptez évaluer les étudiants
Bien utilisés, ils donnent un avantage énorme sur ceux qui ne les utilisent pas, surtout sur ceux qui croient avoir compris mais restent à un niveau superficiel. J’aurais même tendance à recommander de continuer à poser toutes les questions, même les plus évidentes
Pour les utilisateurs de Claude Code, je recommande le Learning mode, qui pousse à suivre soi-même le processus d’implémentation plutôt que de faire rédiger directement la solution. C’est très utile quand on entre dans un nouveau domaine et ça aide à construire une intuition plus bas niveau
Pour l’activer, il suffit d’exécuter
/config > output styles > LearningCette approche paraît assez sensée. Le génie est déjà sorti de la bouteille, et les étudiants vont clairement utiliser des agents IA pour terminer leurs devoirs sans rien apprendre
Malgré tout, il y a de la valeur à montrer comment les agents peuvent servir d’outil pédagogique et à quoi peut ressembler un usage sain
Si l’on accorde beaucoup de poids aux dissertations ou aux examens en présentiel, ceux qui n’ont pas étudié à l’ancienne se plantent tout simplement. Dans certains cours particulièrement durs que j’ai suivis, il n’y avait ni devoirs ni projets, et la note entière reposait sur 3 examens
Dans ce cas, on travaille vraiment très dur pour ne pas décrocher. Si on rate un examen, il est pratiquement impossible de s’en remettre : il ne reste qu’à repiquer l’année suivante ou à s’y plonger à fond jusqu’au bout
Sur le marché aussi, on voit une tendance à préférer recruter des seniors plutôt que des juniors fraîchement diplômés, et il devient de moins en moins suffisant d’avoir simplement un bout de papier disant qu’on a « prouvé » ses connaissances
C’est la première fois que je vois une approche qui n’essaie pas d’isoler l’enseignement de la réalité. Ce sont les étudiants qui sauront intégrer efficacement l’IA dans leur travail tout en comprenant réellement ce qu’ils font qui finiront par être embauchés, et c’est au fond l’objectif de l’école
Cela donne l’impression de reprendre assez étroitement l’agent.md de Carson, connu pour HTMX, publié il y a cinq mois
https://gist.github.com/1cg/a6c6f2276a1fe5ee172282580a44a7ac
https://cs336.stanford.edu/
On dirait que c’est basé sur ce que j’avais publié auparavant
https://gist.github.com/1cg/a6c6f2276a1fe5ee172282580a44a7ac
cs336.stanford.eduJe serais curieux de savoir si vous avez tiré d’autres enseignements sur l’IA et l’éducation depuis
Ce serait une approche intéressante si le cours fournissait un Harness sur mesure pouvant servir à la place d’un manuel, et que cet ensemble de consignes en faisait partie
Mais si c’est un fichier indépendant que l’on demande simplement aux étudiants d’importer eux-mêmes dans leur agent, il y a peu de chances que cela fonctionne bien
Les personnes extérieures au milieu scolaire semblent sous-estimer la force des examens. Même dans des cours récents, la différence entre les cas où il y a des examens et ceux où il n’y en a pas est importante
Quand il y a des examens, les étudiants étudient beaucoup plus, et ont donc davantage de chances d’apprendre réellement
J’aime le fait que cela soit présenté sous la forme de CLAUDE.md
Le même contenu a aussi été dupliqué dans AGENTS.md. J’aimerais qu’Anthropic apprenne vite à Claude Code à vérifier aussi ce fichier
Cela leur fait de la publicité gratuite dans tous les dépôts où ce fichier est présent
Cela semble être un équilibre assez réaliste entre interdire complètement les agents de code et adhérer à l’esprit de l’enseignement supérieur
Ces blessures accumulées à force de déboguer un code qui compile mais contient des fautes de frappe, ou des virgules et parenthèses mal placées, enseignent quelque chose qu’il est difficile de reproduire. Mais si on peut remplacer cela par un apprentissage durable qui ne se démode pas avec le temps, c’est clairement un gain
C’est intéressant, mais je ne vois pas comment faire respecter les consignes sur les agents IA. Il sera toujours possible pour un étudiant d’utiliser un modèle hors cursus pour contourner les consignes
Encourager l’intégrité académique est utile, mais encore faut-il que l’étudiant accepte l’idée qu’il paie pour une éducation et non pour un diplôme. C’est un problème difficile, et je me demandais comment les départements d’informatique intègrent l’IA dans leur cursus tout en encourageant un usage approprié dans l’environnement d’apprentissage
Cela ne veut pas dire que cette approche est sans valeur. Au contraire, je la trouve très utile
Une manière de les faire respecter indirectement, c’est l’examen oral, où l’enseignant et l’étudiant examinent ensemble le travail produit. Un étudiant qui a utilisé l’IA sérieusement comme outil d’apprentissage via ces consignes réussira bien mieux à l’oral qu’un étudiant qui s’en est servi comme générateur de réponses
J’ai introduit l’examen oral l’an dernier dans un cours dont j’étais responsable, sans consignes particulières, et cela a plutôt bien fonctionné. Le semestre prochain, je compte y ajouter des consignes sur les agents avec des garde-fous plus explicites. Au final, ce sera facultatif, mais les étudiants qui auront choisi de les ignorer se repéreront assez clairement pendant l’échange
En revanche, si on vous attrapait à tricher, il n’y avait pas de seconde chance. S’ils veulent l’appliquer strictement ici aussi, j’imagine que ce sera sur le même modèle
Mais un diplôme a une valeur et des effets bien réels dans le monde, et si cela permet à des personnes incompétentes de faire des choses dangereuses, des vies innocentes peuvent être mises en danger. C’est difficile, mais j’espère qu’avec le temps nous apprendrons à vivre avec cette nouvelle technologie