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
Waar voor je geld: 5 beveiligingscamera's met een hoge videoresolutie
© Reshoot
Zekerheid & gemak

Waar voor je geld: 5 beveiligingscamera's met een hoge videoresolutie

Bij ID.nl zijn we dol op kwaliteitsproducten waar je niet de hoofdprijs voor betaalt. Een paar keer per week speuren we binnen een bepaald thema naar zulke deals. Ben je op zoek naar een bewakingscamera met een hoge beeldkwaliteit? Vandaag hebben we vijf interessante modellen voor je gespot.

TP-Link Tapo C325WB

De TP-Link Tapo C325WB is goedkoop en levert ook nog eens een scherp beeld. Met een resolutie van 2688 × 1520 pixels identificeer je moeiteloos personen en huisdieren. Aan weerszijden van de lens bevinden zich twee felle ledlampen. Die gaan na bewegingsdetectie in het donker vanzelf branden, zodat je nachtelijke opnames in kleur kunt maken. Overigens herkent de Tapo C325WB op eigen houtje mensen, voertuigen, honden en katten. Je ontvangt daarvan desgewenst pushberichten op je smartphone, waarna je in de TP-Link Tapo-app livebeelden opvraagt. Uiteraard kijk je net zo makkelijk eerdere opnames terug.

Voor het opslaan van beeldmateriaal kun je kiezen tussen verschillende opties. De eenvoudigste methode is om een microSD-kaart van maximaal 512 GB in het apparaat te plaatsen. Als alternatief kun je de video's op een geschikte NAS of (tegen betaling) in de cloud bewaren. Je verbindt de Tapo C325WB via een ethernetkabel of wifi met het (draadloze) thuisnetwerk. De IP66-gecerificeerde behuizing is weerbestendig, waardoor je hem ook buiten kunt ophangen.

TP-Link Tapo C225

Als je alleen binnenshuis wilt opnemen, is deze goedkope pan- en tilt-camera een goede keuze. Het camerahoofd van de TP-Link Tapo C225 kan op eigen houtje horizontaal (340 graden) en verticaal (60 graden) bewegen. Je hebt in een kamer dus geen last van dode hoeken. Bepaal bijvoorbeeld dat de camera een huisdier of (klein)kind automatisch moet volgen. Vervolgens neem je in de TP-Link Tapo-app live een kijkje. Dankzij een respectabele resolutie van 2560 × 1440 pixels ogen de beelden scherp. Bepaal in de app in hoeverre je meldingen wilt ontvangen van bewegende objecten, personen, huisdieren en geluiden.

Een opvallende functie is de privacyknop. Wanneer je daarop drukt, stopt de Tapo C225 meteen met filmen. Verder voer je op afstand een gesprek, want de behuizing bevat een speaker en microfoon. Voor de opslag van video's plaats je een microSD-kaart van maximaal 512 GB in de behuizing. Een andere mogelijkheid is om de beelden naar een geschikte NAS door te sluizen. Lees hier een uitgebreide review over deze veelzijdige camera.

Eufy Eufycam E330 (2-pack + basisstation)

Met dit starterspakket van Eufy bewaak je de voor- en achterkant van je woning. En hoe, want de twee bijgesloten camera's ondersteunen een 4K-resolutie van 3840 × 2160 pixels. Hierdoor herken je zelfs na digitaal inzoomen moeiteloos personen. Zodra de bewakingscamera's met netstroom zijn verbonden, bewaar je opnames op het inbegrepen basisstation. Standaard is er een opslagcapaciteit van 16 GB beschikbaar, maar dat breid je met een eigen interne schijf optioneel uit naar maximaal 16 TB. Zeker wanneer je continu wilt opnemen, is extra opslagruimte een vereiste. Je kunt als alternatief ook alleen filmpjes van gebeurtenissen opslaan.

Naast een hoge resolutie biedt de Eufycam E330 ook nog eens nachtzicht in kleur. Er zijn namelijk een lichtgevoelige sensor en ledlamp geïntegreerd. Verder is de functie gezichtsherkenning de moeite waard. Je ontvangt desgewenst pushmeldingen zodra er familie of vrienden bij je op de stoep staan. Woon je groot? Overweeg dan een bewakingssysteem met vier camera's. Daarnaast is de Eufy Eufycam E330 ter uitbreiding los te koop.

Lees ook: 5 fouten met je beveiligingscamera die je hierna nooit meer maakt

EZVIZ BC1c 4K

Deze oplaadbare 4K-bewakingscamera van Ezviz is momenteel goedkoper dan ooit. Zodra je de BC1c 4K met wifi verbindt, kijk je naar opnames en livebeelden in een resolutie van 3840 × 2160 pixels. Je hangt de IP65-gecertificeerde behuizing zo'n beetje overal op. In de behuizing bevindt zich namelijk een accu met een riante capaciteit van 10.400 mAh. Dat scheelt weer stroomdraden trekken! Ben je van plan om de beveiligingscamera op een locatie met veel zonlicht te monteren? Koop de BC1c 4K dan inclusief zonnepaneel, zodat je de batterij niet of nauwelijks via netstroom hoeft op te laden.

De behuizing heeft plek voor een microSD-kaart tot maximaal 512 GB. Verder is de behoorlijke diagonale kijkhoek van 135 graden een pluspunt. Hierdoor vangt de lens een groot deel van de kamer, tuin of oprit in beeld. Zodra de camera een persoon of voertuig detecteert, ontvang je hiervan een melding op je smartphone. Bovendien begint de BC1c 4K automatisch met opnemen. Overige voordelen zijn de ondersteuning voor tweewegaudio en nachtzicht in kleur.

Foscam G4P-B

De Foscam G4P-B heeft een stevige behuizing, waardoor je hem gerust op een drukke of risicovolle plek kunt ophangen, zoals aan de straatzijde waar kinderen spelen. Het apparaat werkt op netstroom, waardoor je 24/7 kunt opnemen. Kies voor het opslaan van videomateriaal tussen drie mogelijkheden, namelijk een microSD-kaart (max 256 GB), een geschikte NAS of cloudopslag. Voor laatstgenoemde optie moet je wel een betaald abonnement afsluiten.

De G4P-B heeft een ethernetaansluiting, zodat je het apparaat op een bekabeld netwerk kunt aansluiten. Dat verhoogt de betrouwbaarheid van de beeldoverdracht. Is er geen bekabelde netwerkaansluiting beschikbaar, dan verbind je deze beveiligingscamera net zo makkelijk met wifi. Gunstig is verder de ruime videoresolutie van 2560 × 1440 pixels. Daarnaast reikt de nachtzichtfunctie tot ongeveer twintig meter. Onder de productnaam G4P-W is er ook een witte uitvoering verkrijgbaar.

▼ Volgende artikel
Let op deze 5 dingen als je een elektrische deken gebruikt
© Alina Stor
Huis

Let op deze 5 dingen als je een elektrische deken gebruikt

Op koude dagen is er niets lekkerder dan jezelf op te krullen onder een warme elektrische deken. Maar pas op: het gebruik van een elektrische deken is niet zonder risico's. We geven je een aantal tips om brand en kortsluiting te voorkomen.

Elektrische dekens mogen dan wel heerlijk warm en zacht zijn, maar ze zijn niet altijd onschuldig. Zo kan er bij verkeerd gebruik kortsluiting en zelfs brand op de loer liggen. Maar hoe gebruik je een elektrische deken dan wél veilig? Dit artikel geeft 5 handige tips. 1. Niet opvouwen maar oprollen 2. Gebruik de timer 3. Verwijder de stekker uit het stopcontact 4. Vervang de deken op tijd 5. Plaats een rookmelder

Lees ook: ❄️ Koud hè? Zo vind je jouw perfecte elektrische deken

Als je denkt dat brand en kortsluiting door elektrische dekens een zeldzaamheid zijn, heb je het helaas mis. Zo'n tien keer per jaar ontstaat er brand door een elektrische deken die te warm wordt. En nog veel vaker zorgen elektrische dekens voor kortsluiting in huis. Zelfs als je een hoogwaardige deken van een betrouwbaar merk in huis haalt, kunnen dit soort ongelukken gebeuren. Iedere deken kan na verloop van tijd immers gaan slijten, en ook de elektrische bedrading kan om allerlei redenen kapotgaan. Wil je dus zo lang én veilig mogelijk genieten van je elektrische deken, houd dan de volgende tips in het achterhoofd.

🚩 Let op: er is een verschil tussen elektrische bovendekens en onderdekens. Een bovendeken gebruik je bijvoorbeeld op de bank om jezelf warm te houden. Een onderdeken leg je op je bed om je matras voor te verwarmen. Voor beide soorten elektrische dekens gelden andere veiligheidsadviezen.

Tip 1: Niet opvouwen maar oprollen

Veel mensen vouwen hun elektrische bovendeken na gebruik op, maar volgens de brandweer is het veiliger om de deken op te rollen. Door de deken op te vouwen, kunnen er namelijk knikken in de elektrische bedrading ontstaan, wat kan leiden tot kortsluiting. Ook de manier waarop je je elektrische deken opbergt is belangrijk. Dat wil zeggen: niet in een ruimte met een hoge luchtvochtigheid, niet in de buurt van vloeistoffen (pas dus op met glazen water naast de bank) én niet onder zware objecten, want ook die kunnen de bedrading in de deken beschadigen.

Voor een elektrische onderdeken, ofwel een deken die je op je matras legt, geldt dat je hem na het slapen weer zo glad mogelijk over je bed legt - dus zonder vouwen of opgepropte delen. Anders kan de warmte zich ophopen en wordt de deken bij het volgende gebruik mogelijk te heet. Berg je je onderdeken na ieder gebruik op? Ook dan geldt het advies om de deken op te rollen in plaats van te vouwen (lees hierboven) om de bedrading intact te houden.

Tip 2: Gebruik de timer

De meeste elektrische dekens (zowel onder- als bovendekens) hebben een automatische uitschakelfunctie om oververhitting te voorkomen. Bij sommige modellen houdt dat in dat de deken zich áltijd na een specifiek aantal uur (bijvoorbeeld twee of drie) uitschakelt, maar bij andere modellen is het de bedoeling dat je de timer zelf op een gewenst aantal minuten of uren instelt. Geldt dat laatste ook voor jouw deken, maak er dan een gewoonte van om de timerfunctie bij ieder gebruik in te schakelen, ook als je denkt dat dit niet per se nodig is. Hoe vaak gebeurt het niet dat je van de bank afspringt om 'even' de afwas te gaan doen, en vervolgens verzeild raakt in allerlei andere klusjes die nog op je to do-list stonden? Vergeet je daarna ook nog de deken uit te schakelen voordat je naar bed gaat, dan kan dat vervelende gevolgen hebben. Neem dus altijd het zekere voor het onzekere en gebruik de timer.

©Mariana Rusanovschi

Tip 3: Verwijder de stekker uit het stopcontact

Ook als jouw elektrische deken zich na verloop van tijd vanzelf uitschakelt, is het slim om de deken helemaal uit het stopcontact te halen als je hem niet gebruikt. Zolang de stekker in het stopcontact zit, bestaat er namelijk nog steeds een klein risico op oververhitting of kortsluiting. Dit is ook een stuk veiliger mocht de deken in contact komen met water of andere vloeistoffen. Heb je een elektrische onderdeken? Haal deze dan standaard uit het stopcontact wanneer je 's ochtends je bed opmaakt. Gebruik je een bovendeken op de bank, dan kun je door de dag heen even checken of de deken is losgekoppeld van het stopcontact.

Tip 4: Vervang je deken op tijd

Elektrische dekens gaan gemiddeld zo'n zeven jaar mee, maar dat geldt alleen als ze in de tussentijd niet beschadigd raken. Helaas zijn er veel manieren waarop een elektrische deken toch vroegtijdig schade kan oplopen, bijvoorbeeld als er vloeistoffen overheen worden gemorst, huisdieren aan de deken kauwen of krabben of als de deken niet juist wordt opgeborgen. Om er zeker van te zijn dat jouw elektrische deken nog helemaal naar behoren werkt en er geen scheuren of gaten in de stof zitten, is het belangrijk dat je de deken regelmatig even controleert. Ook als een elektrische deken de hele zomer opgevouwen in de kast heeft gelegen, kan het zijn dat de bedrading is beschadigd en dat de deken het niet meer goed doet. Zet je een elektrische deken na lange tijd weer aan, blijf er dan altijd even bij staan. Mocht het toch misgaan, dan ben je er in elk geval op tijd bij.

Tip 5: Plaats een rookmelder

Nog een tip van de brandweer: plaats een rookmelder in de ruimte(s) waarin je je elektrische deken gebruikt. Vooral in de slaapkamer is dit verstandig, zodat je bij rook of brand op tijd wordt gewekt. Met die gedachte in het achterhoofd zul je vast ook een stuk lekkerder slapen.


Ook lekker:

Voetenwarmers!