AI som didaktiskt redskap: Individuell stegvis reflektiv kodförbättring

Ok det var en lite krånglig rubrik, men det finns en anledning till att den blir lite krånglig. Det här inlägget blir det andra i en serie om AI som didaktiskt redskap, och den här gången är det en uppgift som jag väldigt gärna skulle vilja testa, utvärdera och utveckla framöver, kanske göra en riktig studie på. I mitt fall handlar det om programmering, men den grundläggande principen kan med vissa modifikationer användas även i andra ämnen också. Det här var också den första prompten jag gav till mina elever som jag kände på allvar började öppna nya didaktiska möjligheter som helt enkelt inte fanns praktiska möjligheter att genomföra tidigare.

För lite kontext: När jag tog fram den här hade eleverna precis haft ett långt pass på sig att skapa ett gissa-siffran-spel som den första komplexa uppgiften i kursen (med komplex menar jag här att de behövde sammanföra flera koncept vi arbetat med). När jag satt och tittade igenom de olika sätt som eleverna löst uppgiften funderade jag som så många gånger förr på hur mycket jag skulle önska att det funnes tid till att sitta ner med samtliga elever och verkligen gå igenom koden och hur de skulle kunna utveckla den. Men – nu fanns ju AI! Det blir förstås inte samma sak, men ändå.

Så jag skrev ihop följande:

I am going to give you some code. I want you to improve the code in three stages, but don’t go into complex concepts like object orientation and classes. Plan the stages before you reply.

For each stage:

  1. Show the improved code.
  2. Ask me what you have changed. Respond to my reply.
  3. Ask me to explain why you changed it. Respond.
  4. Fill in additional explanation for what you changed and why.

Begin by asking me for the code.

Det finns säkerligen en hel rad saker man kan förbättra i denna, och jag testade även att ge den inriktning (kommer tillbaka till den senare), men det här är den versionen jag gav till eleverna och sa att den som vill och som har tillgång till exempelvis ChatGPT får gärna testa.

Det den här instruktionen gör, när den läggs in som första prompt i en ny chat, eller som systemprompt, beorende på hur gränssnittet ser ut, är att den ber om kod, som den sedan planerar tre iterationer av förbättringar för. Jag ber AIn planera alla steg först för att jag upplever att det blir bättre och mer lämpliga steg då – inte för mycket förändringar i taget, men inte heller några alltför små och obskyra förbättringar (beroende på hur koden ser ut förstås). Jag gav också en begränsning till att inte gå in på avancerade programmeringskoncept, så att AIn håller sig inom ramen för sådant som är rimligt för eleven att känna till.

Efter att ha planerat, skriver AIn ut den första förbättrade koden till eleven och ber eleven identifiera vilken förändring som gjorts. Om eleven lyckas identifiera förändringen bekräftar AIn, om eleven hittar bara en del av den kompletterar AIn, och om eleven inte lyckas hitta förändringen kommer AIn ge den – här finns en möjlig utveckling i att lägga in ett steg där eleven kan få ledtråd, och inte svaret. Därefter kommer AIn fråga eleven varför hen tror att förändringen gjordes, med samma procedur för svaret. Den första vändan avslutas med att AIn kompletterar och avslutar den rundan innan den går vidare till att presentera nästa förbättring av koden.

Tanken här är att konfigurationen skapar en situation där eleven dels får träna på att identifiera förändringar i koden, och fundera över varför den förändringen kan utgöra en förbättring. En effekt av att AIn planerar förbättringar i tre steg är också att den tenderar att göra vettiga prioriteringar i vilken ordning och vilka förbättringar som behövs, vilket också ger möjlighet för eleven att fundera över prioriteringar.

Det finns alltid en risk att eleven ger upp för snabbt och bara låter AIn förklara förändringarna utan att tänka ordentligt – vi vet hur lätt det är att ta utvägar från att behöva göra kognitivt krävande arbete när det är möjligt att slippa – och det kan vara lämpligt att utöka konfigurationen med lite constraints för att åtminstone göra det lite svårare att bara gå vidare utan att tänka själv.

Jag har använt den här prompten som exempel vid lite olika tillfällen när jag pratat om AI, och en grupp lärare började också snabbt tänka över hur värdefullt det vore som lärare at få se hela interaktionen i en sådan här uppgift, för att den kan säga så mycket om elevens kunskaper. Jag tror också det, med en liten varningsflagga för att vi nu när vi integrerar AI i undervisning ska vi vara återhållsamma med hur mycket vi övervakar eleverna. Elever ser AI som en möjlighet att få arbeta och ställa frågor utan att behöva känna sig dum, utelämnad och åskådad, och den känslan är viktig att värna. Jag tänker mig att vi framöver, när vi har system för AI i skolan, behöver vara noggranna med att kommunicera till eleverna när deras interaktioner med systemen är övervakade, när de är helt privata, och eventuella steg däremellan.

Ni kan se ett exempel när jag testade den första versionen av den här prompten här: https://chat.openai.com/share/c6b35855-a2af-4031-86e5-36e3f7d3dde9

Brister i och variationer på prompten

Såsom prompten är skriven nu fungerar den främst i GPT-4. När jag testade den i höstas gick det ganska bra i GPT-3.5, men det verkar inte alls lika stabil i sin interaktion nu längre, vilket gör att jag kommer behöva försöka utveckla den. Jag har även testat i Mistral-medium, Mixtral, Llama 70B och Codellama, och alla kräver modifikationer för att fungera, men jag tror att det i samtliga dessa går att få till ett vettigt beteende. Men nedanstående förändring fungerar det betydligt bättre i Llama 70B, men Mixtral ger fortfarande svaren själv.

I am going to give you some code. I want you to improve the code in three stages, but don’t go into complex concepts like object orientation and classes. Plan the stages before you reply.

For each stage:

  1. Show the improved code.
  2. Ask me what you have changed. Respond to my reply.
  3. Ask me to explain why you changed it. Respond.
  4. Fill in additional explanation for what you changed and why.

Begin by asking me for the code., then follow the instructions closely. Don’t give the answer before the students have tried to answer, and make sure to only take one step at a time.

Jag har också testat lite med att ge den olika inriktningar, och det ger en viss nyansskillnad i såväl förändringar i kod som förklaringar, där man t.ex. kan be AIn vara mer fokuserad på säkerhet eller på användarvändlighet.

Tyvärr har jag inte haft möjlighet att ordentligt utvärdera den här prompten i undervisningen, då jag inte kunnat säkerställa tillgång till AI för eleverna, men förhoppningsvis kommer det inom en snar framtid.

Ett svar till ”AI som didaktiskt redskap: Individuell stegvis reflektiv kodförbättring”

  1. Spännande och klokt – tack för att du delar

    Gilla

Lämna en kommentar