ID.nl logo
Programmeren in Python met ChatGPT - Deel 2
© aniqpixel - stock.adobe.com
Huis

Programmeren in Python met ChatGPT - Deel 2

In deel 1 van deze artikelreeks leerde je hoe je ChatGPT in je zelfgeschreven programma’s inzet. Daarvoor gebruikten we de OpenAI-API in de programmeertaal Python. Laten we nu eens kijken hoe we dit toepassen om Word-documenten met verslagen van vergaderingen samen te vatten. Want daar is ChatGPT vrij goed in.

In dit tweede deel zetten we de OpenAI-API in om ChatGPT onze teksten geautomatiseerd samen te laten vatten:

  • Eerst lezen we de Word-bestanden in Python in die samengevat moeten worden
  • Daarna breiden we de code van deel 1 uit met een systeemprompt

Lees ook: Artikelen samenvatten met ChatGPT: (g)een goed idee?

Code downloaden In deze workshop 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. De bestanden, waaronder gptcode-dl2.txt maar ook drie complete Python-bestanden, zijn beschikbaar via deze webpagina.

ChatGPT is getraind voor conversaties, maar heeft ook allerlei andere vaardigheden. Eén daarvan is het samenvatten van teksten. Stel, je hebt een heleboel verslagen van vergaderingen in de vorm van Word-bestanden, dan zou je deze een voor een kunnen openen, de tekst kopiëren en in de webinterface van ChatGPT plakken met de vraag om ze samen te vatten. Maar dat is nogal repetitief werk. Dankzij de OpenAI-API kunnen we dat automatiseren.

Word-bestanden inlezen

We gaan ervan uit dat je verslagen in Word-bestanden staan. Die kunnen we in Python inlezen met de bibliotheek python-docx. Installeer die dus eerst met pip op de Opdrachtprompt van Windows, of gebruik Terminal op macOS of Linux:

pip install python-docx

We gebruiken net als in deel 1 het programma Visual Studio Code om de code in te schrijven. Open Visual Studio Code, klik op File / New File… en kies Python File. Plaats hierin de volgende Python-code die alle docx-bestanden in een gegeven directory inleest en de tekst daarvan toont:

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

Allereerst definiëren we een functie read_docx die van een Word-bestand in een bepaalde map alle paragrafen met tekst aan elkaar plakt en teruggeeft. Die functie roepen we aan in de functie process_docx_files, die van een gedefinieerd directorypad alle bestanden met de extensie docx opvraagt en daaruit de tekst haalt.

Tot slot kijkt de code op het einde of je een directorypad als argument doorgeeft. Zo ja, dan wordt dit aan de functie process_docx_files doorgegeven en wordt het resultaat getoond met zowel de bestandsnaam als de uit het document gehaalde tekst.

Veel teksten schrijven?

Een doorlopend Office-abonnement is gemakkelijk aangeschaft

Programma uitproberen

Sla dit Python-script onder de naam read_docx_files.py op in Visual Studio Code met Ctrl+S (of bekijk het voorbeelddocument dat je kunt downloaden zoals aangegeven in het kader ‘Code downloaden’) en open een opdrachtvenster met het menu Terminal / New Terminal. Voer het programma hierin als volgt uit:

python read_docx_files.py directorymetdocumenten

Vervang directorymetdocumenten door het pad waar je verslagen in de vorm van Word-documenten staan. Na de bevestiging met Enter krijg je in de terminal de inhoud van alle documenten als platte tekst te zien. Dat is uiteraard nog altijd de volledige tekst, dus nu gaan we ons programma uitbreiden om die uitgelezen teksten samen te vatten met de OpenAI-API.

Systeemboodschap

We kunnen de code van de eerste workshop in deze reeks hergebruiken om met de OpenAI-API een ‘completion’ te creëren. We geven dan een tekst die we uit een Word-document lezen door als prompt, met ervoor de vraag om die tekst samen te vatten. Maar we gaan hier nog iets extra’s toepassen: een systeemprompt. Dit is een extra prompt die je aan de API doorgeeft met instructies die het gedrag van het taalmodel bepalen.

Voeg eerst bovenaan de code van je programma read_docx_files.py de volgende regels toe om de OpenAI API te kunnen gebruiken:

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

De API-sleutel is degene die je in deel 1 hebt aangemaakt op de website van OpenAI, of maak een nieuwe aan. Wij hebben de gewoonte om voor elk script een nieuwe sleutel aan te maken, zodat we die eenvoudig kunnen intrekken als we de sleutel per ongeluk lekken, zonder dat onze andere scripts stoppen met werken. We geven hier ook een systeemprompt op waarmee we het taalmodel de instructie geven om de gebruikersprompts samen te vatten.

De documentatie van OpenAI bespreekt de verschillen tussen een systeemprompt en gebruikersprompt.

Teksten samenvatten

Voeg nu een licht aangepaste versie van de functie get_completion uit deel 1 toe, waaraan we ook de systeemprompt toevoegen:

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

Je ziet dat de parameter system_prompt hier aan de lijst met boodschappen voor de API wordt toegevoegd met als rol system.

Het enige wat je nu nog in je code moet aanpassen om je teksten te laten samenvatten, is de laatste regel met print(text) vervangen door:

        print(get_completion(text, SYSTEM_PROMPT))

Voer je dit programma nu uit met als argument een directorypad, dan leest het alle Word-documenten in die directory in en toont een samenvatting.

Meer structuur

Waarschijnlijk werkt dit al vrij goed. Maar zoals we in deel 1 al hebben gezien, werkt het taalmodel nog beter als je het specifiekere instructies geeft. De systeemprompt kan dan ook veel concreter om de aard van de samenvatting te sturen. Zo zouden we een maximum aantal woorden kunnen opgeven.

Maar in veel gevallen krijg je het beste resultaat als je een specifieke structuur van het antwoord vraagt. Voor verslagen van vergaderingen, zoals we hier in dit voorbeeld gebruiken, is dat ideaal. Want vergaderingen hebben sowieso al een agenda en er worden specifieke punten besproken. Daarvan kunnen we gebruikmaken. Verander bijvoorbeeld de systeemprompt tot het volgende:

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

Als je nu weer je programma uitvoert, toont het van elk Word-document een samenvatting in de gevraagde vorm.

In onze voorbeeldcode die je kunt downloaden, is het eindresultaat van deze paragraaf ook terug te vinden in het bestand summarize_docx_files.py.

Ons Python-script maakt samenvattingen in de gewenste vorm van onze vergaderverslagen.

Systeem- of gebruikersprompt?

Op het forum van OpenAI vinden we gemengde ervaringen van gebruikers over de systeemprompt: die zou niet in alle gevallen het gewenste gedrag opleveren. Mocht dat bij jou ook het geval zijn, gebruik dan alleen de gebruikersprompt en behoud de functie get_completion uit de vorige workshop van deze reeks.

Verwijder dan de constante SYSTEM_PROMPT uit het begin van de code en vervang de laatste regel print(get_completion(text, SYSTEM_PROMPT)) door de volgende regels om de samen te vatten tekst aan het einde van de instructies te plakken:

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

Zoals vaak bij het werken met taalmodellen kruipt veel tijd in het experimenteren om de juiste prompt te vinden. Maar zodra je die hebt, kan het je heel wat tijd uitsparen!

In onze voorbeeldcode die je kunt downloaden, is het eindresultaat van deze paragraaf ook terug te vinden in het bestand summarize_docx_files_without_system_prompt.py.

De systeemprompt werkt niet in alle gevallen, melden gebruikers op het forum van OpenAI.

Volgende week maandag het derde deel van deze reeks! Hierin laten we ChatGPT de onderwerpen extraheren uit de teksten die we in dit deel geïmporteerd hebben.

Lees ook:

▼ Volgende artikel
WhatsApp voegt live foto's, AI-thema's en slimme zoekfunctie toe
© ER | ID.nl
Huis

WhatsApp voegt live foto's, AI-thema's en slimme zoekfunctie toe

WhatsApp rolt de komende tijd opnieuw een reeks functies uit die het chatten en videobellen persoonlijker en praktischer moeten maken. Van creatieve AI-hulpmiddelen tot betere zoekopties in groepsgesprekken: dit zijn de belangrijkste vernieuwingen.

In dit artikel lees je meer over de nieuwste WhatsApp-functies, waaronder:
  • Live foto's (iOS) en bewegende foto's (Android) delen

  • Eigen chatthema's en achtergronden maken met Meta AI

  • Nieuwe stickerpakketten downloaden

  • Groepschats makkelijker terugvinden via zoekfunctie

  • Documenten scannen en delen op Android

Rijkere momenten met live en bewegende foto’s

Gebruikers kunnen nu live foto's (iOS) en bewegende foto's (Android) delen. Die bevatten niet alleen beeld, maar ook geluid en beweging. Het idee is dat gesprekken zo meer diepte krijgen en dat je herinneringen realistischer kunt doorsturen, ongeacht of je gesprekspartner iOS of Android gebruikt. In de praktijk betekent dit dat je niet langer gebonden bent aan statische kiekjes: een lach, een begroeting of een spontaan moment komt beter tot zijn recht, compleet met de sfeer van dat moment. WhatsApp wil hiermee de beleving dichter bij die van een echte ontmoeting brengen, zodat een chat niet alleen informatief is, maar ook emotioneel rijker en levendiger aanvoelt.

Chatthema's en achtergronden met Meta AI

WhatsApp zet ook verder in op kunstmatige intelligentie. Met behulp van Meta AI kun je eigen chatthema's maken en zo je gesprekken een volledig unieke stijl geven. Denk aan kleurenpaletten die aansluiten bij je persoonlijke voorkeuren of achtergronden die zijn geïnspireerd op je favoriete muziek, seizoen of stemming. Daarnaast is het mogelijk om AI-gegenereerde achtergronden te gebruiken tijdens videogesprekken, waardoor je jezelf in een virtuele omgeving plaatst, zoals een tropisch strand of een futuristische skyline. Ook kun je deze achtergronden direct toevoegen bij het maken van foto's en video's in de chat, wat creatieve experimenten eenvoudig maakt. WhatsApp benadrukt dat de uitrol stap voor stap gebeurt: sommige gebruikers zien de opties al, terwijl anderen nog even moeten wachten tot de update beschikbaar is.

©WhatsApp

Nieuwe stickerpakketten

Wie zich liever uitdrukt zonder woorden, krijgt meer keuze uit stickers. WhatsApp voegde pakketten toe met veelzeggende namen als 'Onverschrokken vogel', 'Schooldagen' en 'Vakantie'. De stijl varieert van speels tot gezellig en schattig, zodat er ongetwijfeld voor elke stemming wel een passende illustratie is.

Groepen makkelijker terugvinden

Groepschats hebben vaak creatieve namen die je niet altijd paraat hebt. WhatsApp maakt het daarom eenvoudiger om groepen terug te vinden: zoek in je tabblad Chats gewoon op de naam van een contactpersoon, en de groepen waarin jullie samen zitten worden automatisch getoond.

Documenten scannen op Android

Tot slot is de mogelijkheid om documenten te scannen nu ook beschikbaar voor Android. Gebruikers kunnen rechtstreeks vanuit WhatsApp bestanden vastleggen, bijsnijden, opslaan en verzenden. Daarmee wordt het eenvoudiger om bijvoorbeeld contracten, bonnetjes of formulieren snel te delen zonder eerst een aparte scanner- of camera-app te openen. De functie herkent de randen van het document automatisch en zorgt dat het beeld wordt rechtgetrokken voor een nette weergave. iPhone-gebruikers hadden deze optie al langer, maar door de uitbreiding naar Android is het nu voor vrijwel alle WhatsApp-gebruikers mogelijk om documenten direct in de app te digitaliseren en door te sturen.

▼ Volgende artikel
Van stoofpot tot nagerecht: waarom de slowcooker zo handig is
© Dirk Weischenberg
Huis

Van stoofpot tot nagerecht: waarom de slowcooker zo handig is

Je kent het wel: je hebt een drukke dag, weinig zin om koken, maar wel trek in iets warms en voedzaams. Kom er maar in slowcooker! Je vult hem 's ochtends, zet hem aan en later op de dag staat er een complete maaltijd te wachten. Zeker in de herfst, dé tijd voor stevige soepen en stoofgerechten, is de slowcooker een uitkomst. En: je kunt er veel meer mee maken dan je denkt!

In dit artikel lees je:

– Hoe de slowcooker werkt – Wat je er allemaal mee kunt maken – Welke apparaten je deels kunt vervangen door een slowcooker – Het verschil tussen slowcooker, multicooker en snelkookpan – Tips en aandachtspunten bij gebruik – Twee recepten: apple crumble en pompoensoep uit de slowcooker

Lees ook: 5 veelgemaakte fouten met de slowcooker

Hoe werkt de slowcooker precies?

Een slowcooker werkt anders dan de pan op het fornuis of een braadslee in de oven. Hij gaart gerechten langzaam op lage temperatuur, vaak tussen de 70 en 95 graden. De warmte verspreidt zich gelijkmatig rondom een keramische of metalen binnenpan, terwijl het deksel de stoom en smaken vasthoudt. Omdat er nauwelijks vocht ontsnapt, blijven ingrediënten mals en vol van smaak. Vlees valt na uren sudderen uit elkaar en groente wordt zacht zonder zijn structuur helemaal te verliezen.

Van stoofpot tot nagerecht

Wie denkt dat de slowcooker alleen geschikt is voor stoofpotten, heeft het mis. Natuurlijk kun je er klassiekers als rundvleesstoof of chili con carne mee maken, maar net zo goed linzenstoof, curry of een rijke groentesoep. Voor het ontbijt kun je de avond ervoor havermout in de pan doen, zodat je 's ochtends wakker wordt met een warme kom pap. Zelfs nagerechten zoals rijstepap of een appelcrumble met kaneel (recept verderop) komen goed uit de slowcooker. Sommige modellen hebben bovendien een braadfunctie, zodat je vlees eerst kunt dichtschroeien voordat je het rustig laat garen.

©from_my_point_of_view

Welke apparaten vervangt de slowcooker?

De kracht van de slowcooker zit niet alleen in variatie, maar ook in vervanging. Veel bereidingen die je normaal in de oven of op het fornuis zou doen, kunnen ook prima met de slowcooker. Een stoofpot die je anders urenlang in de gaten moet houden, pruttelt hier vanzelf rustig door zonder dat je steeds hoeft te roeren. Zelfs een rijstkoker, stoommandje of au-bain-marie-apparaat kun je soms links laten liggen, want ook rijst, groente en custard kunnen prima langzaam garen. De slowcooker vervangt niet alle apparatuur in je keuken, maar wel deels.

Slowcooker, multicooker en snelkookpan: dit zijn de verschillen

De slowcooker is niet het enige apparaat dat koken makkelijker maakt. Hij wordt vaak vergeleken met de multicooker en de snelkookpan, maar de werking verschilt duidelijk. De slowcooker werkt op lage temperatuur en heeft vooral tijd nodig. Het voordeel is dat je gerechten kunt laten garen zonder dat je er de hele tijd bij hoeft te blijven en dat smaken zich rustig ontwikkelen. De multicooker is veelzijdiger: die combineert meerdere functies in één toestel, zoals stomen, bakken, rijst koken en vaak ook slowcooken. Daarmee vervangt hij meer losse apparaten, al vraagt het soms om meer instellingen en handelingen. De snelkookpan werkt juist tegengesteld aan de slowcooker. Met hoge druk en hoge temperatuur verkort hij kooktijden drastisch. Waar de slowcooker zes uur nodig heeft voor een stoofpot, staat het gerecht uit een snelkookpan binnen een uur op tafel. Het resultaat is minder diep van smaak, maar wel een snelle uitkomst voor drukke dagen. Kortom: de slowcooker draait om gemak en smaakontwikkeling, de multicooker om veelzijdigheid en de snelkookpan om snelheid.

De voordelen van langzaam garen

Het gebruik van de slowcooker brengt een aantal voordelen met zich mee. Doordat de temperatuur laag blijft, brandt er zelden iets aan en kun je gerust de deur uit terwijl het eten staat te pruttelen. De smaken trekken dieper in de ingrediënten en vlees wordt malser dan dan wanneer je het op hoog vuur bereidt. Bovendien heb je minder olie of boter nodig en kun je vaak goedkopere vleessoorten gebruiken die dankzij het lange garen bijzonder zacht worden. Het energieverbruik is doorgaans lager dan bij een oven of kookplaat, omdat het apparaat constant op een laag pitje werkt.

Waar je op moet letten

Er zijn ook dingen om rekening mee te houden. Omdat er nauwelijks vocht verdampt, is het beter om zuinig te zijn met bouillon of water. Te veel vocht maakt de maaltijd dunner dan de bedoeling is. Kruiden ontwikkelen zich anders bij lage temperaturen en hebben soms minder kracht, waardoor het slim is om vlak voor het serveren je gerecht nog even extra op smaak te brengen. En omdat gerechten vaak vier tot acht uur nodig hebben, vraagt het koken met een slowcooker om planning. Zet hem tijdig aan, zodat je eten op het juiste moment klaar is.

De slowcooker in de herfst

Juist in de herfst laat de slowcooker zich van zijn beste kant zien. Het seizoen van pompoensoep, erwtensoep, goulash en linzenstoof vraagt om comfort food dat langzaam kan trekken. Terwijl de regen tegen de ramen slaat en de dagen korter worden, vult je huis zich met de geur van een gerecht dat urenlang rustig staat te garen. Na een boswandeling of werkdag hoef je alleen nog maar de deksel te lichten en te genieten.

Recept: pompoensoep uit de slowcooker

Pompoensoep past perfect bij de herfst en is eenvoudig te maken in de slowcooker. Gebruik een middelgrote flespompoen, twee winterwortels, een grote ui, twee teentjes knoflook, een liter groentebouillon en een theelepel gemalen komijn. Snijd de pompoen in blokjes (schil mag blijven zitten als hij dun is) en doe samen met wortel, ui en knoflook in de slowcooker. Voeg de bouillon en komijn toe, zet de pan zes uur op de lage stand of drie uur op de hoge stand. Pureer de soep met een staafmixer glad en breng eventueel verder op smaak met peper en zout. Voor een romige variant kun je een scheutje kokosmelk toevoegen. Serveer met brood of een beetje geroosterde pompoenpitten als topping. 

©posinote - stock.adobe.com

Recept: apple crumble uit de slowcooker

Een klassieker die verrassend goed lukt in de slowcooker is apple crumble. Je hebt nodig: zes zoetzure appels, een eetlepel kaneel, twee eetlepels suiker, 100 gram bloem, 75 gram havermout, 100 gram koude boter in blokjes en een snuf zout. Schil de appels, snijd ze in stukjes en leg ze op de bodem van de ingevette slowcooker. Meng bloem, havermout, boter, suiker en zout tot een kruimelig deeg en verdeel dit over de appels. Zet de slowcooker drie uur op de hoge stand, of vijf uur op de lage stand, met een theedoek onder het deksel om condens op te vangen (zodat de crumble-topping knapperig blijft). Zorg er wel voor dat het deksel en de pan goed afgesloten blijven. Serveer de crumble warm, eventueel met een bolletje vanille-ijs of slagroom.

Slowcooker? Ja, graag!

De slowcooker laat zich goed inpassen in een druk dagelijks leven. Hij neemt je een deel van het werk uit handen en zorgt voor supersmaakvolle gerechten. Heb je wat plek over in je keuken, dan is een slowcooker dus zeker aan te raden!

Nog veel meer recepten?

Slowcookerboeken genoeg!