Microsoft heeft op de Learn-omgeving een poster met de verschillende certificeringen. De Azure Fundamentals heb ik in 2020 behaald, in 2024 de Azure Data Fundamentals, ik ga kijken of ik dit jaar de Azure AI Fundamentals kan behalen. Ik had het idee dat ik al flink wat certificeringen had, maar dat zijn wat "oudere" en zie je niet in dit schema terug. Wel ben ik ook "Azure Developer Associate", die staat in het derde blokje en is "wat meer" dan de Fundamentals. Daarom moet je die ook elk jaar verlengen.
Mijn doel is eigenlijk om alle Fundamentals te halen, dus ik zie hier dat ik dan na AI nog een paar mag doen, namelijk MS-900: Microsoft 365 Fundamentals, MB-910: Dynamics 365 Fundamentals (CRM), MB-920: Dynamics 365 Fundamentals (ERP), PL-900: Power Platform Fundamentals en SC-900: Security, Compliance and Identity Fundamentals. We zullen zien hoe ver ik kom met elke woensdag 1 uur Microsoft Learn die ik ingepland heb.
Goed, eerst de cursus die je bij elke certificering van Microsoft kunt doorlopen. Ik zie dat ik eerder al wat items afgerond heb, misschien voor een challenge o.i.d., maar ik begin weer bij 1, want ik stap er redelijk blanco in. Let's go naar de beginpagina.
## DE 1e WEEK ##
Ik begin met de Fundamental AI Concepts. De algemene begrippen die niet onbekend zijn. Tien units, ik doorloop ze redelijk snel. Bij de meeste "hoofdstukken" zit een stukje video en dat is het dan. Interessant is Seeing AI, een app voor op je mobiel waarmee je de wereld om je heen kunt laten beschrijven. Handig voor blinde en slechtziende mensen. De website staat hier: seeingai.com.
Ik heb de app op mijn mobiel geïnstalleerd. Ik had nog een cadeaubon van Gamma liggen, de tekst wordt redelijk snel in het Nederlands voorgelezen. Het is niet zo handig dat ik dit op mijn toetsenbord heb liggen, want ook F1, F2, F3, etc. wordt voorgelezen door de stem van de app. Vervolgens een scene. Ik maak een foto van een smurf (poppetje wat ik had). En ja: ik krijg als resultaat dat het een klein poppetje van een smurf is die trompet speelt. Bij installatie krijg je een flinke disclaimer dat er fouten kunnen optreden en je dus zelf het risico daarvan accepteert. Foto's worden geüpload en bij Microsoft verwerkt en door hun weer verwijderd. Ik heb hier nog een kalender hangen van een schaars geklede Paige. Als ik die doorstuur krijg ik de summiere omschrijving "een vrouw in een kledingstuk". Zo kun je het ook zeggen.
In ieder geval, er zijn heel veel goede dingen voor mensen met visuele beperkingen te doen met deze app en andere oplossingen!
Bij het onderdeel natural language processing wordt een Virtual Reality spel genoemd, Starship Commander. Door de dingen die je zegt worden acties uitgevoerd. "open the hatch". "start autopilot". Maar exacte match op deze woorden/zinnen, dat was hoe het vroeger in Leisure Suit Larry ging: "ken send me". Als je niet "hatch" zegt, maar "open the door" of "the port", dan moet het programma "zo slim zijn" om te snappen dat je "the hatch" bedoelt. Iedereen die inmiddels met ChatGPT werkt vindt dat waarschijnlijk nu heel normaal. Mocht je meer van het spel willen weten, dan kun je hier de site bekijken.
Naast de technieken komen ook nog de "kansen en risico's van AI" aan bod.
Het lijstje wat hier genoemd wordt is:
- vooroordelen kunnen resultaten beïnvloeden, oftewel, als alle medewerkers "man" zijn kan een sollicitatie door een "vrouw" automatisch afgewezen worden
- fouten kunnen schade opleveren, een autonoom rijdende auto waarbij de camera een afwijking heeft waardoor de auto een botsing veroorzaakt
- (gevoelige) data kan openbaar worden, een medisch diagnostische bot slaat gegevens op, maar niet veilig, waardoor patiëntgegevens op straat komen te liggen
- oplossingen kunnen niet voor iedereen werken, een home-automation assistent zonder audio-output (alles via een scherm), maar de gebruiker is blind
- gebruikers moeten een complex systeem vertrouwen, een AI financiële tool die jou adviezen geeft: waar is het op gebaseerd?
- wie is aansprakelijk voor AI gedreven beslissingen, door gezichtsherkenning is een onschuldig persoon beschuldigd van moord
AI ontwikkeling bij Microsoft steunt op zes principes, waar tijdens het bouwen rekening mee gehouden moet worden.
Fairness - iedereen moet eerlijk behandeld worden.
Microsoft heeft een bericht daarover gedeeld wat je hier kunt nalezen.
Reliability and safety - door uitgebreide testen en deployment managementprocessen moet gezorgd worden dat de software werkt "zoals verwacht".
Privacy and security - in veel "big data" die doorgespit wordt zitten persoonlijke details, zaken die privé moeten blijven.
Inclusiveness - op basis van gender, geloof en andere zaken mag het systeem niet "oordelen".
Transparency - het moet duidelijk zijn wat een systeem doet, wat het doel is, hoe het werkt en welke beperkingen gelden.
Accountability - mensen zouden aansprakelijk moeten zijn voor AI systemen. Met de principes waarmee gebouwd wordt zou de oplossing moeten voldoen aan ethische en wettelijke normen.
Hiermee is de eerste module afgerond.
En ook nog even een irritatiepuntje opgelost. Elke keer krijg ik de pagina's op Microsoft Learn in het Nederlands te zien. Soms een beetje "mwah-mwah" vertaald. Ik wil gewoon de originele Engelse teksten. Je kunt dan de URL aanpassen, waar /nl-nl/ staat naar /en-us/ aanpassen. Maar dat kan je dan elke keer doen. Via een vraag van een ander vond ik het antwoord: ga naar de instellingen van je browser. Ergens staat daar dat Nederlands jouw taal is, in Firefox had ik daar ook Engels in variant en-us en Engels in variant en staan. Door Nederlands naar beneden te verplaatsen, zou ik nu gewoon de Engelse teksten moeten krijgen. Een eerste snelle test geeft me de indruk dat dit inderdaad werkt. Eindelijk!
## DE 2e WEEK ##
We zijn een week later. Door met Microsoft Azure AI Fundamentals: Computer Vision.
We beginnen met Vision. Een vak wat ik ook bij de opleiding Hogere Informatica gevolgd heb. Waarbij ik nog een eindopdracht met OCR gedaan heb. Leuk! In deze module zie je hoe je met een filter ervoor kunt zorgen dat "de randen" van objecten scherper weergegeven worden.
Daarna gaan we door naar Machine Learning voor computer vision. Daarin wordt verwezen naar de Fundamentals of Machine Learning, een module op Microsoft Learn.
In de module wordt Microsoft Florence genoemd. Dit is een model wat getraind is met een grote hoeveelheid afbeeldingen van het internet, bevat zowel een language encoder als een image encoder. Het kan gebruikt worden om afbeeldingen te classificeren, om objecten te detecteren, captioning: beschrijving van afbeeldingen en tagging: maak een lijst van relevante tekst-tags voor een afbeelding.
Als je gebruikt wilt maken van Azure AI, dan kun je kiezen uit Azure AI Vision: specifieke resource voor AI vision, waarbij je geen gebruik gaat maken van andere Azure AI services en Azure AI services, in deze resource kun je ook andere Azure AI bronnen gebruiken zoals Azure AI Language, Azure AI Custom Vision, Azure AI Translator. Als je aan de slag wilt gaan, kun je dat doen met Azure AI Vision Studio.
Ik had al OCR genoemd, dat wordt hier ook als voorbeeld genoemd. Met een verwijzing naar de Read text with Azure AI Vision module.
Als de modellen niet voldoen, kun je ook een eigen model maken. Dat valt buiten de scope van deze module, maar mocht je er meer over willen weten, dan kun je door naar de Azure AI Vision documentatie.
Mocht je een abonnement voor Azure hebben, dan kun je afbeeldingen gaan analyseren met Vision Studio. Dit punt sla ik nog even over, maar mocht ik het later alsnog doen (of zou jij die oefening willen doen), dan hier de link: https://go.microsoft.com/fwlink/?linkid=2250145.
Hierna gaan we door met de gezichtsherkenning "facial recognition".
Je kunt daarmee bezig met Azure AI Vision, Azure AI Video Indexer en Azure AI Face.
Je zit met privacy-maatregelen en dergelijke. Microsoft ondersteunt de Responsible AI Standard. Azure AI Face en Azure AI Vision hebben een Limited Access policy: https://aka.ms/AAh91ff.
Als je van extra mogelijkheden gebruikt wilt maken, zul je eerst een formulier in moeten vullen: https://aka.ms/facerecognition.
Bij de tips voor "goede resultaten" zijn dit de tips:
- JPEG, PNG, GIF en BMP
- het bestand mag tot 6 MB groot zijn
- face size range: is van 36x36 pixels tot 4096x4096 pixels. Kleiner of groter wordt niet gedetecteerd
- afdekken met handen, vreemde hoeken, overbelichting, het kan allemaal een rol spelen
Als je zelf met een oefening in Vision Studio met "face detection" aan de slag wil gaan, dan is dit de link.
En dan hebben we nog de fundamentals van OCR.
Als je met Vision Studio en OCR aan de slag wilt gaan, dan is hier een oefening: https://go.microsoft.com/fwlink/?linkid=2249951
## DE 3e WEEK ##
Op 22 januari 2025 zat ik in Groningen in de schouwburg (Spot) bij een voorstelling van Jochem Myjer. Dus op 29 januari 2025 wordt het weer "hoog tijd" om door te gaan met de volgende module, door met Microsoft Azure AI Fundamentals: Natural Language Processing.
Deze module bestaat uit een aantal blokken.
Fundamentals of Tekst Analysis with the Language Service
Computers proberen teksten te interpreteren zoals mensen dat doen. Daarvoor maken ze gebruik van NLP, natural language processing. Hiermee kun je een analyzer maken die het sentiment in berichten kan bepalen, een applicatie die documenten doorzoekt en daar een samenvatting van kan maken en een applicatie die merken en bedrijven uit teksten kan filteren.
Azure AI Language is een dienst in de cloud die dit kan.
Je tekst kan worden opgedeeld in "tokens". Soms zijn dat alle losse woorden in een zin.
Ondersteunend aan "tokenization" kunnen deze acties uitgevoerd worden:
- Het normaliseren van de tekst. Alles in kleine letters, punctuatie kan verwijderd worden. Alleen als je analyse op woordniveau ingericht is. Want die verliest de betekenis van de zin: meneer De Boer is een boer met koeien. boer wordt dan als 1 token gevonden, maar heeft een andere betekenis.
- Verwijderen van "stopwoorden". De, het, een, verwijder die woorden zodat je de "belangrijke woorden" over houdt.
- n-grams: een multi-term zin als "ik heb" en "hij liep". Een enkel woord is een "unigram", twee zijn een "bi-gram", drie een "tri-gram" enzovoort. Door woorden als groepen te beschouwen kan het systeem de tekst beter begrijpen.
- Stemming: een techniek met algoritmes om zaken samen te voegen als ze dezelfde bron hebben. Dus "power", "powered" en "powerful" worden als 1 token beschouwd.
Het analyseren op basis van het aantal keren voorkomen van een woord kan bij 1 document een goede manier zijn om dat document te analyseren. Bij meerdere documenten heb je een manier nodig om te bepalen welke woorden in welk document het meest relevant zijn.
Met logistic regression train je een machinemodel op basis van positief en negatief.
Je hebt ook de semantische language models. Met vectoren geef je dan aan of zaken bij elkaar horen (een hond, een kat) of iets wat daar niet bij hoort (een skateboard).
Als je er zelf mee aan de slag wilt gaan, dan kun je dat doen met Azure AI Language. Het analyseren van teksten ondersteunt:
- named entity recognition: herkennen van namen, evenementen, plaatsen.
- entity linking: linkt een bekende identiteit met de wikipedia-pagina
- personal identifying information (PII) detection: identificeert persoonlijke gevoelige informatie, waaronder gezondheidsgegevens (personal health information, PHI)
- language detection: bepaalt de taal van de tekst en geeft een code terug (nl voor Nederlands)
- sentiment analysis en opinion mining: kan bepalen of de tekst positief of negatief is
- summarization: kan de tekst voor je samenvatten
- key phrase extraction: haalt de belangrijkste informatie uit een willekeurige tekst
Om Azure AI Language in een applicatie te gebruiken moet je een resource in je abonnement aanmaken.
Je kunt kiezen voor:
- language resource - als je alleen Azure AI language services gaat gebruiken of als je toegang en facturen los wilt van je andere diensten.
- Azure AI services resource - als je Azure AI language wilt combineren met andere diensten, toegang en facturen wilt combineren.
Fundamentals of question answering with the Language Service
Veel klantenservice-diensten worden overspoeld met vragen. Daarom worden vaak chatbots ingezet om de "makkelijke vragen" te beantwoorden.
Met de huidige ontwikkelingen met chatGPT kun je waarschijnlijk ook de moeilijk te beantwoorden vragen op die manier laten beantwoorden.
Je kunt hier gebruik van maken via de Azure AI Language service. Dat kan met de REST API en SDK, maar ook (bij voorkeur als ik dit lees) met de Language Studio.
Door bronnen aan te leveren (de FAQ pagina op de website), het invoeren van vragen en antwoorden en ook alternatieve vragen voor andere vraagstellingen voor dezelfde vraag kun je de dienst inregelen.
Als je wilt gaat testen, kun je dat hier doen met Language Studio. Je hebt wel een Azure abonnement nodig: https://go.microsoft.com/fwlink/?linkid=2249952
Fundamentals of conversational language understanding
In 1950 heeft Alan Turing de Imitation Game (Turing Test) ontworpen om te laten zien dat het soms bijna onmogelijk is om te bepalen of degene waar je een gesprek mee hebt een mens is of een machine. Ik heb hier nog het boek "The annotated Turing" liggen wat ik ooit nog eens moet lezen. In ieder geval, Azure AI Language service ondersteunt conversational language understanding (CLU). Hiermee kun je bijvoorbeeld de instructie geven "doe het licht uit" en begrijpt het systeem dat (en voert het uit).
CLU bestaat uit 3 concepten:
- Utterances, uitingen, je zegt iets als "doe het licht aan".
- Entities, entiteiten, waar wordt over gesproken (in bovenstaand voorbeeld het licht)
- Intents, wat is het doel, wat moet bereikt worden?
Bij het groeperen op intent, zorg ook dat er een "none" is, de fallbackgroep voor vragen/uitspraken/commando's die niet begrepen worden
Als je in Azure met CLU aan de slag wilt gaan, dan heb je een resource nodig.
- Azure AI Language, hiermee kun je apps maken die hoogwaardig natuurlijke taal snappen. Kan gebruikt worden voor voorspelling, maar ook voor Authoring.
- Azure AI services, een algemene groep waar CLU een onderdeel van is. Je kunt CLU alleen gebruiken voor voorspelling.
Authoring, je maakt hier entiteiten en intenties. Je kunt de code schrijven, maar de makkelijkste manier hiervoor is Language Studio.
Je traint je model. Als je jouw model publiceert kun je die gebruiken voor de voorspellingen "wat wordt bedoeld met de vraag".
Als je een Azure subscription heb kun je een oefening met Conversational Language doen. https://go.microsoft.com/fwlink/?linkid=2250147
Fundamentals of Azure AI Speech
Met gesproken instructies kunnen we inmiddels apparaten bedienen. Deze moeten speech recognition ondersteunen: detecteer en interpreteer gesproken woorden en speech synthesis: de mogelijkheid om zelf gesproken output te leveren.
Azure AI Speech biedt spraak naar tekst, tekst naar spraak en vertaalmogelijkheden.
Software die gesproken tekst kan opvangen en omzetten naar tekst bevatten een aantal modellen:
- een akoestisch model dat het audiosignaal omzet naar phonemes (representaties of specifieke geluiden)
- een taal model dat die phonemes omzet naar tekst op basis van een algoritme welke inschat welk woord welke tekst is.
Het omzetten naar tekst kan gebruikt worden voor:
- ondertiteling bij opnames of live video
- een transcript maken van een telefoongesprek of overleg
- automatische ingesproken tekst in een dictafoon omzetten naar tekst
- het bepalen van de intentie om dit later te verwerken
Om speech synthesis uit te voeren heb je een tekst en een stem nodig.
Het omzetten naar gesproken tekst, dat gebeurt door tokenization van de tekst naar woorden, het toewijzen van fonetische geluiden aan een woord. Daarna wordt het transcript in prosodic units onderverdeeld (uitspraken, zinnen) welke phonemes vormen die omgezet gaan worden naar audio. Daar wordt een stem aan toegewezen, de snelheid van spreken, toonhoogte en volume.
Met de Azure AI Speech to tekst API kun je real-time of in batches audio in tekstformaat om laten zetten. Het model is gebaseerd om het UML-model van Microsoft.
Met de Tekst to speech API kun je tekst om laten zetten naar een audiobestand.
Als je wilt weten welke talen ondersteund worden: speech to text, text to speech.
Je kunt Azure AI Speech gebruiken via de interface van Studio, maar ook via de Command Line Interface (CLI) en via REST API's en SDK's.
Om er gebruik van te maken is het ook hier weer tijd om een resource aan te maken.
- Speech resource: als je alleen Azure AI Speech gaat gebruiken, of als je toegang en/of facturen los wilt beheren
- Azure AI service resource: als je Speech wilt combineren met andere diensten en toegang/facturen wilt combineren
Als je een Azure subscription hebt kun je een oefening met Speech Studio doen: https://go.microsoft.com/fwlink/?linkid=2250148
Fundamentals of language translation
Dit blok had ik nog niet gedaan, dus dat zal nieuw zijn.
In deze module gaan we kijken naar Azure AI Translator en Azure AI Speech.
Bij vertalingen is er geen 1-op-1 omzetting van woorden wat een goed resultaat oplevert. De bedoeling, de toon, het moet allemaal goed verwerkt worden.
In "vroeger tijden" werd de letterlijke vertaling toegepast. Probleem was dat de andere taal mogelijk geen woord heeft voor het woord in de andere taal.
Of door een (te) letterlijke vertaling wordt de bedoeling van de zin veranderd of gaat de context verloren.
AI systemen moeten niet alleen de woorden begrijpen, maar ook de semantische context.
Tekst translation wordt gebruikt om webpagina's, e-mails om te zetten naar andere talen.
Speech translation is voor het omzetten van gesproken taal.
Voor vertalingen kun je gebruik maken van de volgende diensten:
- Azure AI Translator service, tekst naar tekst
- Azure AI Speech service, spraak naar spraak en spraak naar tekst.
Azure AI Translator ondersteunt meer dan 130 talen.
Het omzetten van spraak, daarbij worden meer dan 90 talen ondersteund.
Met Azure AI Translator kun je:
- text translation: snel en goed teksten in real-time omzetten
- document translation: meerdere documenten vertalen en daarbij de originele documentstructuur behouden
- custom translation: je eigen neural machine translation systemen (NMT) maken
Via de API kun je zaken finetunen, zoals:
- profanity filtering, standaard blijft dit erin, via configuratie kun je het eruit filteren. als ik poep-poep-poep zeg, kan dat eruit gefilterd worden
- selective translation, je kunt bepaalde inhoud een tag geven, zodat dit niet vertaald wordt. Als het verhaal over Heineken, Nike, Reebok gaat, dat hoef je niet te vertalen.
Als je een Azure subscription hebt, dan kun je de oefening uitvoeren. https://go.microsoft.com/fwlink/?linkid=2285984
## DE 4e WEEK ##
Deze week Microsoft Azure AI Fundamentals: Document Intelligence and Knowledge Mining.
Dit onderdeel is verdeeld in 2 modules.
Ik begin met de eerste Fundamentals of Azure AI Document Intelligence.
Stel je voor dat bij een bedrijf duizenden bonnetje verwerkt moeten worden. Iemand moet dat overtypen. Errorgevoelig, want na 3 uren overtypen begin je volgens mij wel sterretjes te zien.
Met Document Intelligence kun je dat met AI geautomatiseerd laten uitvoeren. En het is nog beter dan alleen maar de "simpele" OCR herkenning.
Het kunnen uitfilteren van tekst, indeling en key-value paren, daar staat document analysis voor.
Ik heb zelf code gemaakt om de PDF van de Top 2000 om te zetten naar tekst, maar ook daar zitten soms wat vreemde kolommen in. En daar schuift soms wel eens wat. Met document analysis is dat misschien wel opgelost... toch zelf nog maar eens testen!
Azure AI Document Intelligence bestaat uit features die gegroepeerd zijn per modeltype:
- document analysis: algemene analyse van documenten, geeft een data representatie terug met daarbij ook "gebieden die interessant zijn" en de relaties
- prebuilt models: voorgetrainde modellen die ingericht zijn om visitekaartjes, paspoorten en andere documenten te ontcijferen, deze weten waar de specifieke velden zitten
- custom models: een model wat je zelf traint om jouw eigen formulieren te laten verwerken. Dat kan met een custom generative AI model en een custom neural model.
Met de voorgedefinieerde modellen kun je "redelijk simpel" data uit de scans halen:
- klant- en leverancier-details van facturen
- verkopen en transactiedetails van bonnetjes
- identificatie en verificatiedetails van ID-bewijzen
- ziekenfondsverzekering details
Het receipt model (bonnetjesmodel) is getraind op verschillende soorten types, thermal receipts (geprint op/in hittegevoelig papier), hotelbonnetjes, bonnetjes van de benzinepomp, creditcardbonnen en parkeerbonnen.
Om Azure AI Document Intelligence te gebruiken moet je een resource hebben, van type Document Intelligence of van Azure AI Services. De tip is dat als je nog nooit Document Intelligence gebruikt hebt, je de free tier moet kiezen. Er zijn wel wat beperkingen (alleen de eerste 2 pagina's van een PDF of TIFF document worden verwerkt). Na het maken van de resource kun je deze in Document Intelligence Studio gebruiken.
Als je een abonnement voor Azure hebt, kun je de oefening uitvoeren, het extraheren van data uit een document: https://go.microsoft.com/fwlink/?linkid=2250315
En door met de volgende module, Fundamentals of Knowledge Mining and Azure AI Search.
Je hebt soms een "bak met data", ongestructureerd. Afbeeldingen, teksten. Met Azure AI Search kun je daar indexen op laten maken en worden je gegevens eindelijk "doorzoekbaar".
Azure AI Search is een programmeerbare zoekmachine gebouwd op Apache Lucene. Het platform heeft een SLA van 99.9%.
Het biedt de volgende mogelijkheden:
- data uit elke bron (zolang het als JSON aangeleverd kan worden), met "auto crawling support" voor bepaalde databronnen in Azure
- meerdere opties voor zoeken en analyse: vector search, full text en hybride
- AI enrichment: Azure AI mogelijkheden voor afbeeldingen en tekstanalyse van rauwe content
- linguistic analysis: analyse voor 56 talen. De natural language processors worden ook door Bing en Office gebruikt.
- configurabele user experience: opties voor query syntax, zoals vector query's, text search, hybride query's, fuzzy search, autocomplete, geo-search filteren gebaseerd op je huidige locatie en meer
- Azure schaalbaarheid, security en integratie: op de datalaag en met Azure AI services en Azure OpenAI
Het bouwen van een search index volgt een bepaalde flow "pipeline":
- begin met een data source: de opslaglocatie voor de originele documenten, dus je PDF's, video's, afbeeldingen. Voor Azure AI Search kan dit in Azure Storage zijn of tekst in een database zoals Azure SQL Database of Azure Cosmos DB.
- indexer: automatisering die de data van de bron door "document cracking and enrichtment" omzet naar indexen. Een indexer verwerkt je data en zet het om naar JSON.
- document cracking: de indexer laat je zijn werk doen, dus bestanden openen en inhoud eruit halen.
- enrichment: de indexer stuurt de data door AI enrichment, waarbij Azure AI op je data wordt toegepast om meer informatie daar uit te halen. Dit kan door het toevoegen en combineren van skills in een skillset. Dit kunnen ingebouwde skills zijn zoals OCR, maar ook eigen skills die jij aanlevert. Voorbeelden van enrichment zijn het toevoegen van beschrijvingen aan foto's en het sentiment van teksten bepalen. Deze verrijkte informatie kan naar een knowledge store doorgestuurd worden waar dit wordt opgeslagen in tabellen en blobs in Azure Storage, zodat daar later (los van dit proces) nog analyses op uitgevoerd kunnen worden of op een andere manier verder verwerkt kunnen worden.
- push to index: de geserialiseerde JSON wordt in de search index gezet.
Azure AI Search query's stuur je als HTTP of REST API requests, respons wordt als JSON aangeleverd. Er worden 2 syntaxen ondersteund: simple en full Lucene. Als je meer wilt weten over de query-syntax, dan kun je de documentatie doorlezen.
Als je een Azure abonnement hebt, dan kun je de oefening doen: https://go.microsoft.com/fwlink/?linkid=2250149
## DE 5e WEEK ##
Deze week Microsoft Azure AI Fundamentals: Generative AI.
Bij deze module zat ik op 37%, dus daar was ik al eens mee begonnen, maar had de module niet afgemaakt.
We beginnen met de fundamentals van Generative AI.
Bij het intro staat dat deze module is van verschillende leerpaden.
De andere leerpaden waar dit onderdeel van uitmaakt is:
- Copilot Foundations
- Enhance security operations by using Microsoft Security Copilot
- GitHub responsible AI
- SC-200: Mitigate threats using Microsoft Security Copilot
Bij het intro laat Microsoft zien haar klassieken te kennen. Er wordt namelijk een citaat van Arthur C. Clarke gegeven (schrijver): elke perfect geavanceerde technologie is niet te onderscheiden van magie. Bij AI komt dit punt steeds dichterbij.
Generatieve AI beschrijft het deel van AI waarbij originele content gemaakt wordt. Een populaire tool die hieronder valt is Microsoft Copilot.
Generatieve AI modellen worden ondersteund door language models waarmee natural language processing (NLP) taken afgehandeld kunnen worden, zoals het bepalen van sentiment in tekst, het samenvatten van tekst, meerdere teksten vergelijken om de semantische gelijkheid te bepalen, nieuwe teksten genereren.
Via het transformer model worden taalsets opgebouwd, met een encoder en decoder. Als er maar genoeg teksten beschikbaar zijn, is de output moeilijk van menselijke output te onderscheiden.
De eerste stap om een transformer model te trainen is het opdelen van zaken in tokens.
Vervolgens komen de "embeddings". Met vectoren geef je aan welke woorden bij elkaar horen en welke daar geen relatie mee hebben.
Dan heb je de attention layer. Op basis van de "omringende woorden" kan de betekenis van een token veranderen. Ik lig op de bank of ik loop naar de bank om geld te storten, dankzij de omringende woorden weet je dat de eerste bank een andere is dan de tweede.
Microsoft Azure biedt je language modellen aan. GPT of bijvoorbeeld DALL-E (voor het genereren van afbeeldingen). Naast de AzureAI modellen staan in de catalogus ook andere open-source modellen zoals die van OpenAI, HuggingFace, Mistral, Meta en anderen.
Een aantal voorbeelden:
- GPT-3.5-Turbo, GPT-4 en GPT-4o: conversation-in en message-out language modellen.
- GPT-4 Turbo with Vision: model wat OpenAI ontwikkeld heeft en afbeeldingen kan analyseren. Kan hier vragen over beantwoorden.
- DALL-E: een model wat originele afbeeldingen kan genereren, variaties van afbeeldingen kan maken en afbeeldingen kan bewerken.
Over het algemeen worden language models verdeeld naar "large language models (LLM)" en "small language models (SLM)". De naam geeft aan dat de eigenschappen zijn (makkelijker of moeilijker te fine-tunen, performance-impact door de grootte, beperkt qua gebied om vragen te beantwoorden e.d.
Microsoft heeft Copilot. Ontwikkelaars kunnen hun eigen copilot-achtige agents bouwen op basis van dezelfde open architectuur.
De verschillende smaken zijn: gebruik van Microsoft Copilot zoals aangeboden, Copilot zelf uitbreiden of een Copilot-achtige agent bouwen.
Je kunt Copilot in je browser uitvoeren via copilot.microsoft.com, in je Edge-browser heb je standaard Copilot beschikbaar.
Je hebt ook Microsoft 365 Copilot. Je kunt een nieuw document laten aanmaken en via een prompt bijvoorbeeld zorgen dat je teksten ingekort worden.
Je kunt een Powerpoint presentatie laten genereren op basis van de inhoud van een document en e-mail, afbeeldingen toevoegen en je presentatie verder verbeteren.
In Microsoft Outlook kan Copilot je mailtjes samenvatten en ook relevante e-mails en documenten vinden voor de vergadering die je zo hebt.
Je kunt ook dingen met Teams, Excel doen, dat wordt hier verder niet toegelicht, dat kun je op de copilot-for-microsoft-365 pagina bekijken.
In Dynamics 365 Customer Service kan Copilot vergelijkbare meldingen erbij zoeken, oplossingen vinden en deze met de gebruikers communiceren.
In Dynamics 365 Sales voor het snel beschikbaar hebben van klant- en bedrijfsgegevens door de CRM en andere systemen te koppelen.
In Dynamics 365 Supply Chain Management, kan orders verwerken, kan impact en risico bepalen voor bepaalde beslissingen.
In Microsoft Fabric, kan Copilot automatisch code genereren om data in Spark notebooks te analyseren, manipuleren en visualiseren.
In Power BI, kan Copilot je data analyseren en op basis daarvan suggesties doen voor data-visualisaties (en die ook maken).
Copilot for Security, assistentie bij het opsporen en oplossen van security-issues.
Copilot for Azure, integratie in de Portal om administrators te ondersteunen.
En natuurlijk Copilot voor Github. Helpt ontwikkelaars hun productiviteit te maximaliseren door code uit te leggen, documentatie toe te voegen en nieuwe code te genereren.
De prompt. Als je duidelijke, uitgebreide instructies geeft zal het resultaat meer overeenkomen met wat je wil/verwacht dan als je een onduidelijke opdracht geeft en AI moet raden wat je eigenlijk wil.
De stappen die je kunt volgen zijn:
- start met een specifiek doel wat de assistent voor je moet doen
- lever de bron aan wat de assistent kan gebruiken als basis voor de output
- voeg context toe om maximaal resultaat te halen
- voeg duidelijke verwachtingen toe
- de eerste keer gaat het misschien niet goed, ga verder op basis van dat resultaat (specificeer meer) - dus itereer
Je prompt is vaak opgesteld met bepaalde voorbereidingen;
- een system massage dat voorwaarden en regels opstelt: reageer als een assistent op een vriendelijke manier
- hou historie bij, zodat de vrager kan terug verwijzen naar de eerdere vraag/vragen
Voor het uitbreiden van Copilot en het bouwen van Copilot-achtige agents zijn 2 tools beschikbaar, Copilot Studio en Azure AI Foundry.
Als je een abonnement hebt kun je de oefening doen: https://go.microsoft.com/fwlink/?linkid=2249955
De module "Plan and prepare to develop AI solutions on Azure" is eigenlijk een samenvatting van de modules die al geweest zijn.
Wat hier wel een toevoeging is, is het overzicht van de beschikbaarheid van de producten en de beschikbaarheid van de modellen.
Wat natuurlijk ook van belang is: wat zijn de kosten? Daarvoor heb je het overzicht van de Azure AI services pricing en natuurlijk de algemene Azure calculator.
Dan is de unit over Azure AI Foundry.
Je begint met een hub. Dit is een top-level container die resources, data, connecties bevat. Een hub kan uit meerdere projecten bestaan.
Als je een hub aanmaakt dan worden ook de volgende zaken aangemaakt:
- een multi-service Azure AI services resource om toegang met Azure OpenAI en andere AI diensten te krijgen.
- een key-vault voor gevoelige data (zoals connecties en credentials).
- een storage-account waar de data van de hub en projecten opgeslagen wordt.
- optioneel een Azure AI Search resource die je kunt gebruiken om data te indexeren en die gebruikt kan worden om basis voor AI prompts te leggen (grounding).
Je kunt naar wens meer resources toevoegen (bijvoorbeeld Azure AI Face). Via RBAC wordt de toegang geregeld.
Gebruikers kunnen deelnemen aan een project. Met Azure AI Foundry heb je:
- een model catalogus waarin je datamodellen kunt vinden/zoeken/gebruiken, zoals Azure OpenAI, maar ook Hugging Face en anderen.
- playground waar je prompts kunt testen met generatieve AI modellen.
- toegang tot Azure AI services, inclusief visuele interfaces om te experimenteren met services en ook te configureren.
- Visual Studio Code containers die hosted ontwikkelomgevingen draaien waar je kunt schrijven, testen en deployen.
- Fine-tuning van AI modellen om aan jouw wensen te voldoen.
- Prompt Flow, een orchestration tool waarmee je de logica definieert van de applicatie interactie met het model.
- Tools voor toewijzen, evalueren en verbeteren van jouw AI applicaties, met tracing, evaluation, content safety en security management.
- Beheer van project assets, zoals je modellen en endpoints, data en indexes en je gedeployede web-apps.
Meer informatie over hubs en projecten, informatie-pagina.
Een administrator kan de connections in een hub inregelen. Gebruikers maken geen rechtstreekse connectie, maar gebruiken de objecten die in de projecten beschikbaar zijn.
Meer informatie over connected resources, informatie-pagina.
In een hub heb je verschillende rollen. De standaard rollen zijn:
- Owner. Volledige toegang. De maker van de hub krijgt automatisch deze rol.
- Contributor. Volledige toegang tot de hub, ook om nieuwe hubs te maken, maar kan geen hub-rechten op de bestaande hub aanpassen.
- Azure AI Developer. Alle rechten behalve het aanmaken van nieuwe hubs en het instellen van rechten op de bestaande hub.
- Azure AI Inference Deplyment Operator. Alle rechten om een resource deployment in een resource group uit te voeren.
- Reader. Read-only toegang tot de hub. Alle project-leden van de hub krijgen automatisch deze rol.
Ook in een project heb je rollen. De standaard rollen zijn:
- Owner. Volledige toegang tot het project, ook op rechten aan projectgebruikers toe te wijzen (of verwijder).
- Contributor. Volledige toegang tot het project, maar kan geen rechten aanpassen.
- Azure AI Developer. Rechten op de meeste acties, inclusief het aanmaken van deployments, maar kan geen rechten aan projectgebruikers toewijzen.
- Azure AI Inference Deployement Operator. Rechten om alle acties uit te voeren die noodzakelijk zijn om een resource deployment binnen een resource group aan te maken.
- Reader. Read-only toegang tot het project.
Als je meer wilt weten over het beheren van rollen voor hubs en projecten: informatie-pagina.
De beschikbaarheid in de regio kun je hier controleren.
Het plannen en beheren van de kosten van AI Foundry kun je hier controleren.
En de quota's die gelden kun je hier controleren.
Hoewel je veel dingen in de Foundry Portal kunt doen zijn wij, ontwikkelaars, gek op tools en SDK's. En die zijn er ook voor Foundry, gelukkig.
Zo is er een Visual Studio Code container image beschikbaar: start hier.
Wat kun je nog meer gebruiken?
- Azure AI Foundry SDK.
- Azure AI Services SDK. Je kunt ook met de REST API's werken.
- Azure AI Agent Service. Hiervoor gebruik je de Azure AI Foundry SDK, welke je kunt integreren met frameworks zoals AutoGen en Semantic Kernel.
- De Prompt Flow SDK, waarmee je logica kunt "orchestreren" voor interactie.
Responsible AI.
- Fairness. Iedereen moet gelijkwaardig behandeld worden.
- Reliability and Safety. De zelfrijdende auto die niet moet gaan spookrijden.
- Privacy and Security. Persoonlijke details moeten privé blijven.
- Inclusiveness. Ook dove en blinde mensen moeten "het" kunnen gebruiken.
- Transparency. Hoe komt het systeem tot deze conclusie?
- Accountability. Wie is verantwoordelijk dat de chatbot zegt dat gras blauw van kleur is?
Microsoft heeft hier een site voor, de Microsoft responsible AI site.
Als je een abonnement hebt, dan kun je aan de slag met de oefening: https://go.microsoft.com/fwlink/?linkid=2260323
Het laatste deel heeft als titel "responsible generative AI".
Waarschijnlijk ook al eerder voorbij gekomen, de guidelines hiervoor zijn na te lezen op: https://aka.ms/RAI
Op basis van die richtlijnen zijn dit de vier onderdelen waar je doorheen gaat:
- identificeer potentiële punten die partijen kunnen benadelen.
- meet de aanwezigheid van deze punten in de output die je oplossing oplevert.
- probeer die punten in meerdere lagen van je oplossing te minimaliseren om aanwezigheid en impact in te perken en informeer ook je gebruikers over eventuele risico's.
- neem je oplossing in gebruik, maar wel op een verantwoorde manier door een deployment en operational readiness plan te volgen
Er wordt gezegd dat deze onderdelen behoorlijk overeenkomen met de functies in het NIST AI Risk Management Framework.
We gaan deze onderdelen doorlopen.
Identificatie
Om de grenzen en gedrag van je diensten en modellen te begrijpen, raadpleeg daarvoor de documentatie. Zo heeft Azure OpenAI een transparancy note.
Aanvullend kunnen individuele ontwikkelaars documentatie toevoegen zoals de OpenAI system card voor het GPT-4 model.
Er wordt het advies gegeven om de Microsoft Responsibility AI Impact Assessment Guide ( https://aka.ms/RAIImpactAssessmentGuidePDF ) door te lezen en het Responsible AI Impact Assessment template te gebruiken om potentiële schadelijke resultaten te documenteren.
En je hebt nog de information en guidelines.
Prioritering
Het voorbeeld wordt gegeven voor het ziek kunnen worden van niet goed gekookt voedsel en van een recept waarvan je dood gaat. Dan is de prioriteit wel duidelijk.
Testen en controleren of je schadelijke resultaten er zijn
Mogelijk kom je nog meer bevindingen tegen.
Met Red teaming zou je dit kunnen testen, meer informatie daarover is hier te vinden.
Documenteer en deel de details
Zorg dat je een lijst met items hebt, gesorteerd op prioriteit en hou deze bij: nieuwe bevindingen, dan toevoegen aan de lijst.
Het wegwerken van je schadelijke resultaten.
We zien een overzicht van hoe de onderdelen in elkaar zitten.
Je hebt een model, daar omheen een safety system, daar omheen zit de metaprompt en grounding, en uiteindelijk de "user experience".
Je kunt voor het model GPT-4 gebruiken, maar met een kleiner model, meer gericht op (geldige) vragen die je wilt beantwoorden is een kleiner model mogelijk beter. Of je traint het met eigen data om de schadelijke resultaten weg te werken.
De safety system layer, bijvoorbeeld Azure AI Foundry ondersteunt content filters die je kunt instellen op 4 severity levels (safe, low, medium en high) voor 4 categorieën van schadelijke resultaten (haat, sexueel, geweld en zelfbeschadiging).
Metaprompt en grounding layer, door de prompt specifiek af te stellen (probeer je te) voorkomen dat er schadelijke output uit komt. Met retrieval augmented generation (RAG) kun je contextuele data van vertrouwde bronnen gebruiken en dat in je prompts gebruiken.
De user experience layer bevat de software applicatie waarmee de gebruikers interactie hebben met je AI model. Ook hier kun je filtering toevoegen.
Voordat je een generative AI oplossing oplevert, moet je valideren aan welke regels je moet voldoen en teams de mogelijkheid bieden om je systeem en documentatie te reviewen. Veel voorkomende zaken die hierbij spelen zijn:
- legal
- privacy
- security
- accessibility (toegankelijkheid)
Een "echte" release behoeft planning en voorbereiding. Neem deze adviezen in acht:
- maak een phased delivery plan dat je de mogelijkheid biedt om de oplossing eerst aan een kleine groep gebruikers aan te bieden. Hierdoor krijg je feedback en identificeer je problemen voordat je het beschikbaar maakt voor een groter publiek.
- maak een incident response plan dat de schattingen bevat van de tijd die het duurt om op een niet ingeschat incident te kunnen reageren.
- maak een rollback plan waarin de stappen beschreven staan om je oplossing naar een eerdere versie terug te zetten bij een incident.
- implementeer de mogelijkheid om onmiddelijk schadelijke systeemresponses te kunnen blokkeren als ze ontdekt worden.
- implementeer een mogelijkheid om specifieke gebruikers, applicaties of IP adressen te blokkeren in het geval van misbruik.
- implementeer een manier aan gebruikers om feedback te sturen en problemen te rapporteren. Specifiek, zorgt dat ze inhoud als "foutief", "incompleet", "schadelijk", "beledigend" of "andersoortig problematisch" kunnen melden.
- track telemetry data waarmee je kunt bepalen of een gebruiker "tevreden" is met het systeem en identificeer op die manier functionele gebreken of uitdagingen qua gebruiksvriendelijkheid. Telemetry gegevens opvragen/bewaren moet natuurlijk wel voldoen aan de wetten, de regels die bij je bedrijf gelden en hoe deze in het privacy-statement van de gebruiker genoemd zijn.
Veel Azure diensten hebben content filters die zorgen voor een veilig(er) product.
Azure AI Content Safety biedt meer mogelijkheden gericht op het veilig houden van AI en copilots. Het detecteren van ongepast en gewelddadig taalgebruik, zowel bij de input als de output en het detecteren van gevaarlijke of ongepaste input.
Features van Azure AI Content Safety bevat:
- prompt shields: scans op het risico van gebruiker "input aanvallen" op het model.
- groundedness detection: detectie of de textuele antwoorden "grounded" zijn in een bron-context.
- protected material detection: scan naar content die copyrights bevat.
- custom categories: definieer eigen categorieën voor nieuwe of opkomende patronen.
Details en quickstarts kun je hier vinden: documentatie.
Als je een abonnement hebt kun je met de oefening aan de slag: https://go.microsoft.com/fwlink/?linkid=2273316
## DE 6e WEEK ##
Ik dacht klaar te zijn, maar toen ik mijn examen wilde boeken, zag ik dat ik de module nog niet volledig afgerond had! Zo was er een volledige module "Fundamentals of AI agents on Azure" die ik nog moest doen. Dit deel dus eerst maar doorlopen;
Er wordt gezegd dat nog veel in preview is, dus er kan (en zal) nog veel gewijzigd worden.
Mogelijk handige linkjes:
Azure AI Agent Service
https://learn.microsoft.com/en-us/azure/ai-services/agents/
OpenAI Assistants API
https://learn.microsoft.com/en-us/azure/ai-services/openai/how-to/assistant
Semantic Kernel - opensource SDK
https://learn.microsoft.com/en-us/semantic-kernel/frameworks/agent/
AutoGen - opensource framework om snel agents te ontwikkelen.
https://microsoft.github.io/autogen/stable/index.html
Microsoft 365 Agents SDK - ook Slack en Messenger wordt met deze agents ondersteund
https://learn.microsoft.com/en-us/microsoft-365/agents-sdk/
Microsoft Copilot Studio - visueel blokjes zetten, agents builden voor de manager zonder programmeerervaring
https://learn.microsoft.com/en-us/microsoft-copilot-studio/
Copilot Studio agent builder in Microsoft 365 Copilot
https://learn.microsoft.com/en-us/microsoft-365-copilot/extensibility/copilot-studio-agent-builder-build
De criteria om voor oplossing A of B te kiezen:
- als je bedrijf geen ontwikkelervaring heeft, Copilot Studio agent builder in Microsoft 365 Copilot Chat kan je helpen om alledaagse taken te automatiseren.
- als business-users technische skills hebben om met low code Microsoft Power Platform zaken te bouwen, kan Copilot Studio hun ondersteunen om daar nog meer uit te halen.
- als meer complexe zaken gebouwd moeten worden, dan is de Microsoft 365 Agents SDK een goede keuze.
- Start met Azure AI Agent Service om een enkele, losse agent te ontwikkelen. Als je meerdere agents nodig hebt, gebruik dan Semantic Kernel om al die agents aan te sturen.
Met Azure AI Agent Service kun je binnen Azure AI Foundry AI agents aanmaken, testen en beheren. Zowel code-first als visueel ontwikkelen.
Als je een account hebt kun je de oefening doen: https://go.microsoft.com/fwlink/?linkid=2303870
## DE 7e WEEK ##
Via de overzichtpagina kun je een oefentoets doen. 50 vragen: link.
De eerste keer dat ik de oefentoets doe is het zaterdavondavond, 20.45 uur. Ik sta in het Bolwerk, het optreden van "Het Goede Doel revivalband met Henk Westbroek" start pas rond 21.30 uur, dus dit kan even "tussendoor". Geen referentiemateriaal bij de hand, dus een goede indicatie wat ik op "eigen kracht" kan. Met "preview" kun je direct zien of het antwoord wat je gegeven hebt goed of fout is. De score is 60, onvoldoende dus, want je moet minimaal een score van 80 punten hebben. De volgende dag heb ik thuis nogmaals de test gedaan en kwam wederom uit op een score van 60. Een goede indicatie dat ik er dus nog wat extra tijd aan moet besteden!
Het belangrijkste punt is dat je verschillende soorten modellen en algoritmes zijn en je moet kunnen benoemen wanneer je welke methode nodig hebt of welk algoritme je moet gebruiken. Die "keuze" komt niet echt naar voren als je al die losse modules doorneemt, omdat dan alleen maar wordt besproken wat een algoritme doet of wat een methode doet en niet dat ze ten opzichte van elkaar vergeleken worden. Laat ik dat hier dan nog maar even doen, want ook op een later tijdstip kan het wel eens handig zijn om dat nog terug te kunnen zoeken.
De verschillende modellen
- Multiple linear regression: de relatie tussen twee of meer features en een enkel label.
- Linear regression: de relatie tussen 1 feature en een enkel label.
- Logistic regression: een soort classificatiemodel, die een boolean (dus waar of niet waar) of een gecategoriseerde beslissing terug geeft.
- Hierarchical clustering: groeperen van datapunten die dezelfde karakteristieken hebben.
Voorbeeld hierbij dat gevraagd werd met welk model je zou werken als je diabetes wilt voorspellen met behulp van percentage lichaamsvet en leeftijd. Mijn keuze was multiple linear regression, omdat ik het zag als 2 features en 1 label. Ik ging er vanuit dat als je meer lichaamsvet had en ouder was, je meer kans op diabetes had dan een jonger iemand of iemand met minder lichaamsvet. Dat was fout, het moet logistic regression zijn. Ik denk dat als het model beschreven zou worden multiple linear regression goed was, maar omdat het hier om "de uitkomst gaat" het antwoord logistic regression is.
De verschillende algoritmes
- Regression algorithms: voorspel numerieke waardes.
- Clustering algorithms: groepeer datapunten met dezelfde karakteristieken.
- Classification algorithms: voorspel bij welke categorie de ingevoerde waardes behoren.
- Unsupervised learning: een catergorie van lerende algoritmes, clustering is daar één van, maar niet regression, time-series forecasting of classification.
- K-means clustering (unsupervised). Bedoeld om clustering modellen te trainen. Je kunt data zonder labels met dit algoritme gebruiken.
De vraag welke modellen je kunt trainen met automated machine learning (automated ML) in Azure Machine Learning Studio. Dit is een beetje een strikvraag. Omdat je hier "automated" leest, denk je dat het zelfstandig kan leren. Dat is NIET zo! Automated ML werkt alleen met supervised learning algoritmes! Dus in het bovenstaande lijstje zie je dat clustering dus afvalt.
## APPENDIX 1 ##
Het duurt nog even voor ik examen ga doen en op woensdag staat standaard Microsoft Learn ingepland. Bij de 5e week had ik al gemeld dat er nog 4 andere studies bij een zelfde module binnen kwamen. De eerste daarvan is Copilot Foundations AI-3018 en daar ga ik nu mee verder via de startpagina van deze module. De eerste 1200 heb ik al binnen doordat die andere module hiermee gedeeld werd, de Fundamentals of AI heb ik afgerond.
Tijd voor het tweede deel, Get Started with Microsoft Copilot Studio.
## APPENDIX 2 ##
Ik had mijn examen ingepland in Drachten op dinsdag 11 maart 2025. Die afspraak werd geannuleerd (geen ruimte of andere reden), dus toen ben ik gaan kijken waar ik die dag nog wel mijn examen kon doen. Ik wilde het nu ook afronden. Dat kon gelukkig op de 11e nog in Den Helder! Dus de Afsluitdijk over, examen doen en uiteindelijk met 842 punten geslaagd ( je moet minimaal 700 punten scoren ).