ID.nl logo
Programmeren in Python met ChatGPT - Deel 5
© Limitless Visions - stock.adobe.com
Huis

Programmeren in Python met ChatGPT - Deel 5

In de vorige delen van de workshopreeks over de OpenAI-API hebben we teksten samengevat, vertaald en er informatie uit gehaald. Dat bleef telkens beperkt tot één vraag en één antwoord. In dit laatste deel gaan we een stap verder: je gaat in je eigen Python-programma’s volwaardige conversaties voeren met het taalmodel van ChatGPT.

In dit laatste deel laten we zien dat je in Python een conversatie met ChatGPT kunt voeren.

  • We breiden de basiscode uit met 'messages'
  • We creëren een spelpersonage

Lees ook: Babbelen met bijdehante bots: er is meer dan ChatGPT

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-dl5.txt is beschikbaar via deze webpagina.

Je weet ondertussen hoe je in je Python-programma’s een vraag aan ChatGPT stelt via de OpenAI-API. We hebben dit in de vorige vier delen van deze workshopreeks geïllustreerd met talloze toepassingen. Maar onze programma’s hadden daarbij telkens dezelfde structuur: je stelt een vraag (de prompt), je krijgt een antwoord (de completion) en dan stopt de interactie.

Als je al eens van ChatGPT gebruikgemaakt hebt op de OpenAI-website, weet je dat je er ook volledige conversaties mee kunt voeren. Die mogelijkheid gaan we nu ook in onze eigen Python-programma’s inbouwen. In plaats van een klassieke, beperkte interface met invoer in een vast patroon, creëer je zo een conversationele interface. 

Basiscode

In de vorige delen van deze reeks maakten we altijd gebruik van een basisfunctie get_completion waaraan we een gebruikersprompt en eventueel een systeemprompt gaven, met optioneel ook een model. Die functie stuurde de prompt(s) door aan de OpenAI-API en gaf het antwoord terug.

Om een conversatie te voeren, moet het taalmodel toegang tot de hele context hebben, met de vorige boodschappen die het taalmodel en jij hebben uitgewisseld. Daarom maken we in dit deel een nieuwe hulpfunctie: get_completion_from_messages. Daaraan geef je de hele geschiedenis van boodschappen door. Onze basiscode ziet er dan als volgt uit:

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

Klik daarom in Visual Studio Code op File / New File en kies Python File. Plaats daarin de voorgaande Python-code. De API-sleutel moet je zelf aanmaken in je account bij OpenAI, net zoals in de vorige delen van deze workshopreeks.

Google Nest Mini

Een apparaat dat ook luistert naar wat jij te zeggen hebt

Rollen

Waaruit bestaan die boodschappen nu? Het argument messages dat we aan de functie get_completion_from_messages moeten doorgeven, is een lijst van Python-dictionary’s, een datastructuur die sleutels en waardes heeft. Elke dictionary in de lijst messages heeft twee sleutels: "role" en "content". De eerste beschrijft de rol van de boodschap in de conversatie en de tweede de inhoud (de tekst).

De OpenAI-API kent drie rollen: system, user en assistant. Een boodschap met de rol system beschrijft een systeemprompt. Zoals we in de vorige delen uitlegden, geeft een systeemprompt algemene instructies aan het taalmodel. Een boodschap met de rol user beschrijft een vraag van de gebruiker. En een boodschap met de rol assistant beschrijft een antwoord van het taalmodel.

Een conversatie met de OpenAI-API kan er dan in Python als volgt uitzien in de vorm van boodschappen met een rol en inhoud:

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

Voeg deze lijst aan je code toe. Daarna kun je aan de OpenAI-API vragen om de conversatie in deze boodschappen voort te zetten:

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

Sla dit bestand 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. Klik rechts bovenaan 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 antwoord als “Voor het geval dat de cloud gaat regenen!”.

Met deze kennis over de rollen weet je nu ook waarom er in de laatste regel van de functie get_completion_from_messages (en de functie get_completion die we in de eerdere workshops gebruikten) response.choices[0].message["content"] staat. Het stukje message["content"] geeft de tekst van het antwoord van het taalmodel terug. Als je message["role"] in die functie zou tonen, zou je "assistant" te zien krijgen.

Aan ChatGPT is geen originele komiek verloren gegaan.

Wat onthoudt de chatbot?

Je hebt gezien dat elke conversatie die je met het taalmodel voert, bestaat uit een lijst van boodschappen. Het taalmodel houdt rekening met alle informatie die in deze boodschappen te vinden is. Vertel je bijvoorbeeld in één boodschap je naam, dan kun je daar in een van de boodschappen erna naar vragen en kan het taalmodel daar perfect op antwoorden. Vervang de lijst messages uit het vorige voorbeeld maar eens door deze lijst en voer het programma uit:

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

De conversatie is eenvoudig. Het taalmodel krijgt de instructie dat het een vriendelijke chatbot is. Daarna stelt de gebruiker zich voor en vraagt het taalmodel wat het kan doen. De gebruiker vraagt dan wat zijn naam is.

Als je dit programma uitvoert, zul je zien dat het taalmodel de naam heeft onthouden. Je krijgt dan immers een antwoord als: “Je naam is Koen. Dat heb je net verteld! Is er nog iets specifieks waar je meer over wilt weten?”

In een andere conversatie waarin je je naam niet vertelt, zal de chatmodel niet op de vraag kunnen antwoorden wat je naam is. Deze conversatie bijvoorbeeld:

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

Dan krijg je als antwoord iets als: “Sorry, maar ik ben een chatbot en heb geen toegang tot persoonlijke informatie. Ik ken je naam niet.”

Het is belangrijk om te weten dat elke conversatie die je met het taalmodel voert volledig losstaat van de andere. Dat je eerder je naam verteld hebt in de andere conversatie, is geen informatie die in de nieuwe conversatie beschikbaar is. Het taalmodel kent alleen de algemene informatie waarop het is getraind en de lijst met boodschappen die je eraan doorgeeft. 

Conversaties voeren

Hierboven hebben we de boodschappen in de programmacode gezet. Maar we willen de gebruiker zelf invoer laten geven. Hoe doen we dat? Met nog een extra hulpfunctie, die de lijst met boodschappen opbouwt en telkens nieuwe invoer vraagt en de uitvoer toont. Dat doen we door de basiscode uit te breiden met:

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

Als je dit programma uitvoert, kun je een vraag intypen en met een druk op Enter doorsturen. De functie converse voegt je vraag als prompt toe aan de lijst met boodschappen in de variabele context. Ook het antwoord van het taalmodel voegt de functie aan de lijst toe en dat antwoord wordt getoond. We blijven in een oneindige lus (met while True) de functie oproepen, waarbij de context telkens wordt uitgebreid met je vraag en het antwoord. Daardoor onthoudt het taalmodel de voorgaande boodschappen en kunnen we een echte conversatie voeren.

Het taalmodel onthoudt zaken die je in eerdere boodschappen hebt verteld.

Conversationele interface

We hebben nu in wezen een eenvoudige interface voor ChatGPT gebouwd in een terminalvenster. Maar we willen hier een conversationele interface van maken om op een gebruiksvriendelijke manier invoer voor een groter programma te verkrijgen. Als voorbeeld nemen we een computerspel, waarbij je in het begin je spelpersonage moet ontwerpen.

Pak een momentje van ontspanning

Met je favoriete spelpersonage

Een spelpersonage bestaat uit enkele eigenschappen, zoals naam, vaardigheid, uitrusting en ras. Het spel zou je dat allemaal in een formulier kunnen laten invullen, maar waarom niet in een conversatie? Dat gaan we in de rest van dit artikel programmeren. Als eerste stap moeten we dus een uitgebreide systeemprompt creëren die de conversatie kadert:

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

Ja, de systeemprompt moet echt zo lang zijn. Als we niet expliciet zeggen wat de chatbot wel en niet mag doen, krijgen we uiteindelijk niet wat we willen: een JSON-string met de eigenschappen van het personage. 

Doet je programma niet wat het moet doen? Zodra je een taalmodel in je programma integreert, ben je afhankelijk van de grillen van het taalmodel. Het is een zwarte doos, waarvan je niet weet hoe het exact werkt en wat het doet. Dat contrasteert heel sterk met de ijzeren logica van een programmeertaal als Python. Het is dus goed mogelijk dat het programma van dit artikel niet doet wat je wilt, omdat je een net iets andere invoer geeft dan verwacht of omdat OpenAI ondertussen zijn taalmodel een update heeft gegeven die zich anders gedraagt. Je zult dus waarschijnlijk continu je programma moeten testen en de systeemprompt moeten finetunen, zodat het gewenste gedrag behouden blijft. Dat is het nadeel van de flexibiliteit van een taalmodel in je programma’s te integreren.

JSON

Een groot deel van onze systeemprompt bestaat uit instructies om de uiteindelijke keuzes van de gebruiker in de vorm van JSON (JavaScript Object Notation) te geven. Waarom is dat zo belangrijk? Omdat we de rest van ons programma alleen met gestructureerde gegevens kunnen laten omgaan, niet met tekst.

Dus als de gebruiker in een conversatie met onze assistent een speler met de naam Born heeft gekozen, die een orkenschurk is met een boog, dan moet ons programma dit uiteindelijk in de volgende vorm kunnen inlezen:

Converseren naar een doel

Het doel van onze conversatie is dus dat we uiteindelijk een JSON-string als hierboven krijgen, zodat het programma verder kan en we het spel kunnen spelen. We kunnen onze conversatie dus laten stoppen wanneer de uitvoer van de assistent een geldige JSON-string is.

Om JSON in Python te gebruiken, importeer je eerst de gelijknamige bibliotheek helemaal in het begin van het programma:

import json

Daarna komt onze basiscode en de systeemprompt met de uitgebreide instructies van hierboven, en daarna creëren we de volgende functie converse:

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

Deze functie vraagt dus invoer van de gebruiker, voegt die aan de context toe en stelt de vraag aan de OpenAI-API. Het antwoord van de assistent voegen we aan de context toe.

Daarna probeert de functie om het antwoord van de assistent als een JSON-object in te laden. Lukt dat, dan geeft de functie dit JSON-object terug. Lukt dat niet, dan geeft Python de foutmelding json.decoder.JSONDecodeError terug en reageren we daarop door gewoon het antwoord van de assistent te tonen. Het is dan immers niet het laatste antwoord met de gestructureerde data in JSON-vorm, maar een vraag. In dat geval geeft de functie None terug, omdat de data nog niet volledig zijn.

Gestructureerde data

Hoe maken we nu van die functie converse gebruik? Dat doen we met de volgende code:

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

We initialiseren eerst de variabele properties door ze de waarde None te geven. Dan tonen we de eerste boodschap van de assistent, waarin we de gebruiker naar de naam van het spelpersonage vragen.

Daarna roepen we de hele tijd de functie converse met de context aan, zolang de waarde die deze functie teruggeeft None is. Zoals we in die functie gezien hebben, geeft ze een JSON-string terug als de assistent JSON-data teruggeeft en anders None. Als de assistent de instructies correct volgt (zie het kader “Doet je programma niet wat het moet doen?”), stopt de conversatie dus wanneer de data volledig zijn.

Op dat moment wordt de code na het while-blok uitgevoerd. We kunnen nu de eigenschappen van het spelpersonage op een gestructureerde manier uit het JSON-object properties halen. We tonen ze hier één voor één. Uiteraard zou je nog wat controles moeten uitvoeren, zodat er geen ongeldige waardes in staan wanneer het taalmodel niet goed werkt. Maar dat is een oefening voor de lezer!

Onze spelassistent weet dat we met ‘human’ een mens bedoelen en met ‘staf’ een toverstaf, maar negeert in dit geval ons verbod om begeleidende tekst bij de JSON-string te geven.

Lees ook:

▼ Volgende artikel
Dit zijn dé tuinklussen om te doen in april
© Leika production
Huis

Dit zijn dé tuinklussen om te doen in april

Het heeft even geduurd, maar de winter is eindelijk (zo goed als) voorbij. De zomertijd is ingegaan, 's morgens vroeg hoor je de vogels weer en de zon zien we ook steeds vaker. Tijd dus om lekker veel buiten te zijn om je tuin helemaal zomerklaar te maken. Dit zijn de tuinklusjes die je in april allemaal kunt doen.

Dit doe je in april: 🌻 Planten afharden 🌻 Rozen, bodembedekkers en zomerbollen planten 🌻 Heggen snoeien en bemesten 🌻 Meeldauw voorkomen en bestrijden 🌻 Het gazon: maaien, bijzaaien en bemesten

📆Handig: onze tuinkluskalender voor heel het jaar rond

Planten afharden

Planten die je in de afgelopen maanden binnen hebt gehouden, kun je nu langzaam laten wennen aan de lagere buitentemperaturen. Begin in de tweede helft van april door ze overdag buiten te zetten en 's avonds weer naar binnen te halen, bijvoorbeeld in de schuur of garage. Hoewel de lente begonnen is, kunnen de nachten nog koud zijn, zeker omdat de IJsheiligen nog niet voorbij zijn. Sommige nachten kan het zelfs nog vriezen. Geef kuipplanten een meststof met langdurige werking, zodat ze voldoende voeding hebben voor de komende maanden. Bescherm eenjarige planten, jonge gewassen en bloesembomen tegen nachtvorst met een vliesdoek.

Rozen, bodembedekkers en zomerbollen planten

Heb je nog geen rozen of heesters geplant? Dan is dit het moment om dat alsnog te doen, zodat ze deze zomer in volle bloei staan. Is het lekker weer in april? Op zonnige dagen kun je ook heiligenbloem of lavendel in de grond zetten. Zorg er wel voor dat je eerst onkruid verwijdert en de bodem losmaakt.

Wil je borderplanten aanplanten? Begin dan met bodembedekkers. Dit is bovendien een ideaal moment om de beplanting een voedingsboost te geven met mest. Heb je in maart eenjarige, tweejarige of vaste planten binnen gezaaid? Dan kun je ze nu voorzichtig verpotten. Nog niet gezaaid? Dat kan nog steeds.

Vanaf half april is het ook een goed moment om zomerbollen te planten. Denk aan lelies, dahlia's, siergember, canna's en gladiolen. Bloembollen die meerdere jaren in de grond blijven, geef je extra voeding met organische mest en een laagje compost. Wil je direct meer kleur in de tuin? Zet dan bakken en potten vol met bloeiende planten. Die zijn nu volop verkrijgbaar bij tuincentra.

🧄🌷🧄🌷 De zomer(bollen) in je hoofd?

Kijk & kies

©Alexander Raths

Heggen en klimplanten

Haal de heggenschaar maar tevoorschijn, want dit is het moment om hagen zoals taxus, conifeer, liguster en leylandii te snoeien. Zo houd je ze in vorm en voorkom je dat ze te breed uitgroeien. Geef de hagen meteen een speciale haagmeststof en leg een laag bodembedekking, houtsnippers of mulch rondom de wortels. Dit helpt de grond vocht vast te houden in de zomer en verbetert de bodemstructuur. Bovendien remt het de groei van onkruid.

Dunne en dode takken in heesters kun je nu ook verwijderen. De hoofdtakken mag je flink terugsnoeien om de struik voller te laten groeien. Dit geldt ook voor winterjasmijn en forsythia, die na de bloei een snoeibeurt kunnen gebruiken. Winterbloeiende heide knip je eenvoudig terug met een heggenschaar. Vergeet niet om klimplanten, zoals clematis, goed vast te zetten. Het kan deze maand namelijk nog flink waaien.

Meeldauw voorkomen en bestrijden

Meeldauw is een plantenziekte die wordt veroorzaakt door een schimmel. Vooral bij warm en droog weer, in combinatie met vochtige nachten door dauw, kan deze ziekte zich snel verspreiden. De schimmel laat een wit, poederachtig laagje achter op de bladeren. Dit is niet alleen lelijk, maar ook schadelijk. De schimmel dringt diep door in het plantenweefsel en onttrekt voedingsstoffen, waardoor de plant minder goed groeit. Rozen, ridderspoor, kamperfoelie, begonia's, aardbeien, tomaten, komkommers, courgette en druiven zijn extra gevoelig voor meeldauw.

Om meeldauw te voorkomen is het belangrijk om bij droog weer extra water te geven en ervoor te zorgen dat er voldoende ruimte tussen de planten blijft. Aangetaste bladeren kun je het beste meteen wegknippen en in de vuilnisbak gooien, zodat de schimmel zich niet verder verspreidt. Gooi ze niet op de composthoop! Daarnaast is het verstandig om meeldauwgevoelige planten niet te plaatsen op plekken waar eerder meeldauw heeft gezeten. Mocht een plant toch helemaal onder deze schimmel zitten, dan is een bestrijdingsmiddel de beste oplossing.

©cocci65

Het gazon: maaien, bijzaaien en bemesten

Controleer of het gazon zieke of kale plekken heeft. Wil je die direct aanpakken? Steek de aangetaste plek dan in een vierkante vorm uit en leg er een nieuw, op maat gesneden grasmat in. Opnieuw inzaaien is natuurlijk ook een optie. Vanaf nu kun je het gras weer maandelijks maaien. Lang gras langs de randen werk je bij met een grastrimmer of kantenknipper, zodat het gazon er weer strak uitziet.

Bemesting is belangrijk voor een gezond gazon. Dit doe je in de periode van maart tot en met september minstens drie keer. Heb je in maart nog niet bemest? Dan is het nu de hoogste tijd. Sluit daarnaast de buitenkraan weer aan, zodat de sproeiers in de tuin klaar zijn voor gebruik.

Lees ook: Grasmaaien: fluitje van een cent met deze tips

▼ Volgende artikel
De perfecte printer kiezen? Hier moet je op letten
© jittawit.21
Huis

De perfecte printer kiezen? Hier moet je op letten

Dubbelzijdig afdrukken, navulbare inktreservoirs, automatische documentinvoer, netwerktoegang, foto’s printen, … Hedendaagse printers kennen heel wat opties. Welke functies je goed kunt gebruiken, hangt grotendeels af van je printgedrag. In dit artikel nemen we de belangrijkste eigenschappen onder de loep, waarna je een goede keuze kunt maken.

In dit artikel laten we zien hoe je de juiste printer kiest op basis van je behoeften:

  • Inkjet of laser?
  • Cardridge of inttank?
  • Welke extra functies: dubbelzijdig afdrukken, scannen en/of kopiëren, wifi-printen?

Lees ook: Printen in de cloud: wat is het en hoe werkt het?

Tip 1 Printtechniek

Het is verstandig om eerst de gewenste printtechniek te kiezen. Er zijn grofweg twee smaken, namelijk laser en inkjet. Zoals de naam al doet vermoeden, gebruikt een laserprinter een laserstraal om de juiste positie van tekst en beeld te bepalen. Dat gebeurt met een speciaal poeder dat in een zogenoemde toner is opgeslagen. Twee voordelen van deze techniek zijn de hoge afdruksnelheid en strakke drukletters. Deze apparaten zijn dan ook erg geschikt voor zakelijke gebruikers en particulieren die vaak omvangrijke documenten printen. De paginaprijs is relatief laag. Laserprinters zijn ongeschikt voor het afdrukken van foto’s en bovendien zijn ze in aanschaf doorgaans stevig aan de prijs.

Voor veruit de meeste thuisgebruikers is een inkjetprinter een logischere keuze. Dit apparaat bevat een heleboel dunne spuitmondjes die piepkleine inktdruppeltjes op het papier aanbrengen. Deze inkt is afkomstig uit cartridges of navulbare inkttanks. Het printen gebeurt uiterst nauwkeurig, waardoor er hoge resoluties haalbaar zijn. Een ander voordeel is dat een inkjetprinter felle kleuren kan afdrukken. Ideaal voor het afdrukken van mooie foto’s! Tot slot is een eenvoudig model al vanaf een paar tientjes te koop.

Een kleurenlaserprinter is doorgaans behoorlijk aan de maat, zoals dit model van Canon.

Tip 2 Inktverwerking

Besluit je om een inkjetprinter te kopen? De goedkoopste producten hebben slechts twee cartridges. Zwart zit in één inktpatroon, terwijl in de andere cartridge de kleuren magenta, geel en cyaan zijn opgeslagen. Voor doorsnee-gebruikers voldoen deze producten goed. Je kunt er foto’s en afbeeldingen in een redelijke kwaliteit mee afdrukken.

Wanneer je een hoge afdrukkwaliteit belangrijk vindt, is een inkjetprinter met vier (of meer) gescheiden cartridges een betere keuze. De eerdergenoemde kleuren hebben dan elk een eigen cartridge. Mooi meegenomen is daarnaast een zuiniger verbruik. Zodra er een bepaalde kleur op is, hoef je tenslotte alleen de overeenkomstige cartridge te vervangen.

In plaats van een inkjetprinter met cartridges kun je ook een exemplaar met zogenoemde inkttanks kopen. Hierbij heeft de behuizing meerdere reservoirs die je met speciale flesjes eigenhandig kunt vullen. Vergeleken met cartridges zijn de afdrukkosten véél lager. Een enkele flessenset is namelijk goed voor het printen van duizenden pagina’s of een heleboel foto’s. Zeker wanneer je relatief vaak afdrukt, is de meerprijs voor een inkttankprinter het overwegen waard. Het bekende merk Epson produceert op grote schaal navulbare printers. Als alternatief hebben Canon en HP ook enkele geschikte modellen.

In een flesje zit heel wat meer inkt dan in een cartridge.

Professionele fotoprinter

Wie graag fotografeert, heeft baat bij een (semi)professionele fotoprinter. Die hebben minimaal vijf cartridges of inkttanks. De extra kleur bestaat veelal uit fotozwarte inkt, waardoor de afdrukken realistischere contrasten bevatten. Een capabele fotoprinter kan namelijk een breder palet aan zwart- en grijstinten aanspreken. Dat resulteert onder meer in natuurgetrouwe schaduwen. Bepaalde producten hebben plek voor nog meer cartridges of inkttanks, al zijn dergelijke modellen wel een stuk duurder. Deze afdrukapparaten hebben een zeer hoog kleurbereik. Zeker wanneer je op een groot papierformaat wilt afdrukken, ogen de kiekjes afkomstig van zo’n uitgebreide fotoprinter levendiger. Tot slot kunnen de betere fotoprinters op A3- of zelfs A2-papierformaat afdrukken.

De dure Epson SC-P5300 is een professionele fotoprinter met maar liefst tien cartridges.

Tip 3 Kopiëren en scannen

Naast afdrukken kun je met de meeste printers ook kopiëren en scannen. Toch is het slim om dat wel even te checken. Zeker op (semi)professionele fotoprinters en laserprinters wil deze functie nog weleens ontbreken. Apparaten met een kopieer- en scanoptie hebben een deksel met een glasplaat. Leg hierop ondersteboven een document en kies op het bedieningspaneel de gewenste taak.

Je gebruikt de scanner ook om oude fotoafdrukken te digitaliseren. Hiervoor is de dpi-waarde een belangrijke eigenschap. Hoe hoger die is, hoe scherper de digitale foto (zie ook tip 5). Zeker wanneer je het kiekje wilt uitvergroten, heb je profijt van een hoge dpi.

De betere printers hebben een papierhouder voor automatische documentinvoer. Hierin passen (geregeld) maximaal vijftig vellen, waarna je de paperassen in één keer achter elkaar scant of kopieert. Dat gaat véél sneller dan elk document handmatig verwisselen op de glasplaat. Nuttig voor lange handleidingen en verslagen. Veel printers ondersteunen ook nog eens dubbelzijdig scannen en kopiëren, zodat je er helemaal geen omkijken naar hebt. Ten slotte hebben bepaalde all-in-one-printers een fax-functie, al zijn die tegenwoordig wel in de minderheid.

Gebruik een all-in-one-printer om oude fotoafdrukken te vereeuwigen.

Tip 4 Dubbelzijdig

Een goede ontwikkeling is dat je met veel betaalbare printers voor consumenten tegenwoordig ook automatisch dubbelzijdig kunt afdrukken. Deze apparaten hebben een mechanisme waarbij de printer elk A’4tje kan omdraaien. Je bespaart daarmee eenvoudig op papier. Bestaat een rapport uit pakweg vijftig pagina’s? In plaats van vijftig vellen heb je voortaan nog maar 25 A4’tjes nodig. Geef vooraf in de instellingen altijd wel even aan wanneer je dubbelzijdig wilt afdrukken. Een afdrukapparaat met deze functie wordt ook wel een duplexprinter genoemd.

Print je vaak lange documenten, dan is een zogenoemde duplexprinter een goede keuze.

Tip 5 Afdrukresolutie

Print je geregeld afbeeldingen, bijvoorbeeld illustraties of foto’s? Let dan op de afdrukresolutie. Fabrikanten drukken deze waarde uit in het aantal dots per inch (dpi). Deze eenheid staat voor het maximaal aantal druppeltjes inkt per vierkante inch. Een enkele inch heeft een oppervlakte van 2,54 × 2,54 centimeter. Hoe hoger de resolutie, hoe scherper het afdrukapparaat kan afdrukken. Foto’s ogen dan bijvoorbeeld gedetailleerder.

De goedkoopste inkjetprinters ondersteunen over het algemeen een resolutie van 4800 × 1200 dpi. In dit voorbeeld deponeren de spuitmondjes van de printer op de horizontale en verticale as respectievelijk 4800 en 1200 druppeltjes. Andere veelvoorkomende resoluties zijn 5760 × 1440 en 4800 × 2400 dpi. Bepaalde producten voor de professionele markt ondersteunen nog ruimere waarden, maar die zijn fors duurder. Houd bij zulke printers trouwens wel rekening met een hoger inktverbruik.

Voor scherpe fotoafdrukken gebruik je bij voorkeur een printer met een hoge afdrukresolutie.

Tip 6 Printer aansluiten

Zodra je de printer uit de productdoos haalt, ga je hem logischerwijs meteen aansluiten. Dat kan op verschillende manieren. Vrijwel alle producten voor de consumentenmarkt hebben een usb-ingang. Creëer daarmee een rechtstreekse verbinding tussen het afdrukapparaat en de pc of laptop.

Staat de computer uit, dan wil je misschien printjes vanaf een smartphone of tablet maken. Of misschien gebruik je in huis wel meerdere computers. Om die reden hebben de meeste hedendaagse producten een draadloze netwerkaansluiting. Verbind de printer daarmee met wifi en druk vanaf elk (mobiel) apparaat in huis af. Een voorwaarde is dat er op de beoogde plek voldoende wifi-dekking is. Je kunt dat vooraf even met een smartphone controleren. De betere producten ondersteunen de 2,4GHz- en 5GHz-frequentieband. Je vergroot daarmee de kans op een stabiele draadloze verbinding. In stedelijke gebieden is de 2,4GHz-frequentieband namelijk vaak drukbezet.

Er bestaan ook modellen met een bekabelde netwerkaansluiting, al betreffen dit hoofdzakelijk printers voor de zakelijke markt. Deze optie heeft vooral nut wanneer de printer in de buurt van een router of switch staat opgesteld. Het voordeel van zo’n fysieke netwerkaansluiting is dat printopdrachten nooit worden verstoord door het signaal van naburige draadloze netwerken.

Een printer met netwerkfunctie hoef je niet per se vlak bij een computer neer te zetten.

Tip 7 Mobiel afdrukken

De laatste jaren is het mobiel versturen van afdruktaken makkelijker dan ooit. Android-apparaten, iPhones en iPads herkennen een recente printer meestal op eigen houtje in het netwerk. Je past vervolgens naar eigen wens de printinstellingen aan en drukt direct af. Voor comptabiliteit met Apple-apparaten check je zekerheidshalve of het product AirPrint ondersteunt. In dat geval kun je bijvoorbeeld vanuit diverse apps printen, zoals Foto’s, Safari en Documenten. Open hiervoor het deelmenu (vierkant met pijl) en kies Druk af. Verder kunnen veel printers overweg met de Mopria-standaard. Je kunt dan rechtstreeks vanuit Android afdrukken.

Mocht jouw smartphone of tablet de printer niet meteen herkennen, dan is er nog geen man overboord. Open in dat geval de Play Store of de App Store en installeer de app van de printerfabrikant. Alle bekende merken hebben namelijk een eigen app, zoals HP, Epson, Brother en Canon. Vanuit deze toepassingen verstuur je alsnog printopdrachten.

Je verstuurt vanaf jouw smartphone rechtstreeks afdruktaken naar een wifi-printer.

Tip 8 Foto-opties

Fotografieliefhebbers kunnen op nog een aantal zaken letten. Heb je kiekjes met een compact-, systeem- of spiegelreflexcamera gemaakt en wil je de mooiste beelden meteen afdrukken? Sommige modellen hebben een geheugenkaartlezer. Plaats je daarin pakweg een SD-kaart, dan verschijnen de foto’s op het display van het afdrukapparaat. Afhankelijk van de printer kun je misschien nog wat zaken aanpassen. Druk de foto daarna op het gewenste papierformaat af. Dankzij deze optie hoef je de fotobestanden niet eerst naar een computer te kopiëren. Bekijk in de specificaties wel even welke geheugenkaarttypes de printer accepteert.

Als alternatief kun je een fototoestel wellicht via usb verbinden en vervolgens een afdruktaak starten. Hierbij is het een vereiste dat de camera met de PictBridge-standaard overweg kan. Selecteer op het display van de camera de gewenste instellingen en druk het kiekje af. Overigens gebruik je deze usb-poort ook om een usb-stick met documenten en foto’s aan te sluiten.

Ten slotte hebben sommige printers een apart vak voor fotopapier. Meestal kun je daarin vellen met een standaardformaat van 15 × 10 centimeter kwijt. Gunstig, want je hoeft dan de normale A4’tjes niet steeds eerst uit de printer te halen.

Haal de SD-kaart uit het fototoestel en steek hem direct in een geschikte printer.

Tip 9 Bediening

Duurdere printers hebben over het algemeen een aanraakscherm. Je tikt in het menu gewoon op de taak die je wilt uitvoeren, zoals scannen of kopiëren. Verder kun je waarschijnlijk ook diverse onderhoudsklusjes doen, zoals de printkop reinigen of firmware-updates installeren. Daarnaast controleer je op het display de actuele inktniveaus. Gebruik je een fotoprinter, dan bekijk hierop ook nog kiekjes van een aangesloten fototoestel of geheugenkaart. In dat geval is een ruim scherm wel zo prettig. Tot slot geeft het display je mogelijk toegang tot diverse (draadloze) netwerkfuncties.

Goedkopere printers hebben een klein of zelfs helemaal geen (aanraak)scherm. Op de behuizing bevinden zich dan meerdere knopjes om uiteenlopende taken te starten. Het bedieningspaneel oogt om die reden drukker. Zo zijn er meestal aparte toetsen om een zwart-wit- of kleurenkopie te maken. Opvallend veel printers hebben overigens een kantelbaar bedieningspaneel. Je kiest zo een comfortabele kijkhoek voor het scherm en de knoppen.

Deze fotoprinter van Epson onderscheidt zich met een ruime schermdiagonaal van 10,9 centimeter.

Tip 10 Behuizing

Eerlijk is eerlijk: de printer is in jouw woning of (thuis)kantoor waarschijnlijk niet het mooiste apparaat. Toch valt er op het gebied van design momenteel best wat te kiezen. Er zijn bijvoorbeeld redelijk wat printers in een zwarte én witte versie verkrijgbaar. Bovendien worden bepaalde series in allerlei vrolijke kleuren uitgebracht. Het is in dat geval wel even zoeken, want afdrukapparaten met een kleurtje liggen niet voor het oprapen.

Heb je weinig ruimte voor de printer, zoals een krap plekje in een kast of verlaten hoekje op het bureau? De kleinste inkjetmodellen zijn erg compact. Vaak kun je diverse onderdelen inklappen, waarna er een compact ‘doosje’ overblijft. Logischerwijs doe je met zo’n klein afdrukapparaat wel enkele concessies. De papierlade heeft bijvoorbeeld weinig ruimte voor A4’tjes en er ontbreekt vermoedelijk een lade voor automatische documentinvoer.

Sommige printers zijn in allerlei exotische kleuren verkrijgbaar.

Kooptips

Wil je een nieuwe printer kopen? We zetten drie breed verkrijgbare producten uit verschillende prijsklassen op een rij.

Canon Pixma TS5150

De Canon Pixma TS5150 is bij bepaalde webwinkels spotgoedkoop. Ondanks de lage aanschafprijs zijn de specificaties prima. Zo print je met dit all-in-one-model op een maximale resolutie van 4800 × 1200 dpi. Druk gerust een paginadik rapport of verslag af, want de Pixma TS5150 kan automatisch dubbelzijdig afdrukken. Wil je liever een scan of kopietje maken? Plaats dan een vel ondersteboven op de glasplaat. Je kiest met behulp van het display en de druktoetsen vervolgens de gewenste actie. De printer heeft onder de motorkap een wifi-adapter. Kortom, verstuur vanaf elk (mobiel) apparaat afdruktaken. Behalve documenten kun je net zo makkelijk foto’s uitprinten. Op een formaat van 15 × 10 centimeter zie je zelfs geen witrand. In de behuizing gaan twee cartridges. Onder de productnaam Pixma TS5151 is het product ook in een witte behuizing te koop.

HP OfficeJet Pro 9730e

Deze inkjetprinter van HP is een regelrechte alleskunner. Naast de gebruikelijke A4’tjes kun je er zelfs afdrukken op A3-formaat mee maken. Print op die manier dus posters! Zoals de naam al doet vermoeden, is de OfficeJet Pro 9730e een goede aanvulling voor elk (thuis)kantoor. Verdeeld over twee lades plaats je maar liefst vijfhonderd vellen. Verder leg je een stapeltje van 35 A4’tjes in de documentinvoer, waarna je ze achtereen kunt scannen of kopiëren. Daarnaast is automatisch dubbelzijdig afdrukken geen probleem. Mooi meegenomen is dat je met de OfficeJet Pro 9730e kiekjes kunt afdrukken, want het apparaat verwerkt moeiteloos fotopapier. De maximale printresolutie bedraagt 4800 × 1200 dpi. Er gaan vier gescheiden cartridges in de behuizing. Je koppelt deze all-in-one-printer via wifi of een kabel met het thuisnetwerk.

Epson EcoTank ET-2870

Print je veel documenten en foto’s? Dan is deze veelzijdige inkttank-printer van Epson een interessante kandidaat. Gebruik de meegeleverde flessenset om de inktreservoirs eigenhandig te vullen. Wegens het slimme flesontwerp gaat dat zonder morsen. Met een maximale resolutie van 5760 × 1440 dpi leent de EcoTank ET-2870 zich perfect voor het scherp afdrukken van foto’s. Bij het standaardformaat van 15 × 10 centimeter en kleinere fotovellen zie je hierbij geen witrand. Wanneer je het apparaat met het draadloze thuisnetwerk verbindt, kun je vanaf elke smartphone, tablet en computer afdrukken; er is hiervoor ondersteuning voor Apple AirPrint ingebakken. Naast printen kun je met dit apparaat ook kopiëren en scannen, al ontbreekt er wel een automatische documentinvoer. Let niet te veel op de hier vermelde adviesprijs, want een heleboel webwinkels vragen een lager bedrag.