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 goede smartphones voor minder dan 200 euro
© ID.nl
Huis

Waar voor je geld: 5 goede smartphones voor minder dan 200 euro

Bij ID.nl zijn we gek op producten met een goede prijs-kwaliteitverhouding. Daarom speurt de redactie een aantal keer per week naar zulke deals. Nu de zomervakantie weer bijna ten einde is, gaan de kinderen weer naar school. Grote kans dat ze gaan vragen om een smartphone als ze die (nog) niet hebben. Wij vonden vijf goede smartphones voor onder de 200 euro.

Voor een goede smartphone betaal je tegenwoordig allang de hoofdprijs niet meer en heb je voldoende keuze uit het lagere, goedkopere segment. Vaak lever je wel iets in wat betreft opslagruimte, processorsnelheid of camera, maar daarentegen betaal je ook honderden euro's minder voor zo'n telefoon ten opzichte van de duurdere modellen. Wij vonden vijf goede toestellen voor niet meer dan 200 euro.

Xiaomi  Redmi  14C

De Xiaomi  Redmi  14C heeft een helder 6,88‑inch scherm, ideaal om video’s te kijken en te multitasken De telefoon wordt aangedreven door een octa‑core processor en met 8 GB RAM. De batterij van 5.160  mAh gaat moeiteloos de dag rond, en heeft een snellaadfunctie. Met een 50 MP hoofdcamera maak je scherpe foto’s in daglicht én nachtmodus. Dankzij de aluminium behuizing voelt de telefoon premium en stevig aan, en de vingerafdrukscanner én gezichtsherkenning maken ontgrendelen intuïtief en snel. Dit toestel blinkt uit in alledaags gebruik, zonder franjes, maar met veel waar voor je geld.

HMD Pulse Pro

De HMD Pulse Pro heeft verrassend veel te bieden. Met een 6,56-inch HD+ scherm en een soepele 90 Hz verversingssnelheid is het scherm vlot. Wat deze telefoon echt bijzonder maakt, is de dubbele 50 MP camera – zowel voor- als achteraan – waarmee je haarscherpe selfies en foto’s maakt, zelfs bij weinig licht. Binnenin vind je 6 GB RAM en 128 GB opslag, genoeg voor al je apps, foto’s en bestanden, en uitbreidbaar met een microSD-kaart. De krachtige 5.000 mAh-batterij houdt het makkelijk een dag vol. Leuk om te weten: dit toestel is ontworpen om makkelijk zelf te repareren – onderdelen en instructies zijn beschikbaar, wat ‘m niet alleen duurzaam, maar ook vriendelijk voor je portemonnee maakt.

Samsung Galaxy A16 5G

Deze Samsung ziet er luxer en duurder uit dan hij is, dankzij een helder AMOLED‑scherm en een strak en slim ontwerp. Wat je misschien niet verwacht: Samsung garandeert tot wel zes jaar software‑updates, waardoor hij toekomstbestendig is. Prestaties blijven wel op instapniveau, maar voor dagelijks gebruik zoals WhatsApp, web en video is het meer dan voldoende. De batterij houdt het prima vol. Voor wie betrouwbaarheid, goed merk en lange updates belangrijk vindt, is deze telefoon het overwegen waard.

Oppo A5 Pro 4G

De OPPO A5 Pro 4G is een budgettelefoon met een 6,67‑inch 90 Hz-scherm, 8 GB RAM en 256 GB opslagcapaciteit. De 5.800 mAh batterij gaat makkelijk een volle dag mee en ondersteunt snel laden. Wat deze telefoon echt onderscheidt is zijn robuuste bouw: waterdicht (IP68/IP69), valbestendig volgens militaire standaarden, en voorzien van Gorilla Glass 7i. Makkelijk stuk te krijgen is deze telefoon dus niet. Het geluid komt stevig door dankzij stereo speakers met Dolby Atmos. Al met al krijg je hier een stevig toestel met verrassend veel ruimte en functies voor een zachte prijs. Wel iets om rekening mee te houden: het toestel is alleen geschikt voor 4G. Dat signaal blijft echter nog een aantal jaar actief, dus je hoeft niet bang te zijn dat je te snel achterloopt. Je hebt alleen een wat lagere downloadsnelheid dan de meeste 5G-telefoons.

Motorola Moto G55  5G

Deze smartphone is stevig, heeft een gladde afwerking en is verkrijgbaar in een zachte tint grijs. Het scherm van 6,49 inch heeft 120 Hz beeldfrequentie en maakt video's streamen levendig dankzij de FHD+ resolutie. De batterij van 5.000 mAh houdt moeiteloos een hele dag stand, ook bij intensief gebruik. Voor wie van geluid houdt: dubbele speakers met Dolby Atmos creëren een ruimtelijk effect. De 50 MP-hoofdcamera levert heldere plaatjes in daglicht, en dankzij de ultrawide-lens kun je breder kaderen voor groepsfoto’s of landschappen. De 8 GB RAM en 256 GB opslag (uit te breiden met een extra microSD-kaartje) maken multitasken soepel en opslag ruimte genoeg.

▼ Volgende artikel
Zo verandert Samsungs Micro RGB hoe je straks tv kijkt
© Samsung
Huis

Zo verandert Samsungs Micro RGB hoe je straks tv kijkt

Samsung heeft de Micro RGB gepresenteerd, een 115 inch-televisie met een achtergrondverlichting van afzonderlijk aangestuurde rode, groene en blauwe leds van minder dan 100 micrometer. Volgens Samsung zet Micro RGB een nieuwe standaard voor kleurnauwkeurigheid, contrast en beeldervaring in het ultra-premium tv-segment.

Waar conventionele tv's gebruikmaken van grotere leds of mini-leds in witte of blauwe varianten, zet Micro RGB elke afzonderlijke rode, groene en blauwe led precies daar waar die nodig is. Dat maakt een veel fijnere aansturing van kleur en contrast mogelijk. Samsung claimt hiermee de volledige BT.2020-kleurruimte te halen, een standaard die tot nu toe vooral in professionele toepassingen werd gehaald. Het beeld zou daardoor natuurgetrouwer ogen, vooral bij HDR-weergave.

De Micro RGB wordt aangestuurd door een eigen AI-engine die elk beeldframe analyseert en automatisch kleuren, contrast en geluid optimaliseert. Bij matte of doffe beelden kan de tv kleuraccenten versterken zonder onnatuurlijk te ogen. Een Glare Free-laag moet ervoor zorgen dat ook in fel verlichte woonkamers het beeld goed zichtbaar blijft.

Voor consumenten kan deze techniek de opmaat zijn naar een nieuwe generatie huiskamertv's waarbij achtergrondverlichting met micrometer-RGB-leds zorgt voor kleurnauwkeurigheid die voorheen niet haalbaar was. In combinatie met lcd-panelen kan dit leiden tot betere prestaties in hoge helderheidsniveaus, waar zowel traditionele lcd- als oled-tv's soms tekortschieten.
Naast beeldkwaliteit richt Samsung zich ook op gebruiksgemak. De Micro RGB ondersteunt spraakbediening via Bixby, bevat Vision AI-functies die beeld en geluid aanpassen aan de content, en draait op Tizen OS met een gegarandeerde 7 jaar aan software-updates. Beveiliging van persoonlijke gegevens verloopt via Samsung Knox.

De Samsung Micro RGB verschijnt in Nederland op 13 oktober voor een adviesprijs vanaf 29.999 euro. Er komen later meerdere formaten beschikbaar.

Het verschil tussen Micro RGB en pure microled

Hoewel de naam anders kan doen vermoeden, is Micro RGB niet hetzelfde als een pure microled-tv. Bij microled geeft elke pixel zelf licht, vergelijkbaar met oled maar met hogere helderheid en zonder inbrandrisico. Micro RGB is daarentegen een lcd-tv, waarbij de achtergrondverlichting is opgebouwd uit extreem kleine rode, groene en blauwe leds van minder dan 100 micrometer. Deze leds schijnen door een lcd-paneel heen en worden per kleur afzonderlijk aangestuurd. Dit levert een veel nauwkeurigere kleurweergave op dan gebruikelijk is bij witte of blauwe leds, maar de beeldopbouw blijft die van lcd.

©Samsung