Skriv ut

JAN TÅNGRING:
Testa Chat GPT
men lita inte på den

Jag har pratat med Chat GPT i helgen  – det nya fascinerande AI-chattprogrammet. Det har lärt mig mycket, men som så många andra har jag även blivit lurad. Den låter lika tvärsäker när den har rätt som när den har fel. Ganska lik en människa, med andra ord.

 Webben är full av häpnad inför textbotten Chat GPT (ChatGPT) som amerikanska Open AI (OpenAI) just nu låter alla testa gratis.

Chat GPT är  ett expertsystem med naturligt språk som gränssnitt.

Den är extremt verbal.  Det finns ingen kodbok av ord du måste hålla dig till. Den kan föra ett samtal – alltså upprätthålla en tråd och referera till och använda summan av det som redan sagts i tråden, av både dig och den.

Den förstår syftningar. Den tolkar det du säger pragmatiskt, inte bokstavligt. Den ser igenom felskrivningar.  Du kommer att se allt detta i våra samtal nedan.

Chat GPT i sig kommer att utvecklas. Basen är ett neuronnät som heter GPT 3.5 och som snart ska släppas i version 4. Chat GPT är ett användargränssnitt till nätet. Vill du lära dig mer  om bakgrunden kan du exempelvis läsa Ramakrishnan Sivakumars intervju – med Chat GPT.

Jag har under helgen konsulterat Chat GPT i Python och Microbit för ett julgransprojekt. Och den har varit till stor nytta.

Kommer Chat GPT att ersätta Google, som en del spekulerar?

Jag känner mig inte mogen för ett slutomdöme. Det här blev snarare en helg när jag rustade mig för att möta dess begränsningar. Nu är jag immuniserad mot den illusion av trygghet som dess tvärsäkerhet skapar.

För ibland är den helt ute och cyklar. Jag ska snart bidra till högen av exempel på detta.

Chat GPT är dels en smart uppslagsbok. Där kan den mycket av vad Internet kan. Till exempel berättade den just nu för mig att Scott Joplins Maple leaf rag ska spelas med sväng snarare än rakt, något jag själv lärt mig strax innan.

Det är förstås egentligen en åsikt snarare än fakta. Jag var nyfiken på vad en karaktär som Chat GPT skulle säga i frågan.

Elektroniktidningen: Should Maple leaf rag be played with swung or straight notes?

Chat GPT: Maple Leaf Rag is a ragtime piece composed by Scott Joplin. Ragtime music is typically played with a "swing" feel, where the eighth notes are played in a dotted-eighth, sixteenth-note pattern. This means that the eighth notes are played as if they were dotted quarters, followed by a sixteenth note, giving the music a characteristic "lilting" feel.

Sure, but I can find several recordings out there that play it pretty straight. Why is that?

There can be many reasons why a particular musician or group may choose to play a piece of music in a different way than is traditionally expected. In the case of Maple Leaf Rag, it is possible that the musician or group in question simply has a different interpretation of the piece, or they may be trying to put their own spin on it. Additionally, the conventions of ragtime music were not as strictly defined in Joplin's time as they are now, so there may have been more variation in how the music was played. Ultimately, it is up to the individual musician or group to decide how they want to interpret and perform a piece of music.

Imponerande svar, eller hur?

Chat GPT kan även skapa. Den kan skriva dikter, ge presenttips, konstruera regler för sällskapsspel och mycket mer.

Oavsett vad den gör är den fantastisk på att ta hänsyn till bivillkor, som att svaret ska rimma, allitterera, låta som en pirat eller som en 30-talsgangster.

Såna bivillkor kan den krydda allt den säger med. Det finns uppenbarligen inga gränser för vilka bivillkor man kan ange. 

Någon bad den att i svaret på en seriös fråga ständigt återkomma till att stolt berätta om sina stora pumpor.

Hmmm ...  vad skulle hända om jag bad den prata till mig som om jag var ett barn? Jag vet inte om någon testat det tidigare.

Elektroniktidningen: Answer the question again, but this time talk to me as I was a child.

Chat GPT: Sure thing! Maple Leaf Rag is a piece of music composed by Scott Joplin. It's a really fun and lively song, and it's often played with a special rhythm called a "swing" feel. This means that some of the notes are played a little bit longer and then shorter, which makes the music sound bouncy and playful. So, if you're listening to Maple Leaf Rag, you might hear the notes being played in a way that sounds like they're dancing around! It's really fun to listen to, and I think you'll like it!

Ett jättebra svar. Bättre än vuxensvaret. Så är swing  – studsigt, lekfullt, toner som dansar omkring!

Men idag ska vi inte prata swing utan något helt annat. Om algoritmens kvaliteter som programmerare.

Den kan skriva programkod efter specifikation i naturligt språk. Den kan hitta och rätta buggar. 

Jag har ingen aning om hur det går till. Allt den gör är en remix förstås – den är ett artificiellt neuronnät tränat på utvalda delar av Internet. 

Men hur den lägger pusslen för vad den ska säga när den ställs inför kod eller hamnar i ett samtal som den aldrig sett tidigare? Det har jag ingen aning om.

De miraklen ska vi dock just nu lägga bakom oss. De är härmed givna förutsättningar. 

Vi går vidare.  Hur bra kodare är den? Hur skicklig är den som konsult eller handledare i programutveckling?

Vanligen när jag  googlar på programmeringsfrågor hamnar jag på sajterna Stackoverflow och W3 Schools. Den senare är en referensmanual och den förra ett socialt forum.

W3 Schools och Stackoverflow är båda mer pålitliga som faktakällor än Chat GPT. 

Allt som står på Stackoverflow är värderat och betygsatt av medlemmarna. Toppsvaren är typiskt alltid användbara, i min erfarenhet.

Chat GPT pratar däremot nonsens då och då. Låt dig inte luras av dess tvärsäkerhet.

Jag ska nu lägga ytterligare ett exempel till högen. 

Chat GPT har lärt mig mycket under helgen. Men den har även lurat mig. Den gav mig ett klart felaktigt svar på en konkret ja-nej-fråga som den uppenbarligen förstod.

Samtalet är mest begriplig för dig som kan programmera i C. Men vet du vad? Chat GPT är väldigt bra på att förklara, så du har kanske en chans att lära dig lite?

Den kompletta dialogen finns här (länk) med skrivfel och allt.

Jag vill veta om Python har en motsvarighet till ett visst smidigt uttryck som finns i C.

– Does python have a c conditional? frågar jag.

Det uppstår genast ett missförstånd. Chat GPT tolkar ”C conditional” som ”if-sats”. Jag tar på mig det. Det är säkert fel term. Jag googlar upp en bättre term.

– Does python have the C conditional operator?

Svaret på den frågan är ”ja”, vet jag nu.

Men Chat GPT säger ”nej”.  Och den säger det otvetydigt.

Jag är inte på jakt efter exakt samma syntax, utan efter ett motsvarande uttryck. Det är också så som Chat GPT sammanfattar min fråga. Den har inte tolkat frågan bokstavligt utan pragmatiskt. 

Efter det felaktiga svaret adderar Chat GPT en utmärkt pedagogisk utläggning kring operationen i sig, med exempel och allt. 

Lite pratsjukt. Det är som den vill passa på att visa hur duktig den är – antropomorfiskt tolkat.

Och så berättar den hur jag kan göra i Python istället. Tackar! Det visste jag visserligen, men det är rimligt att tänka sig att jag skulle vara nyfiken.

Här är frågan och det kompletta svaret. Det är fullt korrekt såvitt jag kan bedöma. Utom som sagt lögnen som den utan reservationer repeterar två gånger – att Python inte har något motsvarande.

Elektroniktidningen: Does python have the c conditional operator?

Chat GPT: In Python, there is no equivalent to the conditional operator (also known as the ternary operator) in the C programming language. In C, the conditional operator is a shorthand way of expressing an if statement. It allows you to specify a condition and two expressions, and depending on the value of the condition, one of the expressions will be evaluated and returned.

Here's an example of how the conditional operator could be used in C:

// Define two variables 
int x = 5;
int y = 10; 

// Use the conditional operator to choose which value to assign to z
int z = (x > y) ? x : y; 

// Print the value of z 
printf("%d\n", z);

In this example, the conditional operator (x > y) ? x : y checks if the value of the x variable is greater than the value of the y variable. If the condition is true, the value of x will be assigned to the z variable. If the condition is false, the value of y will be assigned to the z variable. In this case, the value of z would be 10, because the condition is false.

In Python, there is no equivalent to the conditional operator in C. Instead, you can use an if statement to achieve the same effect. Here's an example of how you could use an if statement in Python to do the same thing as the C code above:

# Define two variables
x = 5
y = 10

# Use an if statement to choose which value to assign to z
if x > y:
    z = x
else:
    z = y 

# Print the value of z
print(z)

As you can see, the Python code uses an if statement to check the condition and choose which value to assign to the z variable. This achieves the same result as the C code using the conditional operator.

Efter detta svar ägnar jag några frågor och svar kring att grubbla högt kring alternativa lösningar, med förhoppningen om att kunna skapa upp en elegantare lösning i Python. 

En av Chat GPT:s repliker avbryts tvärt av någon sorts begränsning som Open AI satt för demonstratorn. Den avbryter sig mitt i ett ord.  

Jag ber Chat GPT fortsätta. 

Det är då det händer – den tar upp just den konstruktion i Python som jag letat efter! ”Or- operatorn”. Som den själv nyss implicit påstått inte existerade! 

Elektroniktidningen: Please continue that example!

Chat GPT: Sure, here's an example of how you could use the or operator to define the conditional function:
    def conditional(p, a, b):
# Use the or operator to return the value of a if p is True, and the value of b if p is False
        return a if p else b

Lägg märke till den märkliga mixen av intellektuella färdigheter – och ofärdigheter – som Chat GPT visar upp här!  Funktionen conditional ovan definieras av ett enda uttryck och det är  just det uttryck  som jag letat efter.

Chat GPT uppvisar en sorts blindhet. Svaret på min ursprungliga  fråga ligger mitt framför våra ögon nu. Men den ser det inte. Den gör inte den kopplingen.  

Hade Chat GPT varit en människa hade det bara funnits en  förklaring – att den driver med mig. En människa skulle inte kunna ha den här lokala blindheten.

Jag ber i ett  förvånat tonläge Chat GPT att förklara sig. Som svar säger den nu uttryckligen att de två satserna i C och Python faktiskt motsvarar varandra.  

Den ber om ursäkt. Inte för att den insett sitt misstag, utan som en respons på mitt höga tonläge. Gissar jag. 

Det ser ut som om den missförstår vad min protest gäller. Det känns inte alls som om den insett att den sagt emot sig själv. 

Elektroniktidningen:  But, but, but … The or function seems actually to be an equivalent to the ternary operator that I was looking for in the first place. Why didn't you just say so?

Chat GPT: I'm sorry if I didn't make it clear that the or operator can be used as a shorthand way of expressing an if statement in Python. The or operator is often used in this way to return a value depending on the truthiness of an expression. This can be useful in situations where you want to write concise and readable code that behaves like the conditional operator (? :) in the C programming language.

Där har vi det – ”koncist och läsbart och med samma beteende villkorsoperatorn i C”. 

Så den vet att den finns. Men ändå inte.

Min slutsummering blir att Chat GPT preliminärt verkar användbar. Jag fortsätter att testa den. 

Men den går alltså inte att lita på? Då tänker du kanske att den är meningslös. Om den kan svara fel?

Men det tycker inte jag. Jag får felaktiga svar från människor hela tiden. Det betyder inte att jag slutar fråga människor om saker, och jag fortsätter att lära mig saker från dem.

Skeptisk ska man alltid vara. Det är ett faktum att jag haft mycket nytta av Chat GPT i helgen.

Tänk inte på Chat GPT som en klassisk logisk felfri konsistent Asimov-robot.

Utan som en kunnig person. Med vissa underliga nya sorters mentala luckor, som det kanske går att lära sig hantera.