Maak het onmogelijke mogelijk met GPT en Power Automate

Gerrit Jan Hagens

Blog
22 maart 2023

Stel je eens voor: jouw binnenkomende e-mails, documenten en andere ongestructureerde gegevens worden volledig automatisch verwerkt. Ze worden in de juiste context geplaatst en er worden afgebakende vervolgtaken bepaald. Klinkt dat té mooi voor woorden? Met de komst van OpenAI’s GPT in combinatie met Power Automate en de custom Power Platform-connector van Shared kan het.

Unstructured data is information that is not arranged according to a preset data model or schema, and therefore cannot be stored in a traditional relational database or RDBMS. Text and multimedia are two common types of unstructured content. Many business documents are unstructured, as are email messages, videos, photos, webpages, and audio files.”
Bron: https://www.mongodb.com/unstructured-data

Het probleem van ongestructureerde data

Hoeveel van de informatie waarmee jij werkt valt in de categorie ‘ongestructureerde gegevens’? En heb je wel eens geprobeerd om deze stroom van werk te automatiseren? Het antwoord is vaak het standaardiseren van gegevens. We ontwerpen apps, formulieren en ‘data-rotondes’ om de gegevensstroom af te bakenen. Maar deze oplossingen zijn vaak duur om te ontwikkelen, vergen aanzienlijke schaalgrootte en sluiten niet goed aan op de complexiteit van de praktijk.

GPT lost al onze problemen op!

Met de komst van de GPT-modellen van OpenAI (onder het grotere publiek beter bekend als ‘ChatGPT’), zijn er opeens ontzettend veel nieuwe mogelijkheden te vinden. De technologie is ontzettend gaaf, maar hoe koppel je deze technologie op de juiste manier aan jouw bedrijfsprocessen? Hoe houd je controle op de verwerking en kom je niet voor verrassingen te staan?

Waarom is inzet van GPT op dit onderwerp zo baanbrekend?

Tot eind 2022 maakten we gebruik van herkenning van tekstpatronen (reguliere expressies) of specifieke Machine Learning oplossingen om ongestructureerde gegevens te verwerken.

Enerzijds kregen Reguliere expressies het al lastig wanneer men bijvoorbeeld de mogelijkheid heeft om in talloze vormen een datum en tijdstip te noteren. Anderzijds moesten Machine Learning-oplossingen voor bijvoorbeeld het classificeren van e-mails worden getraind op enorme hoeveelheden voorbeeldgegevens uit een specifieke context. Dit betekent dat men al snel een maatwerk model moet ontwikkelen, wat simpelweg een grote investering is en grote hoeveelheden geschoonde voorbeelddata vereist.

GPT daarentegen is getraind op een codex die zo veelomvattend is dat het de context en verbanden van zo’n beetje alle onderwerpen eerder heeft gezien. Vergelijkbaar dus met hetgeen wij als mensen doen. En dat alles terwijl het verrassend betaalbaar is.

Hoe stuctureer je ongestructureerde data met behulp van GPT?

Simpel, je instrueert het GPT-model om enkel gestructureerd te antwoorden. Hierbij komt het erop aan om de instructie (prompt) strikt genoeg en ondubbelzinnig te formuleren. Je kunt dit op de volgende manieren doen:

  1. Geef duidelijke instructies welke beslissingen er gemaakt moeten worden of welke zinssnedes je wilt extraheren uit de tekst. Bijv. een tijdstip, een verzoek of namen van andere personen.
  2. Geef duidelijke instructies hoe de interessante informatie uit punt 1 teruggekoppeld moet worden door GPT zodat een ‘traditioneel’ systeem dit verder kan verwerken. Persoonlijk ben ik er een fan van om het antwoord in zgn. ‘JSON’-formaat op te laten stellen. Zo wordt de informatie in een vaste en betrouwbare vorm teruggegeven voor verdere verwerking.

Zullen we gewoon eens een voorbeeld geven?

Het voorbeeld

Om dit in de praktijk te kunnen gebruiken hebben we een kleine demo opgezet in Power Automate, het Low code automatiseringsplatform van Microsoft.

Zoals je ziet, is een binnenkomende e-mail het begin van het verwerkingsproces. Het proces eindigt met het inplannen van een monteur in het ERP-pakket van de verwerkende partij.

Vervolgens bouwen we de instructie voor GPT op. Om gemakkelijk verbinding te kunnen maken met het GPT 3.5 Turbo-model van OpenAI, gebruiken we hun API via onze eigen Custom connector (zie onze eerdere blog hierover). Laat het ons even weten als je die wilt hebben.

Het model werkt via deze API net iets anders dan ChatGPT, maar is wel grotendeels vergelijkbaar. Het is mogelijk om meerdere chatberichten in één keer te versturen, om zo ook een grotere conversatie mee te sturen. We maken hier onderscheid in drie typen berichten: system-, user- en assistant-berichten:

  • System | de initiële instructie die de kern vormt van het gedrag van het GPT-model. Hierin bepaal je de kaders.
  • User | de detailering en uiteindelijke opdracht voor GPT die het binnen de gesteld kaders zal uitvoeren.
  • Assistant | de reactie van GPT op eerdere opdrachten.

Het resultaat?

Wanneer we de Power Automate Flow uitvoeren krijgen we het volgende resultaat terug.

Vlekkeloos. Fantastisch toch?!

Waar moet je bij het toepassen op letten?

Er zijn vervolgens diverse verdiepingen die je kunt uitvoeren om dit simpele voorbeeld breder toepasbaarder te maken in complexere scenario’s. We hebben er hieronder een paar uitgangspunten uiteengezet:

  1. Deel het bepalen van de juiste vervolgacties op in deelproblemen door meerdere instructies op te stellen die de uit te voeren taken verder detailleren en naar elkaar verwijzen.
  2. Werk bij direct klantcontact op basis van conceptberichten die zijn opgesteld door GPT en vóór verzenden worden gecontroleerd door een ‘human in the loop’. Bij Shared doen we dit bijv. door een kleine app voor deze eindgebruikers neer te zetten of door automatisch concept e-mails aan te maken in de betreffende e-mailpostvakken.
  3. Vraag GPT om bijvoorbeeld een Confidence interval mee te geven aan het resultaat om zo te bepalen of het antwoord betrouwbaar genoeg is. Dit lijkt wellicht een contradictio in terminis, maar blijkt in de praktijk verrassend bruikbaar.
  4. Let goed op met de verwerking van evt. persoonsgegevens (zie onder).

Ga zelf aan de slag!

Je kunt hier nu al mee aan de slag. Voor experimenten kun je gemakkelijk GPT tot je beschikking krijgen:

  • Direct via OpenAI, en dus buiten de controle van jouw organisatie en op Amerikaanse servers. GPT 3.5 Turbo kun je hier voor $ 0,002 / 750 woorden gebruiken;
  • Via Azure OpenAI, en dus binnen de Tenant van de eigen organisatie en Europese servers. Het goedkopere GPT 3.5 Turbo model is hier op het moment van schrijven nog niet beschikbaar (join the waitlist). Het duurdere Davinci-003 kost je $ 0,02 / 750 woorden en kent één prompt zonder de onderverdeling in verschillende typen berichten.

Bij OpenAI is het aanvullend mogelijk om een opt-out aan te vragen voor het gebruik van jouw data bij het trainen van nieuwe modellen.

Bij het leggen van een verbinding met de modellen kun je gebruik maken van de standaard/custom connectoren die worden geboden binnen het Microsoft Power Platform (OpenAI / Azure OpenAI Service). Of als je van de nieuwste modellen binnen OpenAI gebruik wilt maken kun je even contact met ons opnemen voor gebruik van onze eigen Custom connector.

Let op: GDPR / AVG

Zoals hierboven vermeld dien je wel op te passen met het verzenden van persoonsgegevens naar de genoemde GPT services. Naast het hebben van adequate verwerkersverklaringen en expliciete consent, is het o.a. ook zaak om te kiezen voor een dienstverlener waarbij de data op Europese bodem blijft. Hoewel dit is te mitigeren door de persoonsgegevens uit de teksten te verwijderen, is deze klus ironisch genoeg een voorbeeld van het verwerken van ‘ongestructureerde data’ waar automatisch systemen juist zo’n moeite mee hebben.

Tot slot

Zo, nu weet je hoe we dat doen. Slaat jouw brein ook al op hol van alle mogelijke toepassingen binnen jouw organisatie? Mooi! Met bovenstaande stappen heb je als het goed is een aardig idee gekregen van de aanpak. Nu moet je dus zelf aan de slag als ‘aanjager van vooruitgang’!

Ben je enthousiast geworden maar weet je eigenlijk nog steeds niet waar je moet beginnen? Laat het ons even weten, dan zetten we er samen onze schouders onder!

Meld je aan voor onze nieuwsbrief

Better business dankzij inspiratie, tips, best practices, klantverhalen en meer.


Gerrit Jan Hagens

22 maart 2023

Meer inspiratie

Contact

Je naam
Dit veld is bedoeld voor validatiedoeleinden en moet niet worden gewijzigd.
Shared BV

Vasteland 12G
3011 BL Rotterdam

+085 833 0011 info@shared.nl
Sluiten
Privacyverklaring

Privacyverklaring Shared

Shared, gevestigd aan Vasteland 12G, 3011 BL Rotterdam, is verantwoordelijk voor de verwerking van persoonsgegevens zoals weergegeven in deze privacyverklaring.

Contactgegevens: Website: https://www.shared.nl
Adres: Vasteland 12G, 3011 BL Rotterdam
Telefoon: +31 85 8330011

Persoonsgegevens die wij verwerken Shared verwerkt je persoonsgegevens doordat je gebruik maakt van onze diensten en/of omdat je deze gegevens zelf aan ons verstrekt. Hieronder vind je een overzicht van de persoonsgegevens die wij verwerken:

  • Voor- en achternaam
  • Telefoonnummer
  • E-mailadres
  • IP-adres
  • Gegevens over jouw activiteiten op onze website
  • Internetbrowser en apparaat type

Bijzondere en/of gevoelige persoonsgegevens die wij verwerken Onze website en/of dienst heeft niet de intentie gegevens te verzamelen over websitebezoekers die jonger zijn dan 16 jaar, tenzij ze toestemming hebben van ouders of voogd. We kunnen echter niet controleren of een bezoeker ouder dan 16 is. Wij raden ouders dan ook aan betrokken te zijn bij de online activiteiten van hun kinderen, om zo te voorkomen dat er gegevens over kinderen verzameld worden zonder ouderlijke toestemming. Als je ervan overtuigd bent dat wij zonder die toestemming persoonlijke gegevens hebben verzameld over een minderjarige, neem dan contact met ons op via gerritjan@shared.nl, dan verwijderen wij deze informatie.

Met welk doel en op basis van welke grondslag wij persoonsgegevens verwerken Shared verwerkt jouw persoonsgegevens voor de volgende doelen:

  • Je te kunnen bellen of e-mailen indien dit nodig is om onze dienstverlening uit te kunnen voeren.
  • Shared analyseert jouw gedrag op de website om daarmee de website te verbeteren en het aanbod van producten en diensten af te stemmen op jouw voorkeuren.
  • Shared volgt jouw surfgedrag over verschillende websites waarmee wij onze producten en diensten afstemmen op jouw behoefte.

Geautomatiseerde besluitvorming Shared neemt geen besluiten op basis van geautomatiseerde verwerkingen die aanzienlijke gevolgen kunnen hebben voor personen.

Hoe lang we persoonsgegevens bewaren Shared bewaart je persoonsgegevens niet langer dan strikt nodig is om de doelen te realiseren waarvoor je gegevens worden verzameld. Wij hanteren de volgende bewaartermijnen voor de volgende (categorieën) van persoonsgegevens:

  • Persoonsgegevens: 26 maanden

Delen van persoonsgegevens met derden Shared deelt jouw persoonsgegevens met verschillende derden als dit noodzakelijk is voor het uitvoeren van de overeenkomst en om te voldoen aan een eventuele wettelijke verplichting. Met bedrijven die je gegevens verwerken in onze opdracht, sluiten wij een verwerkersovereenkomst om te zorgen voor eenzelfde niveau van beveiliging en vertrouwelijkheid van jouw gegevens. Shared blijft verantwoordelijk voor deze verwerkingen. Daarnaast verstrekt Shared jouw persoonsgegevens aan andere derden alleen met jouw nadrukkelijke toestemming.

Cookies, of vergelijkbare technieken, die wij gebruiken Shared gebruikt functionele, analytische en tracking cookies. Een cookie is een klein tekstbestand dat bij het eerste bezoek aan deze website wordt opgeslagen in de browser van je computer, tablet of smartphone. Shared gebruikt cookies met een puur technische functionaliteit. Deze zorgen ervoor dat de website naar behoren werkt en dat bijvoorbeeld jouw voorkeursinstellingen onthouden worden. Deze cookies worden ook gebruikt om de website goed te laten werken en deze te kunnen optimaliseren. Daarnaast plaatsen we cookies die jouw surfgedrag bijhouden zodat we op maat gemaakte content en advertenties kunnen aanbieden.

Bij jouw eerste bezoek aan onze website hebben wij je al geïnformeerd over deze cookies en hebben we je toestemming gevraagd voor het plaatsen ervan.

Je kunt je afmelden voor cookies door je internetbrowser zo in te stellen dat deze geen cookies meer opslaat. Daarnaast kun je ook alle informatie die eerder is opgeslagen via de instellingen van je browser verwijderen. Zie voor een toelichting: https://veiliginternetten.nl/themes/situatie/cookies-wat-zijn-het-en-wat-doe-ik-ermee/

Op deze website worden ook cookies geplaatst door derden. Dit zijn bijvoorbeeld adverteerders en/of sociale media-bedrijven. Hieronder een overzicht:

  • Google Analytics & Ads
    • Naam: _ga & _utma
    • Functie: Analytische cookie die websitebezoek meet
    • Bewaartermijn: 24 maanden
  • LinkedIn
    • Naam: _ligc
    • Functie: Analytische cookie die websitebezoek meet
    • Bewaartermijn: 24 maanden
  • Hotjar
    • Naam: _hjSessionUser_14
    • Functie: Analytische cookie die websitebezoek meet
    • Bewaartermijn: 24 maanden

Gegevens inzien, aanpassen of verwijderen Je hebt het recht om je persoonsgegevens in te zien, te corrigeren of te verwijderen. Dit kun je zelf doen via de persoonlijke instellingen van jouw account. Daarnaast heb je het recht om je eventuele toestemming voor de gegevensverwerking in te trekken of bezwaar te maken tegen de verwerking van jouw persoonsgegevens door ons bedrijf en heb je het recht op gegevensoverdraagbaarheid. Dat betekent dat je bij ons een verzoek kan indienen om de persoonsgegevens die wij van jou beschikken in een computerbestand naar jou of een ander, door jou genoemde organisatie, te sturen.

Wil je gebruik maken van je recht op bezwaar en/of recht op gegevensoverdraagbaarheid of heb je andere vragen/opmerkingen over de gegevensverwerking, stuur dan een gespecificeerd verzoek naar gerritjan@shared.nl.

Om er zeker van te zijn dat het verzoek tot inzage door jou is gedaan, vragen wij jou een kopie van je identiteitsbewijs bij het verzoek mee te sturen. Maak in deze kopie je pasfoto, MRZ (machine readable zone, de strook met nummers onderaan het paspoort), paspoortnummer en Burgerservicenummer (BSN) zwart. Dit ter bescherming van je privacy. Shared zal zo snel mogelijk, maar in ieder geval binnen vier weken, op jouw verzoek reageren.

Shared wil je er tevens op wijzen dat je de mogelijkheid hebt om een klacht in te dienen bij de nationale toezichthouder, de Autoriteit Persoonsgegevens. Dat kan via de volgende link: https://autoriteitpersoonsgegevens.nl/nl/contact-met-de-autoriteit-persoonsgegevens/tip-ons

Hoe wij persoonsgegevens beveiligen Shared neemt de bescherming van jouw gegevens serieus en neemt passende maatregelen om misbruik, verlies, onbevoegde toegang, ongewenste openbaarmaking en ongeoorloofde wijziging tegen te gaan. Als jij het idee hebt dat jouw gegevens toch niet goed beveiligd zijn of er aanwijzingen zijn van misbruik, neem dan contact op met onze klantenservice of via gerritjan@shared.nl. Shared heeft de volgende maatregelen genomen om jouw persoonsgegevens te beveiligen:

  • Gebruik van beveiligde verbindingen (SSL/TLS)
  • Regelmatige beveiligingscontroles en updates
  • Strikte toegangscontroles voor medewerkers en systemen

Deze privacyverklaring is voor het laatst aangepast op 11-06-2024.