Het artikel van Ethan en Lilach Mollick AI toewijzen: zeven benaderingen voor studenten met aanwijzingen onderzoekt zeven manieren om AI in het onderwijs te gebruiken. (Hoewel dit artikel uitstekend leesbaar is, is er een niet-academische versie in Ethan Mollick’s Substapel.) Het artikel beschrijft zeven rollen die een AI-bot als ChatGPT zou kunnen spelen in het onderwijsproces: mentor, docent, coach, scholar, teamgenoot, scholar, simulator en device. Voor elke rol bevat het een gedetailleerd voorbeeld van een immediate die kan worden gebruikt om die rol te implementeren, samen met een voorbeeld van een ChatGPT-sessie waarbij de immediate wordt gebruikt, de risico’s van het gebruik van de immediate, richtlijnen voor docenten, instructies voor studenten en instructies om assist de leraar zijn eigen aanwijzingen te maken.
De rol van mentor is bijzonder belangrijk voor het werk dat we bij O’Reilly doen in het opleiden van mensen in nieuwe technische vaardigheden. Programmeren gaat (internet als elke andere vaardigheid) niet alleen over het leren van de syntaxis en semantiek van een programmeertaal; het gaat over het effectief leren oplossen van problemen. Dat vereist een mentor; Tim O’Reilly heeft altijd gezegd dat onze boeken moeten zijn als ‘iemand die wijs en ervaren is en over je schouder meekijkt en aanbevelingen doet’. Dus besloot ik de Mentor-prompt eens uit te proberen in een aantal korte programma’s die ik heb geschreven. Dit is wat ik heb geleerd: niet specifiek over programmeren, maar over ChatGPT en geautomatiseerde mentoring. Ik zal de sessie niet reproduceren (het duurde behoorlijk lang). En ik zeg dit nu, en nogmaals aan het einde: wat ChatGPT nu kan doen heeft beperkingen, maar het zal zeker beter worden, en het zal waarschijnlijk snel beter worden.
Ten eerste: robijn en priemgetallen
Ik probeerde voor het eerst een Ruby-programma dat ik ongeveer 10 jaar geleden schreef: een eenvoudige priemgetallenzeef. Misschien ben ik geobsedeerd door priemgetallen, maar ik heb dit programma gekozen omdat het relatief kort is en omdat ik het al jaren niet meer heb aangeraakt, dus ik was enigszins onbekend met hoe het werkte. Ik begon met het plakken van de volledige immediate uit het artikel (het is lang), het beantwoorden van de voorbereidende vragen van ChatGPT over wat ik wilde bereiken en mijn achtergrond, en het plakken in het Ruby-script.
ChatGPT reageerde met redelijk basisadvies over het volgen van algemene Ruby-naamgevingsconventies en het vermijden van inline commentaar (Rubyisten dachten vroeger dat code zichzelf moest documenteren. Helaas). Er werd ook een punt gemaakt over a places()
methodeaanroep binnen de hoofdlus van het programma. Dat is interessant – de places()
was daar om te debuggen, en ik vergat blijkbaar het eruit te halen. Het maakte ook een nuttig punt over de beveiliging: hoewel een zeef met priemgetallen weinig beveiligingsproblemen met zich meebrengt, zou het lezen van opdrachtregelargumenten rechtstreeks vanuit ARGV in plaats van een bibliotheek te gebruiken voor het parseren van opties het programma open kunnen stellen voor aanvallen.
Het gaf me ook een nieuwe versie van het programma met deze wijzigingen. Het herschrijven van het programma was niet gepast: een mentor moet commentaar geven en advies geven, maar magazine je werk niet herschrijven. Dat moet aan de leerling liggen. Het is echter geen serieus probleem. Het voorkomen van dit herschrijven is internet zo eenvoudig als het toevoegen van “Herschrijf het programma niet” aan de immediate.
Tweede poging: Python en gegevens in spreadsheets
Mijn volgende experiment was met een kort Python-programma dat de Pandas-bibliotheek gebruikte om enquêtegegevens te analyseren die waren opgeslagen in een Excel-spreadsheet. Dit programma had een paar problemen, zoals we zullen zien.
De Python-mentoring van ChatGPT verschilde niet veel van die van Ruby: het suggereerde enkele stilistische veranderingen, zoals het gebruik van snake-case-variabelenamen en het gebruik van f-strings (ik weet niet waarom ik dat niet deed; het is een van mijn favoriete functies ), waarbij meer van de logica van het programma in functies wordt ingekapseld en er enkele uitzonderingscontroles worden toegevoegd om mogelijke fouten in het Excel-invoerbestand op te sporen. Het maakte ook bezwaar tegen mijn gebruik van “Geen antwoord” om lege cellen in te vullen. (Panda’s zetten lege cellen normaal gesproken om in NaN, ‘geen getal’, en ze zijn frustrerend moeilijk om mee om te gaan.) Nuttige suggestions, hoewel nauwelijks wereldschokkend. Het zou moeilijk zijn om tegen elk van deze adviezen in te gaan, maar tegelijkertijd is er niets dat ik als bijzonder inzichtelijk zou beschouwen. Als ik scholar was, zou ik al snel gefrustreerd raken als twee of drie programma’s vergelijkbare reacties opleverden.
Als mijn Python echt zo goed was, had ik misschien maar een paar vluchtige opmerkingen over de programmeerstijl nodig, maar mijn programma was niet zo goed. Daarom besloot ik ChatGPT wat more durable te pushen. Eerst vertelde ik dat ik vermoedde dat het programma vereenvoudigd kon worden door gebruik te maken van de dataframe.groupby()
functie in de Pandas-bibliotheek. (Ik gebruik zelden groupby()
, zonder goede reden.) ChatGPT was het daarmee eens – en hoewel het fijn is dat een supercomputer het met je eens is, is dit bepaald geen radicale suggestie. Het is een suggestie die ik had verwacht van een mentor die Python en Pandas had gebruikt om met information te werken. Ik moest de suggestie zelf doen.
ChatGPT heeft de code gedienstig herschreven – nogmaals, ik had waarschijnlijk moeten zeggen dat dit niet mocht. De resulterende code zag er redelijk uit, maar bracht een niet zo subtiele verandering in het gedrag van het programma aan: de rijen ‘Geen antwoord’ werden eruit gefilterd nadat de percentages waren berekend, in plaats van daarvoor. Het is belangrijk om op te letten op dit soort kleine wijzigingen wanneer u ChatGPT vraagt om hulp bij het programmeren. Dergelijke kleine veranderingen komen vaak voor, ze zien er onschadelijk uit, maar ze kunnen de output veranderen. (Een rigoureus testpakket zou geholpen hebben.) Dit was een belangrijke les: je kunt er echt niet van uitgaan dat alles wat ChatGPT doet right is. Zelfs als het syntactisch right is, zelfs als het zonder foutmeldingen draait, kan ChatGPT wijzigingen doorvoeren die tot fouten leiden. Testen is altijd belangrijk geweest (en onderbenut); met ChatGPT is dat zelfs nog meer het geval.
Nu voor de volgende check. Ik heb per ongeluk de laatste regels van mijn programma weggelaten, waardoor een aantal grafieken werd gemaakt met behulp van Python’s matplotlib-bibliotheek. Hoewel deze weglating geen invloed had op de data-analyse (de resultaten werden afgedrukt op de terminal), rangschikten verschillende regels code de gegevens op een manier die handig was voor de grafische functies. Deze regels code waren nu een soort ‘dode code’: code die wordt uitgevoerd, maar die geen invloed heeft op het resultaat. Nogmaals, ik had verwacht dat een menselijke mentor hier allemaal bij zou zijn. Ik had verwacht dat ze zouden zeggen: “Kijk naar de datastructuur graph_data. Waar worden die gegevens gebruikt? Als het niet wordt gebruikt, waarom is het er dan?” Dat soort hulp kreeg ik niet. Een mentor die niet op problemen in de code wijst, is niet echt een mentor.
Dus mijn volgende immediate vroeg om suggesties voor het opruimen van de dode code. ChatGPT prees mij voor mijn inzicht en was het ermee eens dat het verwijderen van dode code een goed idee was. Maar nogmaals, ik wil niet dat een mentor mij prijst omdat ik goede ideeën heb; Ik wil dat een mentor opmerkt wat ik had moeten opmerken, maar dat niet deed. Ik wil dat een mentor mij leert op te passen voor veel voorkomende programmeerfouten, en dat de broncode na verloop van tijd onvermijdelijk achteruitgaat als je niet oppast, zelfs als deze wordt verbeterd en geherstructureerd.
ChatGPT heeft ook mijn programma opnieuw herschreven. Deze laatste herschrijving was onjuist: deze versie werkte niet. (Het had misschien beter gekund als ik Code Interpreter had gebruikt, hoewel Code Interpreter geen garantie biedt voor de juistheid.) Dat is wel en niet een probleem. Het is nog maar eens een herinnering dat, als correctheid een criterium is, je alles wat ChatGPT genereert zorgvuldig moet controleren en testen. Maar – in de context van mentoring – had ik een immediate moeten schrijven die het genereren van code onderdrukte; het herschrijven van je programma is niet de taak van de mentor. Verder vind ik het geen erg probleem als een mentor je af en toe slecht advies geeft. We zijn allemaal mensen (althans, de meesten van ons). Dat maakt deel uit van de leerervaring. En het is belangrijk voor ons om toepassingen voor AI te vinden waarbij fouten aanvaardbaar zijn.
Dus, wat is de rating?
- ChatGPT is goed in het geven van basisadvies. Maar iedereen die serieus wil leren, zal binnenkort advies nodig hebben dat verder gaat dan de foundation.
- ChatGPT kan herkennen wanneer de gebruiker goede suggesties doet die verder gaan dan eenvoudige algemeenheden, maar is niet in staat deze suggesties zelf te doen. Dit gebeurde twee keer: toen ik erom moest vragen
groupby()
en toen ik hem vroeg over het opruimen van de dode code. - Idealiter zou een mentor geen code moeten genereren. Dat kan eenvoudig worden opgelost. Als u echter wilt dat ChatGPT code genereert die de suggesties implementeert, moet u zorgvuldig controleren op fouten, waarvan sommige subtiele veranderingen in het gedrag van het programma kunnen zijn.
Er nog niet zijn
Mentoring is een belangrijke toepassing voor taalmodellen, niet in de laatste plaats omdat het een van hun grootste problemen aan het licht brengt: hun neiging om fouten te maken en fouten te creëren. Een mentor die af en toe een slechte suggestie doet, is niet echt een probleem; de suggestie opvolgen en ontdekken dat het een doodlopende weg is, is op zichzelf een belangrijke leerervaring. Je moet niet alles geloven wat je hoort, ook al komt het uit een betrouwbare bron. En een mentor heeft er echt geen zin in om al dan niet onjuiste code te genereren.
Ik maak me meer zorgen over de moeilijkheid van ChatGPT om advies te geven dat echt inzichtelijk is, het soort advies dat je echt van een mentor wilt. Het kan advies geven als u het vraagt over specifieke problemen, maar dat is niet genoeg. Een mentor moet een leerling helpen problemen te onderzoeken; een leerling die zich al bewust is van het probleem, is goed op weg om het op te lossen en heeft de mentor misschien helemaal niet nodig.
ChatGPT en andere taalmodellen zullen onvermijdelijk verbeteren, en hun vermogen om als mentor op te treden zal belangrijk zijn voor mensen die nieuwe soorten leerervaringen opbouwen. Maar ze zijn nog niet gearriveerd. Als je een mentor wilt, sta je er voorlopig alleen voor.