ID.nl logo
Programmeren in Python met ChatGPT - Deel 1
© Generative ART - stock.adobe.com
Huis

Programmeren in Python met ChatGPT - Deel 1

ChatGPT is een handige tool van OpenAI waaraan je allerlei vragen kunt stellen. Maar het is ook mogelijk om de slimme chatbot in je eigen programma’s in te zetten. In deze nieuwe reeks leren we je hoe je ChatGPT in Python gebruikt en zo teksten samenvat, informatie uit teksten haalt, teksten vertaalt of een eigen chatbot creëert.

In dit eerste deel zetten we alles op om ChatGPT in Python te kunnen gebruiken en zetten we de eerste stappen:

  • Eerst installeren we Python en Visual Studio Code
  • Dan regelen we de API-toegang
  • En dan gaan we aan de slag met onze eerste prompts

Lees ook: Haal betere resultaten uit ChatGPT met slimme prompts

ChatGPT is een chatbot met uitgebreide mogelijkheden. Je geeft instructies in een tekstvenster en krijgt een antwoord terug. Je kunt zelfs een hele conversatie voeren en extra vragen stellen. De tool is ontwikkeld door OpenAI en getraind op een grote dataset van teksten.

De dienst is gratis uit te proberen, maar je moet er wel voor aanmelden. Bezoek hiervoor de OpenAI-website en klik op Sign up. Voer een e-mailadres en een wachtwoord in, of meld je aan met een bestaand account bij Google, Microsoft of Apple. OpenAI stuurt een e-mail naar je opgegeven adres; klik op de link om je e-mailadres te bevestigen. Daarna vul je je naam en een mobiel telefoonnummer in. OpenAI stuurt een zescijferige code via sms naar je telefoon, die je op de website invoert om je account aan te maken.

Je bent nu aangemeld op de website, die vanaf nu ook te openen is via de pagina https://chat.openai.com. Je krijgt enkele voorbeelden te zien van vragen die je kunt stellen en een overzicht van de mogelijkheden en beperkingen. In het tekstveld onderaan begin je een conversatie met ChatGPT. Maar daarover gaat deze workshop niet, want we gaan die conversaties in onze eigen software integreren. Dat kan met hetzelfde account die je voor de website hebt aangemaakt.

Python installeren

In deze reeks van vijf workshops gaan we de mogelijkheden van ChatGPT gebruiken in onze eigen programma’s, die we schrijven in de programmeertaal Python. In macOS en Linux is Python al standaard geïnstalleerd. In Windows ga je naar de downloadpagina van Python en installeer je de nieuwste Python-versie.

Start het gedownloade installatieprogramma. In het installatievenster vink je Add python.exe to PATH aan. De optie Use admin privileges when installing py.exe staat standaard ook aangevinkt. Als dat niet hoeft, omdat je alleen met je huidige gebruikersaccount Python wilt gebruiken, zet dit dan gerust uit. Klik daarna bovenaan op Install Now. Klik in de laatste stap op Close. Na de installatie open je de Opdrachtprompt en typ je het volgende in om te testen of Windows de Python-opdracht herkent:

python --version

Je zou nu het versienummer van de geïnstalleerde Python te zien moeten krijgen.

Visual Studio Code

Om je programma’s te schrijven heb je een code-editor nodig. In deze workshop gebruiken we Visual Studio Code, een gratis en uitbreidbare code-editor van Microsoft die zowel op Windows, macOS als Linux draait. Klik links op de website op de blauwe knop Download for Windows - Stable Build. Wanneer de download is voltooid, voer je het installatieprogramma uit. Je kunt in de eerste stap een taal kiezen, maar helaas geen Nederlands. Accepteer de licentieovereenkomst en vink eventueel optionele acties aan.

Nadat je Visual Studio Code geopend hebt, klik je in de linkerzijbalk op het icoontje met de blokjes of je drukt op Ctrl+Shift+X om de Extensions Marketplace te openen. Installeer daar de uitbreiding Python van Microsoft. Deze zal je helpen met het schrijven van Python-code en maakt gebruik van de Python-installatie uit de vorige stap om je code uit te voeren.

API-toegang

Om nu vanuit onze eigen Python-code toegang tot ChatGPT te krijgen, moeten we eerst een API-sleutel aanvragen. API staat voor Application Programming Interface en is een set afspraken waarmee ons programma de diensten van OpenAI kan gebruiken. Elke keer dat we ChatGPT willen gebruiken in ons programma, moeten we die sleutel meegeven.

Meld je met je OpenAI-account aan op https://platform.openai.com en klik rechts bovenaan op je profiel. In het menu dat verschijnt, klik je op View API keys. Klik dan op Create new secret key, vul een naam in voor je sleutel en klik op Create secret key. Je krijgt dan je sleutel te zien, een lange reeks tekens.

Kopieer de sleutel en gebruik hem in de volgende paragraaf van deze workshop. Let op: nadat je op Done hebt geklikt, krijg je de sleutel nooit meer te zien; ben je de sleutel kwijt, dan moet je een nieuwe aanmaken.

Nieuwe accounts krijgen een klein bedrag gratis voor gebruik van de OpenAI-API. Nadien moet je in Billing betaalgegevens invullen.

Python-code

Klik nu in Visual Studio Code op File / New File… / Python File. Plaats hierin de volgende Python-code:

Met import openai importeren we de Python-module die OpenAI aanbiedt om de API te gebruiken. Tussen de aanhalingstekens na API_KEY plak je je eigen API-sleutel. DEFAULT_MODEL verwijst naar het taalmodel dat we willen gebruiken. Zie het kader ‘GPT-4’ als je het nieuwere taalmodel van ChatGPT wilt gebruiken.

Daarna maken we een hulpfunctie om gemakkelijker met de OpenAI-API te werken. Aan die functie geven we een prompt door (dat is de vraag die je stelt) en een optioneel model. De functie creëert dan een completion en haalt hieruit het resultaat. Op die manier kunnen we eenvoudig een prompt aan de functie doorgeven en het resultaat met print op de opdrachtregel tonen, zoals je in de laatste drie regels van dit Python-script ziet.

GPT-4 In deze workshopreeks maken we gebruik van GPT-3.5, het taalmodel dat ChatGPT standaard aanbiedt. Er is nog een betere versie, GPT-4. Op de website van ChatGPT krijg je hier toegang tot wanneer je een ChatGPT Plus-abonnement hebt (dat kost ca. 23 euro per maand), zij het met een beperking op het aantal boodschappen per uur.

Maar dat account staat los van de toegang tot GPT-4 via de OpenAI-API. Hiervoor moet je je inschrijven op een wachtlijst. Wanneer je toegelaten bent, kun je in de OpenAI-API GPT-4 gebruiken door in je Python-code het model gpt-3.5-turbo te vervangen door gpt-4.

Let op: het gebruik van GPT-4 kost je een factor tien meer dan dat van GPT-3.5. Bekijk zeker de pagina met prijzen van OpenAI en bezoek regelmatig de pagina Usage in je OpenAI-profiel. Voor de zekerheid kun je ook een gebruikslimiet instellen.

Eerste API-gebruik

Sla het codebestand uit de vorige paragraaf in Visual Studio Code op met Ctrl+S en geef het een naam. Klik dan op Terminal / New Terminal, waarna er onder je code een nieuw deelvenster opent met een opdrachtprompt. Typ hierin de volgende opdracht om de OpenAI-module voor Python te installeren:

pip install openai

Klik na de installatie rechts bovenaan op het afspeelknopje (het driehoekje met als je er met je muis boven blijft hangen de tooltip Run Python File). Als alles goed gaat, krijg je nu in de terminal een antwoord op de vraag die je in de variabele prompt in je code hebt gezet.

Tokens

Een belangrijk concept bij gebruik van de OpenAI-API zijn tokens. Een token is een vaak voorkomende opeenvolging van tekens, zoals letters, cijfers of leestekens. Hier kun je zelf zien uit welke tokens een ingevoerde tekst bestaat.

Het taalmodel produceert token na token, gebaseerd op de kans dat ze na de vorige tokens komen. Een token kan een volledig woord of een deel van een woord zijn. Voor Engelse tekst komen 100 tokens ruwweg met 75 woorden overeen. Standaard genereert ChatGPT en dus ook ons Python-script een antwoord met zoveel tokens als er nodig zijn, maar je kunt dit inperken door de parameter max_tokens toe te voegen. De aanroep van openai.ChatCompletion.create ziet er dan als volgt uit:

Dat aantal tokens is belangrijk, omdat je voor het gebruik van OpenAI-API betaalt per token. Voor veelvuldig geautomatiseerd gebruik van de API kan het dus de moeite zijn om een maximum aantal tokens in te stellen. Overigens levert dit wel vaak een antwoord op dat bruusk afgebroken is.

Parameters

Als je het Python-script uitvoert, zul je merken dat het altijd hetzelfde antwoord geeft. Dat is omdat we de parameter temperature de waarde 0 gegeven hebben. Je kunt deze parameter een waarde van 0 tot 2 geven, waarbij 0 betekent dat het antwoord elke keer hetzelfde is en hogere waardes een willekeuriger antwoord opleveren. Als je de waarde niet instelt, staat ze op 1, wat redelijk wat variatie tot gevolg geeft. Probeer het effect van de parameter maar eens uit door de parameter temperature in je code enkele andere waarden te geven en je script meerdere keren uit te voeren.

Twee andere parameters (die we hier niet hebben gebruikt) zijn presence_penalty en frequency_penalty. Beide hebben een standaardwaarde 0 en kunnen variëren van -2 tot 2. Met een positieve presence_penalty verlaag je de kans dat al gebruikte tokens nog eens in de tekst voorkomen. Dat verhoogt de kans dat het model over nieuwe onderwerpen begint. Met een positieve frequency_penalty wordt de kans dat een token gebruikt wordt verlaagd naarmate hij al vaker is gebruikt. Dat verlaagt dus concreet de kans dat het model een zin letterlijk herhaalt.

In de praktijk pas je deze twee parameters niet zo vaak aan. Ze zijn wel nuttig als je merkt dat het model voor specifieke vragen wat repetitieve antwoorden geeft. Probeer dan beide parameters eens op een waarde tussen 0,1 en 1 te zetten om die herhaling wat te verminderen.

Maak je prompts specifieker

Net zoals bij het gebruik van ChatGPT op de website zijn de resultaten bij het gebruik van de API bruikbaarder wanneer je je prompts zo specifiek mogelijk maakt. Een eerste tip is dat je gewoon aangeeft hoe lang de tekst moet zijn. Bijvoorbeeld met de volgende prompt:

prompt = "Beschrijf het magazine Computer Idee in maximum 50 woorden"

Dat geeft doorgaans een beter resultaat dan de parameter max_tokens, omdat de tekst dan tenminste niet bruusk wordt afgekapt. Maar omdat het taalmodel geen woorden kan tellen en intern met tokens werkt, kan de opgegeven limiet weleens overschreden worden. Je moet dit dus altijd nog zelf testen als de opgegeven limiet belangrijk is. Toon bijvoorbeeld het aantal woorden in de uitvoer met de volgende regel op het einde van het Python-bestand:

print("Aantal woorden:", len(response.split(" ")))

Vraag om een specifiek format

Een andere manier om je prompts specifieker te maken, is dat je het taalmodel vraagt om zijn antwoord in een specifiek format te geven. Bijvoorbeeld met:

Met de drie aanhalingstekens maken we een multi-line-string in Python aan, waardoor we eenvoudig een prompt over meerdere regels kunnen spreiden voor wat meer overzicht. En het antwoord van ons script is nu ook kernachtiger en duidelijker.

Vermijd hallucinaties

Taalmodellen hebben de neiging om antwoorden te verzinnen als ze kennis missen over je vraag. Stel je bijvoorbeeld de vraag om het magazine Computer Power te beschrijven (dat niet bestaat!), dan verzint ons script een Belgisch tijdschrift met die naam. Deze neiging noemen we ‘hallucinaties’ en je moet hier altijd beducht op zijn, ook bij het gebruik van ChatGPT op de website.

Je kunt die neiging wel wat afzwakken door in je prompt expliciet te zeggen wat het taalmodel moet doen als het niet voldoende informatie heeft:

prompt = "Beschrijf het magazine Computer Power in maximum 50 woorden. Als je niets over het magazine weet, zeg dit dan."

Daarop antwoordt ons script dat het dit magazine niet kent, maar dat het waarschijnlijk over computers en technologie gaat.

Meer informatie

Wil je meer weten over het gebruik van de OpenAI-API, lees dan de ‘API reference’ op de website van OpenAI, en dan specifiek die van ChatCompletion. Hier vind je meer informatie over de verschillende parameters.

En wil je meer leren over hoe je het meeste uit de taalmodellen haalt met de juiste prompts, bekijk dan zeker het webinar ChatGPT Prompt Engineering for Developers van DeepLearning.AI, dat we hebben geraadpleegd bij het schrijven van deze workshopreeks.

Andere programmeertalen In deze workshopreeks gaan we aan de slag met de OpenAI-API in Python, maar OpenAI biedt naast zijn Python-module ook een officiële bibliotheek voor Node.js (JavaScript) aan op de pakketbeheerder npm. Die is vergelijkbaar met de Python-module die we in dit artikel introduceren. Dus als je liever in JavaScript programmeert, zou je deze workshopreeks met wat kleine aanpassingen ook moeten kunnen volgen.

Daarnaast zijn er ook allerlei bibliotheken voor andere talen ontwikkeld door derden. Dus als je graag in C# programmeert, in Java of in Swift, kun je zeker ook gebruikmaken van de OpenAI-API. In de documentatie van OpenAI staat een lijst van bibliotheken die de API gebruiken.

Volgende week maandag het tweede deel van deze reeks! We gaan hierin de kennis uit dit eerste deel toepassen om teksten te laten samenvatten door een taalmodel.

Vervolg: Deel 2: Programmeren in Python met ChatGPT

▼ Volgende artikel
Veilig Google Docs en Sheets delen met anderen
Huis

Veilig Google Docs en Sheets delen met anderen

Googles online tekst- en spreadsheet-bewerkers zijn een fijne, gratis alternatief voor Microsofts Office-suite. De mogelijkheden zijn vrijwel net zo uitgebreid. Het delen en samenwerken in bestanden is misschien nog wel makkelijker dan bij Word en Excel, maar er zijn wel wat dingen waar je op moet letten voor je ongebreideld bestanden gaat delen.

In dit artikel lees je:

  • Hoe je Google Docs en Sheets deelt met anderen
  • Waar je op moet letten
  • Hoe je je documenten beveiligt

Ook interessant: Repetitief werk? Met templates maak je het jezelf zo veel makkelijker

Google Docs en Sheets

Google Docs, ook wel Documenten, is Googles tegenhanger van Microsoft Word, terwijl Sheets een concurrent voor Excel is. Anders dan bij Office-programma's werken Googles diensten in de cloud. De offline-functies zijn echter ook prima, en je kunt de tools prima gebruiken zonder internetverbinding. Het fijne aan dit cloud-first-idee is dat je in principe altijd en overal bij je bestanden kunt, en je niet vooraf hoeft te plannen wanneer en waar je je bestanden wilt openen. 

Back-up maken van bestanden

Voor je bestanden gaat delen, is het handig om eerst een back-up te maken van het te delen bestand, helemaal als je van plan bent om bepaalde mensen - of iedereen met de deellink - bewerkingsrechten te geven. 

Een back-up maken van een Docs- of Sheets-bestand is simpel genoeg. Open het document, ga in de menubalk bovenaan naar Bestand en klik op Kopie maken. Geef je kopie een naam, of laat de huidige naam staan. Het vinkje bij Delen met dezelfde mensen kan handig zijn, maar die wil je nu juist uit laten, als je het bestand al met iemand hebt gedeeld. Klik op Een kopie maken, en het bestand staat nu als los document in je map. 

Werk je veel met teksten en spreadsheets?

Investeer in een fijne muis: je pols is je dankbaar!

Bestand delen

Nu kun je originele bestand daadwerkelijk gaan delen. Klik op de grote Delen-knop rechtsboven. Standaard staat een bestand op Alleen voor jou, met de dropdown op Beperkte toegang. Via de adresbalk bovenaan kun je specifieke mensen uitnodigen - ze hoeven niet per se een Google-account te hebben, je kunt elk e-mailadres invullen. 

Via de dropdown onderaan kun je het bestand ook openstellen voor iedereen die de link heeft. Vanzelfsprekend moet je hier voorzichtig mee omspringen, want je hebt zelf weinig invloed op waar de link allemaal terechtkomt. 

Heb je iemand toegevoegd of heb je de link opengesteld, dan zie je een extra dropdown verschijnen, die standaard op Kijker staat. Zet je die op Reageerder, dan kunnen mensen reacties achterlaten in het document; met Bewerker krijgen ze volledige edit-rechten. Vandaar de back-up die we eerder hadden gemaakt: iemand kan per ongeluk (of expres!) het hele document wissen, zonder dat je er zelf nog veel aan kunt doen. 

Docs.new

Werk je veel met documenten, spreadsheets en presentaties, dan heeft Google een handige shortcut ingebouwd die je op de lange termijn veel tijd kan schelen. Je kunt namelijk direct een nieuw bestand openen zonder eerst naar de homepage van Google Docs te gaan. Dat doe je door docs.new in je adresbalk te typen en op Enter te drukken. Nu opent direct een nieuw Google-document. Hetzelfde geldt voor Sheets (sheets.new), Presentaties (slide.new) en Formulieren (form.new). 

Wachtwoord instellen?

Vreemd genoeg biedt Google geen optie om bestanden te beveiligen met een wachtwoord, al kan een wachtwoord natuurlijk net zo makkelijk gedeeld worden als een link. Wat je wel kunt doen, is een bestand maken in Word en Excel, daar een wachtwoord op zetten, en dat bestand vervolgens importeren in Google Docs of Sheets. 

Het is een wat omslachtige manier, en veel meer beveiliging dan een downloadlink biedt het niet, maar het is een optie. 

Tot slot

Bestanden delen via Google Docs of Sheets is nog makkelijker dan via Microsoft Word of Excel, je moet alleen wel even weten wat je doet. Zorg ervoor dat je niet meer mensen toegang geeft dan nodig, deel de openbare link alleen als je de mensen met wie je samenwerkt vertrouwt, geef niet zomaar iedereen bewerkingsrechten, en vergeet vooral geen back-up te maken, zodat je altijd een originele versie van het bestand in je persoonlijke Drive hebt staan.


▼ Volgende artikel
Review Motorola Moto G35 – Begrijpelijke compromissen
© Wesley Akkerman
Huis

Review Motorola Moto G35 – Begrijpelijke compromissen

Een toestel als de Motorola Moto G35 kan laten zien hoe goed een smartphone-ervaring kan zijn, zelfs als je er minder dan 200 euro voor betaalt. Dit model heeft een adviesprijs van 179 euro en biedt daarvoor een aantal mooie eigenschappen aan.

Goed
Conclusie

Onderaan de streep doet de Motorola Moto G35 weinig fout, dus kun je hem prima meenemen in je overweging. De processor houdt hier en daar je input niet helemaal bij, maar dat is eigenlijk het grootste struikelblok, zeker gezien de prijs. Dat kan overigens ook voor problemen met HDR-content zorgen, aangezien die meer van een systeem vraagt. We zijn echter wel van mening dat de Samsung Galaxy A15 iets meer voor hetzelfde geld aanbiedt, helemaal als het gaat om het updatebeleid. Maar de Moto G35 is allesbehalve een slechte smartphone.

Plus- en minpunten
  • Mooi scherm
  • Strak ontwerp
  • Groothoeklens
  • Prijs
  • Accuduur
  • Updatebeleid
  • Camerakwaliteit
  • Werkgeheugen

Net zoals bij seriegenoot Moto G55 kunnen we het ontwerp en de gekozen materialen voor de behuizing waarderen. De Motorola Moto G35 oogt strak en ligt lekker in de hand. Hij glijdt er bovendien niet snel uit, vanwege het polycarbonaat op de achterkant. Het toestel is niet waterdicht, maar is wel waterafstotend – dat is tenminste iets. Verder waarderen we het lage gewicht van 188 gram, de koptelefoonaansluiting onderop en de vingerafdrukscanner in de powerknop. De G35 voelt derhalve compleet aan, in elk geval op het gebied van hardware.

De Moto G35 heeft een aantal overeenkomsten met de 70 euro duurdere Moto G55. Zo heeft het riante lcd-scherm van 6,72 inch veel dezelfde eigenschappen. De (HDR-)kleuren en het contrast ogen mooi, maar de kijkhoek is niet fraai. De maximale helderheid ligt lekker hoog, waardoor je op zonnige dagen goed ziet wat er gebeurt. Daarnaast is er een hoge resolutie (1080 × 2400 pixels) en verversingssnelheid van 120 Hertz. Ook dit model heeft helaas last van die goedkoop ogende luchtlaag en bijbehorend schaduwspel aan de randen.

©Wesley Akkerman




©Wesley Akkerman




©Wesley Akkerman

Begrijpelijke keuzes

Onder de motorkap zit de relatief onbekende Unisoc T760-processor, die qua prestaties net iets achterloopt op de cpu van de Sony Xperia 10 VI (de Snapdragon 6 Gen 1). Als je bedenkt dat de Sony twee keer zo duur is, dan is dat helemaal niet verkeerd voor de prijs.

In tegenstelling tot de Moto G55 merken we soms dat het scherm te snel wil voor de processor. Dat merk je tijdens het scrollen. Het kan daardoor zijn dat het display, ondanks die hoge verversingssnelheid, schokt. Ook hebben apps soms wat tijd en ruimte nodig om op gang te komen.

Dat valt een beetje tegen, maar hoort bij deze prijsklasse. Datzelfde geldt voor de hoeveelheid werkgeheugen en opslagruimte, die 4 en 128 GB bedragen. De eerste is echt het minimale voor een Android-apparaat, terwijl de tweede niet meer van deze tijd is gezien de ruimte die we nodig hebben, maar gelukkig kun je die uitbreiden met een micro-SD-kaart. Het updatebeleid is ook niet te scherp, maar voor minder dan 200 euro begrijpelijk. Je krijgt in twee upgrades en drie jaar aan updates. De vergelijkbare Samsung Galaxy A15 doet dat beter met vier en vijf jaar.







Groothoeklens in dit prijssegment?

Net zoals bij de Moto G55 beschikt de Motorola Moto G35 over een hoofdlens van 50 megapixel. Gezien de prijs zijn we iets vergevingsgezinder en willen we graag benadrukken dat het toestel kleurrijke en redelijk gebalanceerde foto's maakt. Echter, het ontbreekt her en der wel een detail. Daarvoor ogen de beelden helaas te wazig, ondanks de autofocus. Avondfotografie is helaas niets om over naar huis te schrijven, aangezien details nog meer opgaan in de achtergrond dan overdag. Als je hier dus een foto mee maakt, doe dat dan in goed verlichte omgevingen.

Wat de Motorola Moto G35 redelijk uniek maakt, is de toevoeging van een groothoeklens. Die komen we niet vaak tegen op toestellen voor minder dan 200 euro. Hoewel we over het algemeen de resultaten van deze cameralens een voldoende willen geven, moet je wel rekening houden met een aantal vervelende zaken. De beelden ogen soms onscherp, een beetje korrelig en ook de kleuren komen niet helemaal overeen met de werkelijkheid. Houd het dus lekker op de hoofdcamera voor wanneer je foto's maakt, voor zowel ver weg als heel dichtbij.







Motorola Moto G35 kopen?

Ook de Motorola Moto G55 biedt een accu met een totaalvermogen van 5000 mAh aan. Door de niet al te krachtige processor kun je er daarom van uitgaan dat je hem meer dan een dag kunt gebruiken zonder hem te hoeven opladen. Soms zelfs twee dagen, als je rustig aan doet. Opladen gaat niet ontzettend snel met maximaal achttien watt, waardoor het al snel meer dan twee uur kan duren voordat de batterij weer vol is. De oplader moet je overigens zelf even regelen, omdat die, volgens Europese regels, niet meer in de doos verpakt wordt.

Onderaan de streep doet de Motorola Moto G35 weinig fout, dus kun je hem prima meenemen in je overweging. De processor houdt hier en daar je input niet helemaal bij, maar dat is eigenlijk het grootste struikelblok, zeker gezien de prijs. Dat kan overigens ook voor problemen met HDR-content zorgen, aangezien die meer van een systeem vraagt. We zijn echter wel van mening dat de Samsung Galaxy A15 iets meer voor hetzelfde geld aanbiedt, helemaal als het gaat om het updatebeleid. Maar de Moto G35 is allesbehalve een slechte smartphone.