Artikel

Trendsz

Stel je voor: samen met je team werk je aan het ontwikkelen van software en iedereen mag gebruik maken van Artificial Intelligence (AI). Eén van de softwareontwikkelaars besluit een AI-agent te ontwikkelen die zelf initiatief neemt en autonoom optreedt als softwareontwikkelaar. Jouw rol binnen het team is softwaretester. Hoe waarborg je de kwaliteit van de opgeleverde software door de AI-agent? Tegen welke uitdagingen loop je aan en hoe ga je hier mee om? In deze blog ga ik in op wat de opkomst van AI binnen ontwikkelteams betekent voor kwaliteitswaarborging bij het testen van software.

Waar moet je op letten bij het controleren van de kwaliteit van software die met AI is ontwikkeld?

Allereerst is het belangrijk om te begrijpen wat de output van het systeem is. Het systeem kan deterministische of een non-deterministische output genereren. Wanneer we spreken van deterministische output, bedoelen we dat dezelfde invoer altijd hetzelfde resultaat geeft. Bij een non-deterministische output levert dezelfde invoer verschillende resultaten op. Een voorbeeld voor een deterministische output is een optelsom. Een voorbeeld voor non-deterministisch output is een worp met een dobbelsteen. Een deterministische output vereist een andere aanpak dan een non-deterministische output.

In het geval van een open vraag bestaan er bijvoorbeeld meerdere goede antwoorden. Het is dan moeilijk om de kwaliteit van de antwoorden te bepalen, omdat verschillen in woordgebruik een exacte vergelijking verhinderen. Neem een open vraag bij een geschiedenis toets: een antwoord kan andere woorden gebruiken dan het geschiedenisboek en toch het gevraagde onderwerp correct beschrijven. Het gaat om het begrip en niet om de exacte verwoording. Daarom is het van belang dat er gedocumenteerd wordt waar, waarom en welke variatie optreedt. Hiermee wordt duidelijk welke antwoorden identiek zijn en welke verschillen. Wanneer antwoorden van elkaar verschillen, onderzoek dan of de relatie klopt ten opzichte van de input. De relatie blijft gelijk, ook bij variatie in woordgebruik.

Welke kwaliteitseisen moeten er gesteld worden aan software die met AI is ontwikkeld?

Bij het controleren van de kwaliteit kijk je of de beoogde taken correct worden uitgevoerd. Deze controle richt zich niet alleen op het eindresultaat, maar ook op de tussenliggende stappen en op herhaling van dezelfde taak. Zo controleer je of de output consistent blijft.

Bij een deterministische taak, zoals een optelsom, controleer je of het systeem bij gelijke invoer steeds hetzelfde resultaat produceert. Bij een non-deterministische taak, zoals een worp met een dobbelsteen, is dit niet mogelijk. De waarde van de worp is altijd anders. Hier controleer je niet of de uitkomst steeds hetzelfde is, maar juist of de uitkomst binnen de grenzen blijft en voldoet aan de gestelde voorwaarden.
Wanneer taken niet correct worden uitgevoerd, moeten er passende maatregelen worden genomen om de kwaliteit te waarborgen. Dit betekent dat bij gedetecteerde fouten door de AI-agent, de actie stopgezet wordt en waar mogelijk een correctie volgt.

Formele regels vormen de basis voor foutdetectie en zorgen ervoor dat de AI-output voldoet aan gestelde kwaliteitseisen. Voorbeelden van fouten zijn: verkeerde redenatie, bias, prompt-injecties, jailbreaking, en privacy lekken zoals in onderstaand voorbeeld:

  • Verkeerde redenatie is bijvoorbeeld 1+1+1=1 in plaats van 1+1+1=3.
  • Er is sprake van bias als er een vooroordeel of systematische vertekening is van de uitkomst van de opgeleverde software. Zoals bijvoorbeeld wanneer beroepen vooral gekoppeld worden aan een man en andere genders systematisch uitgesloten worden. Het is in dit geval van belang dat de systematische uitsluiting van andere genders ongedaan gemaakt wordt.
  • Bij prompt-injectie laat de gebruiker het systeem iets doen wat jij niet wilt. Er worden andere instructies opgevolgd dan vooraf ingegeven, bijvoorbeeld door dat een eerdere instructie overschreven wordt. Zo kan het dat de instructie is om een tekst samen te vatten in één zin, en vervolgens volgt de instructie om eerdere instructies te negeren om in plaats daarvan steeds dezelfde zin terug te koppelen. In dit geval is het van belang systeeminstructies op te stellen die niet overschreden kunnen worden door gebruikersinstructies.
  • Bij jailbreaking worden veiligheidsbeperkingen omzeild. Jailbreaking is een vorm van prompt-injectie, maar niet elke prompt-injectie is een jailbreak.
  • Een privacy lek ligt op de loer als data persoonsgegevens bevat en deze niet geanonimiseerd is voordat de AI-agent ermee werkt. Door middel van prompt injection of vergelijkbare technieken kunnen gebruikers toegang krijgen tot de onderliggende data die door de AI wordt verwerkt.

Hoe test je of de output van AI aan de kwaliteitseisen voldoet?

Toets of de AI voldoet aan vooraf opgestelde formele regels voor verantwoord gebruik. Denk aan kaders voor transparantie, veiligheid, privacy, aansprakelijkheid en risicobeheer.

Voorbeelden van formele regels zijn:

  • Prestatie-kwantificatie: “Het AI-model laat bij elk antwoord zien hoe groot de kans is op een fout. Het rapporteert dit aan de hand van accuratesse, precisie, recall, F1-score en de verhouding false positives en false negatives. Dit ondersteunt de kaders voor transparantie door duidelijke prestatie metingen te bieden en veiligheid door foutmarges te rapporteren.”
  • Hallucinatie preventie: “Het AI-model moet informatie vergelijken met één of meerdere verifieerbare bronnen om kans op hallucinaties of niet onderbouwde conclusies te minimaliseren en inconsistentie te signaleren. Dit waarborgt veiligheid door betrouwbare informatie te leveren en privacy door het vermijden van het verspreiden van onjuiste data waaronder persoonsgegevens.”
  • Regelconsistentie: “Het AI-model mag nooit X zeggen wanneer voorwaarde Y geldt. Dit ondersteunt risicobeheer door gevaarlijke uitkomsten te voorkomen en aansprakelijkheid door consistentie te waarborgen.”
  • Formatvalidatie:  “Het AI-model moet JSON-schema checks en API-contractvalidatie toepassen om het format te valideren en inconsistenties daarop te signaleren. Dit ondersteunt privacy door data-integriteit te waarborgen en veiligheid door correcte formaten te gebruiken.”
  • Beperkingsschendingen:   “Het AI-model moet zich houden aan lengte, vocabulaire, en verboden tokens. Dit ondersteunt risicobeheer door onbeheerste uitvoer te voorkomen en veiligheid door het voorkomen van ongeautoriseerd delen van gevoelige informatie.”
  • Contra feitelijke tests:  “Het AI-model moet gelijke beslissingen geven bij minimale wijziging in formulering. Dit waarborgt aansprakelijkheid door eerlijke resultaten en transparantie door vergelijkbare uitkomsten.”
  • Veiligheidsfilters: “Het AI-model mag nooit verboden concepten gebruiken. Dit ondersteunt privacy door gevoelige inhoud te blokkeren en veiligheid door ethische richtlijnen te respecteren.”

Om de formele regels als bovenstaande te toetsen zijn er diverse tools ontwikkeld, zoals: Promptfoo, DeepTeam, Python Risk Identification Tool (PyRIT) en Garak. Deze tools geven de mogelijkheid tot prompt testing, waarbij verschillende versies van prompts bekeken worden om te zien welke het beste werkt voor een specifieke taak: bijvoorbeeld om een bepaald type antwoord, gedrag, of structuur te verkrijgen van het AI-model.

Naast prompt testing geven tools de mogelijkheid om objectieve evaluaties te geven van de nauwkeurigheid, volledigheid en relevantie van de gegenereerde output. Zoals op de vraag: “Wat is de uitkomst van 1+1+1?” Of “Wat is de uitkomst van een worp met een dobbelsteen?” Deze tools vallen onder de categorie “Red Teaming”. “Red Teaming” is een methode waarbij bewust geprobeerd wordt software te breken, misleiden of omzeilen: om zwakke plekken te ontdekken en kwetsbaarheden te vinden voordat dit in productie ontstaat. Gebruik deze tools om te onderzoeken of er bijvoorbeeld sprake is van verkeerde redenatie, bias, prompt-injectie, jailbreaking of een privacy lek: lees ook dit artikel Automated LLM Evaluation with Promptfoo – Sofius.

 

Wil je meer weten over het testen van AI? Of wil je in gesprek over het testen van software, het controleren van de kwaliteit en het beperken van risico’s? Neem dan contact met mij op.

    Wil je ons nieuwste Paarsz magazine per post ontvangen? Laat dan je gegevens achter.

    Ontwerp zonder titel (19)

    Werken bij Bartosz?

    Vincent Verhelst

    Geïnteresseerd in Bartosz? Dan ga ik graag met jou in gesprek. We kunnen elkaar ontmoeten met een kop koffie bij ons op kantoor. Of tijdens ontbijt, lunch, borrel of diner op een plek die jou het beste uitkomt. Jij mag het zeggen.

    Bijtanken bij Bartosz

    Ketenloos testen. Doe jij al mee?

    Mei28

    De keten voelt vertrouwd, maar eerlijk? De keten zit vaker in de weg dan dat ze ondersteunt.  In een agile omgeving, waar je snel en kort-cyclisch werkt, past een logge keten niet meer. De vraag is dus niet óf je hem loslaat, maar hoe.