ID.nl logo
Programmeren in Python met ChatGPT - Deel 4
© Alexander Limbach
Huis

Programmeren in Python met ChatGPT - Deel 4

ChatGPT is niet alleen in staat om vragen te beantwoorden, teksten samen te vatten en tags aan teksten toe te kennen. Je kunt er ook teksten mee vertalen of naar andere vormen transformeren. In dit vierde deel van onze reeks over de OpenAI-API tonen we je hoe je dat doet in Python.

In dit vierde deel laten we zien dat ChatGPT prima teksten kan omzetten:

  • In een vertaling
  • In een gedicht
  • In een computertaal
  • Taalherkenning
  • Aanspreekvorm veranderen

Lees ook: Geen talenknobbel (meer)? Deze (ver)taaltools helpen je uit de brand

Code downloaden In dit deel worden wat voorbeelden van stukken code gegeven. Omdat overtikken van code erg foutgevoelig is, kun je die code beter downloaden en daarna bekijken of kopiëren. Het bestand, gptcode-dl4.txt is beschikbaar via deze webpagina.

Een groot taalmodel, zoals dat van ChatGPT, kun je eigenlijk beschouwen als een soort krachtige rekenmachine die niet met getallen werkt, maar met woorden. Daardoor kun je tekst omzetten in een ander soort tekst. Een tekst van het Engels naar het Nederlands vertalen? Van een familiaire naar een formele toon? Of, als je met programmeertalen werkt, van tekst naar een tabel in HTML? Het is allemaal mogelijk en vrij eenvoudig in je eigen programma’s te integreren.

Basiscode

In dit vierde deel van deze reeks houden we onze code eenvoudig, zodat we de variëteit van transformaties van teksten kunnen illustreren die met de OpenAI-API mogelijk zijn. We gaan dus geen Word-bestanden inlezen, maar de te transformeren teksten als korte strings in onze code zetten.

Voor alle voorbeelden in dit artikel gebruiken we daarom de volgende basiscode:

De code kun je bekijken in het bestand gptcode-dl4.txt, te downloaden via .

Deze code gebruikten we ook al in het derde deel van deze reeks. Vervang de waarde van API_KEY door je eigen API-sleutel en kies eventueel een ander model dan gpt-3.5-turbo. Zo is het model gpt-4 taalkundig veel sterker, maar dat kost wel meer.

GPT-4 is taalkundig sterker dan GPT-3.5, maar wel een factor twintig duurder.

Vertaalmachine

Als we hiermee een tekst willen vertalen, hebben we een systeemprompt nodig met de vertaalopdracht en een gebruikersprompt met de te vertalen tekst. Dat doe je door de volgende regels code aan het einde van de basiscode toe te voegen:

De code kun je bekijken in het bestand gptcode-dl4.txt, te downloaden via .

Sla het script onder de naam translate.py op in Visual Studio Code met Ctrl+S en open een opdrachtregel met het menu Terminal / New Terminal. Klik dan rechtsboven op het afspeelknopje (het driehoekje met de tooltip Run Python File als je erboven blijft hangen). Als alles goed gaat, krijg je nu in de terminal een Nederlandse vertaling van de Engelse tekst.

Dichterlijke vrijheid

Dat vertalen hoeft niet altijd heel letterlijk te zijn. Je kunt ook vragen om een haiku te maken die een tekst beschrijft:

De code kun je bekijken in het bestand gptcode-dl4.txt, te downloaden via .

We hebben als gebruikersprompt gewoon de lead van een artikel van de website van NRC ingevoerd. Het taalmodel maakt daarvan de volgende haiku:

Wagnerstrijders gaan,

Onder de rook van Moskou,

Putsch nek omgedraaid.

Op deze manier zou je een programma kunnen schrijven dat je elke ochtend het nieuws in de vorm van haiku’s toont.

Universele vertaalmachine

De taalmodellen van OpenAI zijn getraind op teksten in allerlei talen en die talen worden zelfs automatisch herkend. Merk op dat we in de systeemprompt van ons vertaalscript niet vroegen om de tekst van het Engels naar het Nederlands te vertalen. We vroegen simpelweg om de tekst naar het Nederlands te vertalen. Dat had ook gewerkt als we een Franse tekst of een tekst in een andere taal hadden opgegeven als gebruikersprompt.

Taalbarrière?

Met een vertaalapparaat kom je er altijd uit

Die mogelijkheid om de taal te herkennen kunnen we ook gebruiken. We vragen dan eerst wat de taal is van de gegeven tekst en vragen dan pas om die te vertalen. We kunnen die laatste opdracht zelfs nog explicieter maken door te vragen om uit de herkende taal te vertalen. Dat ziet er dan als volgt uit, met enkele voorbeelden in verschillende talen:

De code kun je bekijken in het bestand gptcode-dl4.txt, te downloaden via .

Zoals je ziet, zijn we in LANGUAGE_PROMPT vrij expliciet geweest. Als we gewoon vragen “What language is this?”, krijgen we antwoorden als “This is Chinese” of “This language is Italian”. Dat willen we niet. Ook een antwoord als “French.” met een punt op het einde willen we zo vermijden, maar zelfs na het expliciet te vragen blijft het taalmodel dit meestal met een punt eindigen. Daarom dat we met rstrip(".") dit nog verwijderen.

Sla een andere toon aan

Je kunt met taal allerlei registers bespelen. In een formele sollicitatiebrief sla je een andere toon aan dan in een appje naar je vrienden. Ook daarmee kunnen de taalmodellen van OpenAI aan de slag. Je kunt een tekst eenvoudig naar een andere toon omzetten. Een voorbeeld maakt dit duidelijk:

De code kun je bekijken in het bestand gptcode-dl4.txt, te downloaden via .

Computertalen omzetten

Op dezelfde manier kunnen we computertalen vertalen. Maar een omzetting van bijvoorbeeld JSON naar HTML doe je beter met een Python-bibliotheek die daarin gespecialiseerd is. Waar taalmodellen wel goed in zijn, is het omzetten van een tekstuele beschrijving van een gebruiker naar een computertaal. Stel dat je in een programma bestellingen van een gebruiker opneemt, dan kun je het resultaat naar een tabel in HTML laten omzetten:

De code kun je bekijken in het bestand gptcode-dl4.txt, te downloaden via .

Het resultaat is inderdaad een HTML-bestand met een tabel met de juiste gegevens.

Maak een HTML-tabel op basis van een tekst.

En verder

Teksten transformeren, in alle mogelijke vormen, is een krachtige functie waarvoor je ChatGPT en dus ook de achterliggende taalmodellen via de OpenAI-API kunt inzetten. Zo breid je eenvoudig je eigen programma’s uit met allerlei transformaties van teksten. We hebben hier nog maar een kleine greep van de mogelijkheden getoond. Titels beschrijven in emoji’s? Handleidingen naar gedichten omzetten? Tweeten in de stijl van Donald Trump? Het is zo gebeurd.

Volgende week maandag het vijfde en laatste deel van deze reeks! Hierin gaan we de OpenAI-API nog interactiever toepassen en echte gesprekken voeren.

Lees ook:

▼ Volgende artikel
Beeldverversing versus pixels: waarom soepel gamen beter is dan scherp
© Gorodenkoff Productions OU
Huis

Beeldverversing versus pixels: waarom soepel gamen beter is dan scherp

Resolutie is marketing, refreshrate is beleving. Waar 4K zorgt voor een mooi plaatje, zorgt een hoge verversing (Hz) ervoor dat je daadwerkelijk wint. Hieronder lees je waarom snelheid in feite de échte koning is in gaming.

Veel gamers staren zich blind op 4K-resolutie. Ze kopen een duur scherm, zetten de settings op Ultra en vragen zich vervolgens af waarom hun spel stroperig aanvoelt. De misvatting is dat 'mooier' gelijkstaat aan 'beter'. In werkelijkheid is de vloeibaarheid van het beeld – de refreshrate, oftewel verversingssnelheid – veel bepalender voor hoe direct en responsief een game aanvoelt. Aan het eind van dit artikel weet je precies of jij moet kiezen voor pixels of snelheid.

Hoe je ogen bedrogen worden door Hertz

Stel je voor dat je snel met je muis over je bureaublad beweegt. Op een standaard 60Hz-scherm zie je de cursor in schokjes over het beeld springen; je hersenen vullen de gaten in. Op een 144Hz- of 240Hz-gaming-monitor verdwijnen die gaten.

Het technische verschil zit hem in de verversingssnelheid: het aantal keren per seconde dat het beeld wordt vernieuwd. Bij 60 Hz krijg je elke 16,6 milliseconden een nieuw beeld. Bij 144 Hz is dat elke 6,9 milliseconden. Dat klinkt als een klein verschil, maar je voelt het direct. Het gestotter dat je onbewust gewend bent verdwijnt. Bewegingen voelen boterzacht aan, alsof de cursor (of je crosshair) aan je hand vastgeplakt zit in plaats van er achteraan zwemt. Dit effect wordt motion clarity genoemd: objecten blijven scherp, zelfs als ze snel door het beeld bewegen.

©Framestock

De winst in shooters en snelle actie

Wanneer werkt dit in je voordeel? Vooral in competitieve shooters zoals Call of Duty, Counter-Strike of Valorant. In dit soort games telt elke milliseconde. Een hogere refreshrate vermindert de input lag, oftewel de tijd tussen jouw klik en de actie op het scherm.

Stel, je draait je personage snel om. Bij een lage refreshrate wordt de vijand een fractie later getoond en zie je veel bewegingsonscherpte (motion blur). Met een hoge refreshrate zie je de vijand eerder en scherper, waardoor je sneller kunt reageren. Je hebt letterlijk actuelere informatie dan je tegenstander. Om dat te bereiken heb je wel een krachtige videokaart nodig die genoeg beelden per seconde (FPS) kan genereren om je snelle scherm bij te houden.

Wanneer resolutie het toch wint van snelheid

Is snelheid altijd heilig? Nee. Als je vooral tragere, meer verhalende games speelt (zoals Cyberpunk 2077 in de 'sightseeing' modus), Microsoft Flight Simulator of grafische RPG's, dan voegt 240 Hz weinig toe. In deze titels kijk je vaak naar stilstaande of langzaam bewegende omgevingen.

In dat geval wil je juist de texturen van de bomen, de reflecties in het water en de details in gezichten zien. Een 4K-monitor op 60 of 120 Hz is dan een logischer keuze dan een onscherp 1080p-scherm op 360 Hz. De visuele pracht weegt hier zwaarder dan de milliseconden reactietijd. Ook voor console-gamers die op de bank zitten, is een goede televisie met 4K en HDR vaak indrukwekkender dan puur de hoogste framerates.

Situaties waarin een hoge refreshrate zinloos is

Er zijn momenten dat investeren in een snel scherm weggegooid geld is. Dat gebeurt bijvoorbeeld als je hardware de snelheid niet kan leveren; als je videokaart maar 50 frames per seconde kan leveren, heeft een 144Hz-scherm geen nut omdat het scherm wacht op de computer. Daarnaast beperken oude kabels je bandbreedte, waardoor je monitor soms terugvalt naar 60 Hz zonder dat je het doorhebt. Ook op oudere consoles zoals de Nintendo Switch of de standaard PS4 heb je niets aan snelle schermen, omdat deze hardware fysiek gelimiteerd is op 60 Hz of lager.

Bepaal wat jouw setup aankan

Kijk dus kritisch naar je huidige situatie voordat je naar de winkel rent. Heb je een high-end pc die makkelijk 120+ FPS haalt in jouw favoriete games? Dan is een upgrade naar een 144- of 165Hz-monitor de grootste sprong in spelplezier die je kunt maken. Speel je op een PlayStation 5 of Xbox Series X? Zoek dan specifiek naar een scherm met HDMI 2.1-ondersteuning om 120 Hz op 4K mogelijk te maken. Zit je ver van je scherm af en speel je relaxed? Investeer dan liever in resolutie en kleurdiepte.

©Proxima Studio

Kortom: snelheid is de sleutel tot succes!

Verversingssnelheid is belangrijker dan resolutie voor iedereen die actie- of competitieve games speelt. Het zorgt voor een vloeiender beeld, minder input lag en betere motion clarity, wat je direct een voordeel geeft in het spel. Resolutie is vooral luxe voor het oog, maar refreshrate is pure prestatie voor de speler.

▼ Volgende artikel
Column: A Knight of Seven Kingdoms is wat Game Of Thrones nooit durfde te zijn
© HBO Max
Huis

Column: A Knight of Seven Kingdoms is wat Game Of Thrones nooit durfde te zijn

Game of Thrones kennen we als een reeks brute, grootschalige verhalen, maar A Knight of Seven Kingdoms is het tegenovergestelde. Wat blijkt? Met een schattig, kleinschalig verhaal voelt Westeros alleen maar groter.

Het regent. Op een heuvel, onder een boom, zien we een kast van een vent in de weer met een schop. Een ridder, lijkt het. Hij graaft een graf. Tegelijkertijd praat de ridder in zichzelf: er is in de buurt een toernooi, en we kijken waarschijnlijk naar de winnaar. De muziek zwelt op, terwijl onze held vastberaden in de verte staart. De iconische Game of Thrones-muziek lijkt ons te gaan overspoelen, klaar om naar een prachtig geanimeerde intro te gaan. In plaats daarvan, knippen we naar een shot waarin onze held achter een boom staat te poepen.

Watch on YouTube

De boodschap is duidelijk: de serie heeft schijt aan de verwachtingen die je van Game of Thrones hebt. De serie stond er ooit immers om bekend dat het brak met de conventies van mainstream fantasy. Nu de reeks daar inmiddels zelf toe behoort, is het aan A Knight on Seven Kingdoms om er weer een flinke draai aan te geven.

Een ridder van de heg

Nog een spin-off? George R. R. Martin is toch die schrijver die nooit schrijft? Tja, dat valt wel mee. Hoewel de beste man zich al tien jaar uit een hoekje probeert te schrijven met het langverwachte Winds of Winter, heeft hij een hoop andere verhalen in Westeros verteld.

Zo komen de verhalen van House of the Dragon uit het boek Fire and Blood, waarin we volgen hoe de Targaryen-familie zichzelf met generaties aan ruzies ten val brengt. Maar George R. R. Martin heeft de schaal ook wel eens flink verkleind: in het korte boek The Hedge Knight, dat nog stamt uit de vorige eeuw, volgen we een ridder en zijn schildknaap.

©HBO Max

Daarin volgen we de ridder Dunk - niet onze eigen Dunke, maar Ser Duncan The Tall. Hij is een ‘hagenridder’: een ridder zonder verwantschap aan een heer. Of, in andere woorden: een freelancer die, als hij niet werkt, in de heg mag slapen. Dunk blijft niet lang een zzp’er: hij ontmoet de kale stadsjongen Egg, die dolgraag zijn schildknaap wil zijn.

Vrede!?

De verhalen van dit geliefde tweetal bieden de basis van A Knight of the Seven Kingdoms. De twist? Er is vrede in Westeros - ja, het kan echt - en we volgen een nobody, dus er is ineens ruimte voor een gezellig, klein verhaal. Dat wordt gereflecteerd in de afleveringen: geen dik uur, maar een comfortabel halfuurtje.

©HBO Max

De ridder Dunk wil dolgraag bewijzen dat hij een eervolle ridder is, maar dat is in het brute Westeros best een uitdaging. Al helemaal als je een lompe lieverd als Dunk bent. Dan komt zo’n slimme, wereldwijze schildknaap als Egg ineens goed van pas.

Het wordt al helemaal lastig als je niet eens kan bewijzen dat je een ridder bent. Dan mag je namelijk niet eens meedoen aan een toernooi - eentje waarbij Dunk overigens zijn paard en zijn spullen kwijtraakt, mocht hij verliezen.

Meneer, mag ik meedoen?

Met dat toernooi wordt een van de Game of Thrones-clichés lekker op zijn kop gezet. In de oorspronkelijke serie zagen we in aflevering vier een heftig toernooi en House of the Dragon opende er zelfs mee: het is vaak een goede manier om zonder grote verhaalconsequenties te laten zien hoe gewelddadig Westeros is.

©HBO Max

In A Knight of the Seven Kingdoms komen we dat toernooi niet eens bínnen. Eerst moet Dunk maar eens bewijzen dat hij een ridder is, uitzoeken hoe zo’n toernooi werkt en een heer overtuigen hem te helpen - maar ook dansen, touwtje trekken en een poppenspel aanschouwen. Het is een fantastische stap terug van al die grootschalige oorlogen.

Doordat het verhaal zo’n piepkleine focus heeft, begin je om iedereen te geven: iemand die z’n paard verkoopt in A Knight of Seven Kingdoms is vele malen pijnlijker dan een draak die wordt doodgeschoten in Game of Thrones. We bevinden ons nog steeds in de brute wereld, maar het komt allemaal wat harder aan omdat we ook zien hoe grappig en gezellig het kan zijn.

©HBO Max

Een fossiele brandstof

Toch loopt ook A Knight of Seven Kingdoms een zeker risico. De kwaliteit van Game of Thrones kelderde toen de makers het bronmateriaal inhaalden. Ook die van House of the Dragon nam wat af, toen showrunner Ryan Condal besloot George R.R. Martin niet langer te raadplegen en de grote climax werd doorgeschoven naar het volgende seizoen.

Er zijn momenteel drie korte boeken rondom Dunk en Egg, waarvan dit eerste seizoen het eerste boek beslaat. George R.R. Martin zegt nog twaalf verhalen in zijn hoofd te hebben, maar volgens HBO-baas Casey Bloys moeten de seizoenen van A Knight of Seven Kingdoms jaarlijks verschijnen: dat klinkt goed, maar dan mag Martin wel even doorschrijven. Zijn verhalen voelen nu als een fossiele brandstof: het is een enorm waardevolle bron, maar die wordt niet echt meer aangevuld.

©HBO Max

Gelukkig lijken showrunner Ira Parker en George R.R. Martin goed bevriend. De schrijver heeft Parker een outline gegeven van de twaalf verhalen, dus in theorie kan de serie daarmee verder - maar laten we niet vergeten dat dit bij de laatste seizoenen van Game of Thrones óók het geval was.

Bombastisch gefluit

Toch verdient Ira Parker ons optimisme, want A Knight of Seven Kingdoms is een fenomenale toevoeging aan de wereld van A Song of Ice and Fire. Verhalen hebben contrast nodig: door het klein te houden, voelt de wereld groot. Door het lief te houden, komen de gemene momenten keihard aan.

©HBO Max

De muziek is hier een spectaculair voorbeeld van. De bombastische muziek wordt ons aan het begin als wortel voorgehouden, maar dat is het ook wel - in plaats daarvan moeten we het doen met een gezellig gitaartje, iemand die fluit en het gezang van de vogeltjes.

Als het balletje dan eenmaal gaat rollen, neemt de muziek toch een bombastischer formaat aan - maar op dat moment voelt het verdiend. En, het allerbelangrijkste: in die epische muziek zit óók gewoon nog dat schattige gefluit.

Afleveringen van A Knight of Seven Kingdoms verschijnen wekelijks op HBO Max.