Hallo, Habr! Vandaag vertellen we hoe je met Azure taken kunt oplossen die normaal gesproken menselijke betrokkenheid vereisen. Operators besteden veel tijd aan het beantwoorden van dezelfde vragen, het verwerken van telefoongesprekken en tekstberichten. Chatbots automatiseren communicatie en herkenning, waardoor de werkdruk van mensen vermindert. Bots worden ook gebruikt in Azure DevOps, waar ze bijvoorbeeld releases goedkeuren, builds beheren — bekijken, starten en stoppen — rechtstreeks vanuit Slack of Microsoft Teams. In wezen lijkt een chatbot op een CLI, maar dan interactief, en stelt het de ontwikkelaar in staat om binnen de context van de chatdiscussie te blijven.
In dit artikel bespreken we de tools voor het maken van chatbots, laten we zien hoe ze verbeterd kunnen worden met cognitieve services en beschrijven we hoe de ontwikkeling kan worden versneld met kant-en-klare services in Azure.

Chatbots en cognitieve services: wat is hetzelfde en wat is anders
Voor het maken van bots in Microsoft Azure worden de Azure Bot Service en het Bot Framework gebruikt. Samen vormen ze een set software om bots te bouwen, testen, implementeren en beheren, waarmee zowel eenvoudige als geavanceerde communicatiesystemen kunnen worden gemaakt met spraakondersteuning, herkenning van natuurlijke taal en andere mogelijkheden.
Stel dat je een eenvoudige bot moet implementeren op basis van een bedrijfsservice voor vragen en antwoorden, of juist een functionele bot met een complex vertakkingssysteem voor communicatie wilt creëren. Hiervoor kun je gebruikmaken van verschillende tools, die we grofweg in drie groepen indelen:
- Snelle ontwikkelingsservices voor dialooginterfaces (bots).
- Kant-en-klare cognitieve AI-services voor verschillende gebruiksscenario's (beeldherkenning, spraak, kennisbasis en zoeken).
- Diensten voor het creëren en trainen van AI-modellen.
Mensen mixes vaak intuïtief ‘bots’ en ‘cognitieve services’, omdat ze beide gebaseerd zijn op het principe van communicatie, en binnen de gebruiksscenario's van bots en services zijn er dialogen. Maar chatbots werken met sleutelwoorden en triggers, terwijl cognitieve services zich bezighouden met willekeurige verzoeken die normaal gesproken door mensen worden verwerkt:

Cognitieve diensten zijn een andere manier van communicatie met de gebruiker, die helpt willekeurige verzoeken om te zetten in duidelijke opdrachten en deze vervolgens naar de bot door te geven.
Zo zijn chatbots applicaties voor het verwerken van verzoeken, terwijl cognitieve diensten tools zijn voor slimme analyse van verzoeken, die apart worden uitgevoerd maar door de chatbot kunnen worden aangesproken, waardoor deze 'intelligent' wordt.
Het maken van chatbots
Het aanbevolen ontwerp schema voor een bot in Azure ziet er als volgt uit:

Voor het ontwerpen en ontwikkelen van bots in Azure wordt geïnvesteerd. Op GitHub zijn er , de mogelijkheden van het framework veranderen, dus het is belangrijk rekening te houden met de versie van de SDK die in de bots wordt gebruikt.
Het framework biedt verschillende manieren om bots te maken: via klassieke code, commandoregeltools of blokdiagrammen. De laatste optie visualiseert dialogen, hiervoor kan de manager worden gebruikt. Dit is ontwikkeld op basis van de Bot Framework SDK als een visuele ontwikkeltool die interdisciplinair teams kunnen gebruiken om bots te creëren.

Bot Framework Composer maakt het mogelijk om met blokken een gestructureerde dialoog op te bouwen waarmee de bot kan werken. Daarnaast kunnen triggers worden gecreëerd, dat zijn sleutelwoorden waarop de bot zal reageren tijdens de dialoog, bijvoorbeeld de woorden 'operator', 'diefstal' of 'stop' en 'genoeg'.
In Bot Framework Composer kan een complexe vertakte dialoogstructuur worden gecreëerd met behulp van . Dialogen kunnen zowel cognitieve diensten als gebeurteniskaarten (Adaptive Cards) gebruiken:

Na het maken kan de chatbot in de abonnementsdienst worden uitgerold, waarbij een automatisch gegenereerd script alle benodigde middelen creëert: cognitieve diensten, Application plan, Application Insights, database, enzovoort.
QnA Maker
Voor het maken van eenvoudige bots op basis van bedrijfsdatabases met vragen en antwoorden kan de cognitieve dienst QnA Maker worden gebruikt. Dit is gerealiseerd in de vorm van een eenvoudige webwizard, waarmee een link naar de bedrijfskennisbank (FAQ-urls) kan worden ingevoerd of een databestand in het formaat *.doc of *.pdf als basis kan worden gebruikt. Na het maken van de index zal de bot zelf de meest geschikte antwoorden op de vragen van de gebruiker selecteren.
Met QnAMaker kunnen ook ketens van verduidelijkende vragen worden gemaakt met automatische knopcreatie, kan de kennisbank worden aangevuld met metadata en kan de service tijdens het gebruik worden bijgeleerd.
De service kan worden gebruikt als een chatbot die alleen deze functie implementeert, of als onderdeel van een complexe chatbot die, afhankelijk van het verzoek, ook andere AI-diensten of elementen van het Bot Framework gebruikt.
Werken met andere cognitieve diensten
Het Azure-platform heeft veel verschillende cognitieve diensten. Technisch gezien zijn dit zelfstandige webservices die vanuit de code kunnen worden aangeroepen. In reactie daarop retourneert de dienst een json van een bepaald formaat dat kan worden gebruikt in de chatbot.

In chatbots worden meestal de volgende gebruikt:
- Tekstherkenning.
- Erkenning van door de ontwikkelaar gedefinieerde categorieën van beelden met de Custom Vision Service (productcase: herkenning of een werknemer een helm, veiligheidsbril of masker draagt).
- Gezichtsherkenning (een geweldig gebruikscase is de controle of het gezicht dat de respondent heeft geplaatst, zijn eigen gezicht is, of bijvoorbeeld de foto van een hond of de foto van een persoon van het andere geslacht).
- Spraakherkenning.
- Beeldanalyse.
- Vertaling (we herinneren ons allemaal hoeveel lawaai de simultane vertaling in Skype heeft gemaakt).
- Spellingcontrole en suggesties voor foutcorrectie.
LUIS
Voor het creëren van bots kan ook (Language Understanding Intelligent Service). De taken van de dienst:
- Bepalen of de uitspraak van de gebruiker zinvol is en of er een reactie van de bot nodig is.
- De inspanningen voor het transcriberen van de spraak (tekst) van de gebruiker naar begrijpelijke opdrachten voor de bot verminderen.
- De ware gebruikersdoelen/intenties voorspellen en belangrijke informatie uit zinnen in het gesprek extraheren.
- De ontwikkelaar de mogelijkheid geven om de bot te starten met slechts enkele voorbeelden van betekenisherkenning en om de bot tijdens het werken bij te scholen.
- De ontwikkelaar in staat stellen om visualisatie te gebruiken voor het beoordelen van de kwaliteit van de transcriptie van opdrachten.
- Helpen bij stapsgewijze verbeteringen in de erkenning van echte doelen.
De essentie van LUIS is om met een bepaalde waarschijnlijkheid te begrijpen wat de gebruiker bedoelt en een natuurlijke vraag om te zetten in een gestructureerde opdracht. Voor het herkennen van de betekenissen van vragen gebruikt LUIS een set intenties (bedoelingen) en entiteiten (ofwel vooraf ingesteld door ontwikkelaars of opgenomen uit vooraf gevormde 'domeinen' – bepaalde gereed bibliotheken van standaardzinnen die door Microsoft zijn voorbereid).
Een eenvoudig voorbeeld: je hebt een bot die het weer voorspelt. Voor deze bot is de intentie het vertalen van de natuurlijke vraag in een 'actie' – het opvragen van de weersvoorspelling, en de entiteiten zijn tijd en locatie. Laten we het werkingsschema van de intentie CheckWeather voor zo'n bot bekijken.
Intentie
Entiteit
Voorbeeld van een natuurlijke vraag
CheckWeather
{“type”: “location”, “entity”: “moscow”}
{“type”: “builtin.datetimeV2.date”, “entity”: “future”, “resolution”: “2020-05-30”}
Wat voor weer wordt het morgen in Moskou?
CheckWeather
{ “type”: “date_range”, “entity”: “this weekend” }
Toon me de voorspelling voor dit weekend.
Voor de combinatie van QnA Maker en LUIS kan men gebruik maken van .

Wanneer je met QnA Maker werkt en een aanvraag van een gebruiker ontvangt, bepaalt het systeem met welke waarschijnlijkheid het antwoord uit QnA geschikt is voor de aanvraag. Als de waarschijnlijkheid hoog is, krijgt de gebruiker gewoon het antwoord uit de bedrijfskennisbasis; als het laag is, kan de aanvraag naar LUIS worden gestuurd voor verduidelijking. Het gebruik van Dispatcher maakt het mogelijk om deze logica niet te programmeren, maar automatisch deze scheidslijn tussen aanvragen te bepalen en ze snel te verdelen.
Testen en publiceren van de bot
Voor het testen wordt een andere lokale toepassing gebruikt, . Met de emulator kan men communiceren met de bot en de berichten controleren die deze verzendt en ontvangt. De emulator toont berichten zoals ze eruit zullen zien in de interface van de webchat en registreert aanvragen en antwoorden in JSON tijdens de communicatie met de bot.
Een voorbeeld van het gebruik van de emulator wordt gepresenteerd in deze demonstratie, waar de creatie van een virtuele assistent voor BMW wordt getoond. In de video wordt ook gesproken over nieuwe accelerators voor het maken van chatbots – templates.

Je kunt ook templates gebruiken bij het maken van je eigen chatbots.
Sjablonen maken het mogelijk om standaard botfuncties niet opnieuw te schrijven, maar al bestaande code als 'vaardigheden' toe te voegen. Een voorbeeld hiervan is het werken met een agenda, het plannen van afspraken, enz. De code van de beschikbare vaardigheden. op github.
De test is succesvol afgerond, de bot is klaar en moet nu gepubliceerd en verbonden worden met de kanalen. Publicatie gebeurt via Azure, en als kanalen kunnen messaging-apps of sociale netwerken worden gebruikt. Als het benodigde inkomende kanaal niet beschikbaar is, kan het worden gezocht in de bijbehorende gemeenschap op GitHub.
Voor het creëren van een volledige chatbot als interface voor communicatie met gebruikers en cognitieve diensten zijn bovendien aanvullende Azure-diensten nodig, zoals databases, serverless (Azure Functions), en ook LogicApp-diensten en mogelijk Event Grid.

Evaluatie en analyse
Voor het beoordelen van interactie met gebruikers kan zowel de ingebouwde analyse van Azure Bot Service als de speciale dienst Application Insights worden gebruikt.
Als resultaat kunnen gegevens worden verzameld op basis van de volgende criteria:
- Hoeveel gebruikers toegang hebben gekregen tot de bot via verschillende kanalen in de gekozen tijdsperiode.
- Hoeveel gebruikers die één bericht hebben gestuurd later terugkeerden en nog een bericht stuurden.
- Hoeveel acties zijn verzonden en ontvangen via elk kanaal in de aangegeven tijdsperiode.
Met behulp van Application Insights kunnen alle applicaties in Azure, inclusief chatbots, worden gemonitord, waardoor extra gegevens over gebruikersgedrag, belasting en de reactie van de chatbot worden verkregen. Het is belangrijk op te merken dat de Application Insights-dienst zijn eigen interface heeft op het Azure-portaal.
De gegevens die via deze dienst zijn verzameld, kunnen ook worden gebruikt voor het creëren van extra visualisaties en analytische rapporten in PowerBI. Een voorbeeld van een dergelijk rapport en een sjabloon voor PowerBI kan worden verkregen. .

Iedereen bedankt voor de aandacht! In dit artikel hebben we gebruik gemaakt van de webinar van Microsoft Azure-architect Anna Fenushina 'Wanneer mensen het niet bijhouden. Hoe je chatbots en cognitieve diensten voor 100% kunt gebruiken voor het automatiseren van routinetaken', waarin we duidelijk toonden wat chatbots in Azure zijn, wat hun gebruiksscenario's zijn en hoe we in 15 minuten een bot in QnA Maker kunnen maken, en hoe de structuur van verzoeken in LUIS is opgebouwd.
We hebben dit webinar georganiseerd als onderdeel van de online marathon voor ontwikkelaars, het Dev Bootcamp. Het ging over producten die de ontwikkeling versnellen en een deel van de routinematige taken van medewerkers verlichten met behulp van automatiseringstools en kant-en-klare vooraf ingestelde Azure-modules. Opnames van andere webinars die deel uitmaken van de marathon zijn beschikbaar via de links:
-
We bespreken de evolutie en nieuwe mogelijkheden van de Azure DevOps-service. We analyseren in detail de vijf belangrijkste componenten en hoe de service helpt bij de organisatie van industriële softwareontwikkeling. Presentator: Vladimir Gusаров, Microsoft MVP.
We bekijken hoe we de ''build as code''-benadering kunnen implementeren voor elke programmeertaal met behulp van multi-staged YAML-pipelines. Presentator: Vladimir Gusаров, Microsoft MVP.
We bespreken hoe we strategieën voor het opslaan van softwarebronnen kunnen ontwikkelen en hoe we versiebeheersystemen met behulp van Azure Repos kunnen gebruiken. Presentator: Vladimir Gusаров, Microsoft MVP.
We introduceren methodieken voor open source-beheer tijdens de ontwikkeling en de praktische toepassing van de WhiteSource-tool. We bespreken het opsporen van kwetsbaarheden in componenten met open broncode en het waarborgen van licentie-naleving met behulp van WhiteSource. Presentatoren: Diana Lisbaron, Director of Sales WhiteSource, en Darya Oreshkina, Web Control, officiële distributeur van WhiteSource in Rusland.
Bron: habr.com
