mardi, novembre 28, 2023

Mentorat automatisé avec ChatGPT – O’Reilly


Article d’Ethan et Lilach Mollick Attribuer l’IA : sept approches pour les étudiants avec des invites explore sept façons d’utiliser l’IA dans l’enseignement. (Bien que cet article soit parfaitement lisible, il existe une version non académique dans l’ouvrage d’Ethan Mollick. Sous-pile.) L’article décrit sept rôles qu’un robot IA comme ChatGPT pourrait jouer dans le processus éducatif : mentor, tuteur, coach, étudiant, coéquipier, étudiant, simulateur et outil. Pour chaque rôle, il comprend un exemple détaillé d’invite pouvant être utilisée pour mettre en œuvre ce rôle, ainsi qu’un exemple de session ChatGPT utilisant l’invite, les risques liés à l’utilisation de l’invite, des directives pour les enseignants, des instructions pour les étudiants et des instructions pour aider l’enseignant à créer ses propres invites.

Le rôle de mentor est particulièrement important pour le travail que nous effectuons chez O’Reilly pour former les gens à de nouvelles compétences techniques. La programmation (comme toute autre compétence) ne consiste pas seulement à apprendre la syntaxe et la sémantique d’un langage de programmation ; il s’agit d’apprendre à résoudre les problèmes de manière efficace. Cela nécessite un mentor ; Tim O’Reilly a toujours dit que nos livres devraient être comme « quelqu’un de sage et d’expérience qui regarde par-dessus votre épaule et fait des recommandations ». J’ai donc décidé d’essayer l’invite Mentor sur certains programmes courts que j’ai écrits. Voici ce que j’ai appris, pas particulièrement sur la programmation, mais sur ChatGPT et le mentorat automatisé. Je ne reproduirai pas la séance (elle était assez longue). Et je le dirai maintenant et encore à la fin : ce que ChatGPT peut faire actuellement a des limites, mais cela va certainement s’améliorer, et cela s’améliorera probablement rapidement.

Apprenez plus vite. Creusez plus profondément. Voir plus loin.

Premièrement, Ruby et les nombres premiers

J’ai d’abord essayé un programme Ruby que j’ai écrit il y a environ 10 ans : un simple tamis à nombres premiers. Peut-être suis-je obsédé par les nombres premiers, mais j’ai choisi ce programme parce qu’il est relativement court et parce que je n’y ai pas touché depuis des années, donc je ne connaissais pas du tout son fonctionnement. J’ai commencé par coller l’invite complète de l’article (elle est longue), en répondant aux questions préliminaires de ChatGPT sur ce que je voulais accomplir et mon parcours, et en collant le script Ruby.

ChatGPT a répondu avec quelques conseils assez basiques sur le respect des conventions de dénomination Ruby courantes et sur l’évitement des commentaires en ligne (les Rubyistes pensaient que le code devait être auto-documenté. Malheureusement). Il a également fait état d’un puts() appel de méthode dans la boucle principale du programme. C’est intéressant – le puts() était là pour le débogage, et j’ai évidemment oublié de le supprimer. Il a également fait ressortir un point utile concernant la sécurité : même si un tamisage de nombres premiers soulève peu de problèmes de sécurité, la lecture des arguments de ligne de commande directement depuis ARGV plutôt que d’utiliser une bibliothèque pour analyser les options pourrait laisser le programme vulnérable aux attaques.

Cela m’a également donné une nouvelle version du programme avec ces modifications apportées. Réécrire le programme n’était pas approprié : un mentor devrait commenter et fournir des conseils, mais ne devrait pas réécrire votre travail. Cela devrait dépendre de l’apprenant. Cependant, ce n’est pas un problème grave. Empêcher cette réécriture est aussi simple que d’ajouter simplement « Ne pas réécrire le programme » à l’invite.

Deuxième essai : Python et les données dans les feuilles de calcul

Mon expérience suivante consistait en un court programme Python qui utilisait la bibliothèque Pandas pour analyser les données d’enquête stockées dans une feuille de calcul Excel. Ce programme a eu quelques problèmes, comme nous le verrons.

Le mentorat Python de ChatGPT ne différait pas beaucoup de Ruby : il suggérait quelques changements stylistiques, tels que l’utilisation de noms de variables en forme de serpent, l’utilisation de f-strings (je ne sais pas pourquoi je ne l’ai pas fait ; c’est l’une de mes fonctionnalités préférées). ), encapsulant davantage de logique du programme dans des fonctions et ajoutant une vérification des exceptions pour détecter d’éventuelles erreurs dans le fichier d’entrée Excel. Il s’est également opposé à mon utilisation de « Pas de réponse » pour remplir des cellules vides. (Les pandas convertissent normalement les cellules vides en NaN, « pas en nombre », et elles sont extrêmement difficiles à gérer.) Commentaires utiles, bien que peu bouleversants. Il serait difficile de s’opposer à l’un de ces conseils, mais en même temps, il n’y a rien que je considérerais comme particulièrement perspicace. Si j’étais étudiant, je serais vite frustré après que deux ou trois programmes aient donné des réponses similaires.

Bien sûr, si mon Python était vraiment si bon, peut-être n’aurais-je besoin que de quelques commentaires superficiels sur le style de programmation, mais mon programme n’était pas si bon. J’ai donc décidé de pousser ChatGPT un peu plus fort. Tout d’abord, je lui ai dit que je soupçonnais que le programme pourrait être simplifié en utilisant le dataframe.groupby() fonction dans la bibliothèque Pandas. (j’utilise rarement groupby(), sans raison valable.) ChatGPT a accepté – et même s’il est agréable d’avoir un superordinateur d’accord avec vous, ce n’est pas une suggestion radicale. C’est une suggestion que j’aurais attendue d’un mentor qui avait utilisé Python et Pandas pour travailler avec des données. J’ai dû faire la suggestion moi-même.

ChatGPT a obligeamment réécrit le code – encore une fois, j’aurais probablement dû lui dire de ne pas le faire. Le code résultant semblait raisonnable, même s’il apportait un changement pas si subtil dans le comportement du programme : il filtrait les lignes « Pas de réponse » après le calcul des pourcentages, plutôt qu’avant. Il est important de faire attention aux changements mineurs comme celui-ci lorsque vous demandez à ChatGPT de vous aider à programmer. De tels changements mineurs se produisent fréquemment, ils semblent inoffensifs, mais ils peuvent modifier le résultat. (Une suite de tests rigoureux aurait aidé.) C’était une leçon importante : vous ne pouvez vraiment pas supposer que tout ce que fait ChatGPT est correct. Même s’il est syntaxiquement correct, même s’il s’exécute sans messages d’erreur, ChatGPT peut introduire des modifications entraînant des erreurs. Les tests ont toujours été importants (et sous-utilisés) ; avec ChatGPT, c’est encore plus vrai.

Passons maintenant au prochain test. J’ai accidentellement omis les dernières lignes de mon programme, qui créait un certain nombre de graphiques à l’aide de la bibliothèque matplotlib de Python. Même si cette omission n’a pas affecté l’analyse des données (les résultats ont été imprimés sur le terminal), plusieurs lignes de code ont organisé les données d’une manière pratique pour les fonctions graphiques. Ces lignes de code étaient désormais une sorte de « code mort » : du code qui est exécuté, mais qui n’a aucun effet sur le résultat. Encore une fois, je m’attendais à ce qu’un mentor humain soit partout dans ce domaine. Je m’attendais à ce qu’ils disent « Regardez la structure des données graph_data. Où ces données sont-elles utilisées ? S’il n’est pas utilisé, pourquoi est-il là ? Je n’ai pas reçu ce genre d’aide. Un mentor qui ne signale pas les problèmes dans le code n’est pas vraiment un mentor.

Mon message suivant demandait donc des suggestions pour nettoyer le code mort. ChatGPT m’a félicité pour ma perspicacité et a convenu que supprimer le code mort était une bonne idée. Mais encore une fois, je ne veux pas qu’un mentor me félicite d’avoir de bonnes idées ; Je veux qu’un mentor remarque ce que j’aurais dû remarquer, mais je ne l’ai pas fait. Je veux qu’un mentor m’apprenne à faire attention aux erreurs de programmation courantes, et que le code source se dégrade inévitablement avec le temps si vous n’y faites pas attention, même s’il est amélioré et restructuré.

ChatGPT a également réécrit mon programme. Cette réécriture finale était incorrecte : cette version ne fonctionnait pas. (Cela aurait pu faire mieux si j’avais utilisé Code Interpreter, bien que Code Interpreter ne garantisse pas son exactitude.) Cela est et n’est pas un problème. C’est encore un autre rappel que, si l’exactitude est un critère, vous devez vérifier et tester soigneusement tout ce que ChatGPT génère. Mais – dans le contexte du mentorat – j’aurais dû écrire une invite qui supprimait la génération de code ; réécrire votre programme n’est pas le travail du mentor. De plus, je ne pense pas que ce soit un problème grave si un mentor vous donne occasionnellement de mauvais conseils. Nous sommes tous humains (du moins la plupart d’entre nous). Cela fait partie de l’expérience d’apprentissage. Et il est important pour nous de trouver des applications pour l’IA où les erreurs sont tolérables.

Alors, quel est le score ?

  • ChatGPT est doué pour donner des conseils de base. Mais quiconque souhaite sérieusement apprendre voudra bientôt des conseils qui vont au-delà des bases.
  • ChatGPT peut reconnaître quand l’utilisateur fait de bonnes suggestions qui vont au-delà des simples généralités, mais est incapable de faire ces suggestions lui-même. Cela s’est produit deux fois : lorsque j’ai dû lui poser des questions sur groupby()et quand je lui ai posé des questions sur le nettoyage du code mort.
  • Idéalement, un mentor ne devrait pas générer de code. Cela peut être résolu facilement. Cependant, si vous souhaitez que ChatGPT génère du code mettant en œuvre ses suggestions, vous devez vérifier attentivement les erreurs, dont certaines peuvent être des changements subtils dans le comportement du programme.

Pas encore là

Le mentorat est une application importante pour les modèles linguistiques, notamment parce qu’il permet de résoudre l’un de leurs plus gros problèmes, leur tendance à faire des erreurs et à en créer. Un mentor qui fait occasionnellement une mauvaise suggestion n’est pas vraiment un problème ; suivre la suggestion et découvrir que c’est une impasse est une expérience d’apprentissage importante en soi. Il ne faut pas croire tout ce qu’on entend, même si cela vient d’une source fiable. Et un mentor n’a vraiment pas à générer de code, incorrect ou autre.

Je suis plus préoccupé par la difficulté de ChatGPT à fournir des conseils vraiment perspicaces, le genre de conseils que vous attendez vraiment d’un mentor. Il est capable de vous conseiller lorsque vous lui posez des questions sur des problèmes spécifiques, mais cela ne suffit pas. Un mentor doit aider un étudiant à explorer les problèmes ; un étudiant qui est déjà conscient du problème est sur la bonne voie pour le résoudre et n’a peut-être pas du tout besoin du mentor.

ChatGPT et d’autres modèles linguistiques s’amélioreront inévitablement, et leur capacité à agir en tant que mentor sera importante pour les personnes qui construisent de nouveaux types d’expériences d’apprentissage. Mais ils ne sont pas encore arrivés. Pour le moment, si vous voulez un mentor, vous êtes livré à vous-même.



Related Articles

LAISSER UN COMMENTAIRE

S'il vous plaît entrez votre commentaire!
S'il vous plaît entrez votre nom ici

Latest Articles