Hej, Habr! I dag vil vi tale om, hvordan man med Azure kan løse opgaver, der normalt kræver menneskelig deltagelse. Operatører bruger meget tid på at besvare de samme spørgsmål, håndtere telefonopkald og tekstbeskeder. Chatbots automatiserer kommunikationen og genkendelsen og reducerer belastningen på mennesker. Bots bruges også i Azure DevOps, hvor de for eksempel giver mulighed for at godkende udgivelser, styre bygninger — se, starte og stoppe — direkte fra Slack eller Microsoft Teams. I bund og grund minder en chatbot om en CLI, men er interaktiv og gør det muligt for udvikleren at forblive i konteksten af diskussionen i chatten.
I denne artikel vil vi tale om værktøjerne til at oprette chatbots, vise, hvordan de kan forbedres ved hjælp af kognitive tjenester, og beskrive, hvordan man kan fremskynde udviklingen ved hjælp af de færdige tjenester i Azure.

Chatbots og kognitive tjenester: hvad har de til fælles og hvordan adskiller de sig?
For at oprette bots i Microsoft Azure anvendes Azure Bot-tjenesten og Bot Framework-platformen. Sammen repræsenterer de en softwarepakke til at bygge, teste, implementere og administrere bots, som gør det muligt at skabe både enkle og avancerede systemer til kommunikation med støtte for tale, naturlig sproggenkendelse og andre funktioner.
Lad os antage, at du har brug for at implementere en simpel bot baseret på en virksomheds tjeneste til spørgsmål og svar, eller omvendt, at oprette en funktionel bot med et komplekst forgrenet kommunikationssystem. Til dette kan man benytte sig af en række værktøjer, der groft set kan opdeles i tre grupper:
- Tjenester til hurtig udvikling af dialoggrænseflader (bots).
- Færdige kognitive AI-tjenester til forskellige anvendelsesscenarier (billedgenkendelse, tale, vidensbase og søgning).
- Tjenester til oprettelse og træning af AI-modeller.
Normalt blander folk intuitivt "bots" og "kognitive tjenester", fordi begge begreber er baseret på kommunikationen, og der er dialoger i anvendelsesscenarierne for bots og tjenester. Men chatbots arbejder med nøgleord og triggere, mens kognitive tjenester arbejder med vilkårlige forespørgsler, der typisk behandles af mennesker:

Kognitive tjenester er en anden måde at kommunikere med brugeren på, hvilket hjælper med at konvertere en vilkårlig anmodning til en klar kommando og videreformidle den til robotten.
Chatbots er således applikationer til behandling af anmodninger, mens kognitive tjenester er værktøjer til intelligent analyse af anmodninger, der aktiveres separat, men som chatbotten kan tilgå for at blive 'intelligent'.
Oprettelse af chatbots
Den anbefalede designmodel for en bot i Azure ser således ud:

Til design og udvikling af bots i Azure anvendes . På GitHub findes der , mulighederne i rammeværket ændrer sig, så det er vigtigt at tage højde for den version af SDK, der anvendes i bots.
Rammeværket giver flere muligheder for at oprette bots: ved hjælp af klassisk kode, kommandolinjeværktøjer eller flowcharts. Den sidste mulighed visualiserer dialoger, og til dette kan man bruge manageren . Den blev udviklet på baggrund af Bot Framework SDK som et visuelt udviklingsværktøj, som tværfaglige teams kan bruge til at skabe bots.

Bot Framework Composer gør det muligt at skabe dialogstruktur ved brug af blokke, som botten vil arbejde med. Derudover kan man oprette triggere, dvs. nøgleord, som botten vil reagere på under dialogen. For eksempel på ordene 'operatør', 'tyveri' eller 'stop' og 'nok'.
I Bot Framework Composer kan man oprette komplekse grene af dialoger ved hjælp af . Dialoger kan bruge både kognitive tjenester og hændelseskort (Adaptive Cards):

Efter oprettelsen kan chatbots implementeres i abonnementet, hvor et automatisk genereret script opretter alle nødvendige ressourcer: kognitive tjenester, applikationsplan, applikationsindsigt, database osv.
QnA Maker
For at oprette enkle bots baseret på virksomhedens databaser med spørgsmål og svar kan man bruge den kognitive tjeneste QnA Maker. Den implementeres som en simpel webwizard, der gør det muligt at indtaste et link til virksomhedens vidensbase (FAQ URLs) eller tage udgangspunkt i en samling dokumenter i formatet *.doc eller *.pdf. Efter oprettelsen af indekset vil botten selv finde de mest relevante svar på brugerens spørgsmål.
Med QnAMaker kan du også oprette kæder af opfølgende spørgsmål med automatisk oprettelse af knapper, tilføje metadata til vidensbasen og videreuddanne tjenesten under brug.
Tjenesten kan bruges som en chatbot, der kun udfører denne funktion, eller som en del af en kompleks chatbot, der afhængigt af forespørgslen bruger andre AI-tjenester eller elementer fra Bot Framework.
Arbejdet med andre kognitive tjenester
Azure-platformen har mange forskellige kognitive tjenester. Teknisk set er det uafhængige webtjenester, der kan kaldes fra koden. Tjenesten returnerer et specifikt format JSON, der kan bruges i chatbotten.

De mest anvendte i chatbots er:
- Teksgenkendelse.
- Genkendelse af bestemte kategorier af billeder udarbejdet af udvikleren Custom Vision Service (produktionscase: genkendelse af, om en medarbejder har på sig hjelm, beskyttelsesbriller eller maske).
- Ansigtsgenkendelse (et fremragende brugsscenarie - at kontrollere, om ansigtet, der er præsenteret af respondenten, er deres eget, eller om det er et billede af en hund eller et billede af en person af det andet køn).
- Talgenkendelse.
- Billedanalyse.
- Oversættelse (vi husker alle, hvor meget støj den synkrone oversættelse i Skype skabte).
- Beskrevet kontrol og forslag til fejlretning.
LUIS
Der kan også være behov for (Language Understanding Intelligent Service). Tjenestens opgaver:
- At bestemme, om brugerens udsagn giver mening, og om botten skal reagere.
- At reducere indsatsen til transskription af brugerens tale (tekst) til forståelige kommandoer for botten.
- At forudsige brugernes sande mål/intentioner og udtrække nøgleoplysninger fra sætninger i dialogen.
- At give udvikleren mulighed for at starte botten ved at bruge kun nogle få eksempler på meningsgenkendelse og efterfølgende videreuddanne botten under drift.
- At give udvikleren mulighed for at bruge visualisering til at vurdere kvaliteten af transskriptionen af kommandoerne.
- At hjælpe med trin-for-trin forbedringer af genkendelsen af de sande mål.
Hovedmålet med LUIS er at forstå, hvad brugeren mener med en vis sandsynlighed og konvertere naturlige forespørgsler til velstrukturerede kommandoer. For at genkende betydningen af forespørgsler bruger LUIS et sæt af intentioner (mener) og entiteter (enten forudindstillede af udviklere eller taget fra og foruddefinerede 'domæner' - nogle klarlagte biblioteker af typiske sætninger forberedt af Microsoft).
Et simpelt eksempel: du har en bot, der giver vejrudsigter. For den vil intentionen være at konvertere den naturlige forespørgsel til en "handling" - en forespørgsel om vejrudsigten, mens entiteterne vil være tid og sted. Her er en skematisk oversigt over, hvordan intentionen CheckWeather fungerer for en sådan bot.
Intention
Entitet
Eksempel på naturlig forespørgsel
CheckWeather
{"type": "location", "entity": "moscow"}
{"type": "builtin.datetimeV2.date", "entity": "future "," resolution ":" 2020-05-30 "}
Hvordan bliver vejret i morgen i Moskva
CheckWeather
{"type": "date_range", "entity": "this weekend"}
Vis mig vejrudsigten for denne weekend
For at kombinere QnA Maker og LUIS kan du bruge .

Når du arbejder med QnA Maker og modtager en forespørgsel fra en bruger, bestemmer systemet, med hvilken procentuel sandsynlighed svaret fra QnA passer til forespørgslen. Hvis sandsynligheden er høj, vises svaret fra den virksomhedsspecifikke vidensbase blot til brugeren; hvis den er lav, kan forespørgslen sendes til LUIS for afklaring. Brug af Dispatcher gør det muligt at undgå at programmere denne logik og automatisk bestemme, hvor grænsen for adskillelse af forespørgsler ligger og hurtigt fordele dem.
Test og offentliggørelse af botten
Til test bruges endnu et lokalt program, . Med emulatorsystemet kan du interagere med botten og kontrollere de beskeder, den sender og modtager. Emulatoren viser beskederne som de vil se ud i en webchat-interface og registrerer forespørgsler og JSON-svar under udvekslingen af beskeder med botten.
Eksemplet på brug af emulatoren findes i denne demonstration, hvor oprettelsen af en virtuel assistent til BMW vises. Videoen fortæller også om de nye acceleratorer til at skabe chatbots - templates:

Du kan også bruge templates, når du opretter dine egne chatbots.
Skabeloner muliggør, at man ikke behøver at skrive typiske botfunktioner fra bunden, men kan tilføje allerede klar kode som "færdigheder". Et eksempel kan være arbejde med kalenderen, planlægning af møder osv. Koden til de færdige færdigheder på github.
Testningen er gennemført med succes, botten er klar, og nu skal den offentliggøres og forbindes til kanalerne. Offentliggørelsen foretages ved hjælp af Azure, og som kanaler kan man bruge messengers eller sociale medier. Hvis den ønskede kanal til datainput ikke er tilgængelig, kan man lede efter den i det relevante community på GitHub.
For at skabe en fuldgyldig chatbot, som interface til kommunikation mellem brugeren og kognitive tjenester, har man selvfølgelig brug for yderligere Azure-tjenester, såsom databaser, serverless (Azure Functions), samt tjenester som LogicApp og muligvis Event Grid.

Evaluering og analyse
Til at vurdere interaktionen med brugerne kan man bruge både den indbyggede analyse i Azure Bot Service og den specialiserede tjeneste Application Insights.
Som et resultat kan man indsamle information på følgende kriterier:
- Hvor mange brugere har fået adgang til botten fra forskellige kanaler over den valgte tidsperiode.
- Hvor mange brugere, der sendte en besked, vendte tilbage senere og sendte endnu en.
- Hvor mange handlinger der blev sendt og modtaget via hver kanal i den angivne tidsramme.
Ved hjælp af Application Insights kan man overvåge enhver applikation i Azure og specielt chatbots, som giver yderligere data om brugeradfærd, belastninger og chatbot-reaktioner. Det skal bemærkes, at tjenesten Application Insights har sit eget interface på Azure-portalen.
De data, der er indsamlet gennem denne tjeneste, kan også bruges til at skabe yderligere visualiseringer og analytiske rapporter i PowerBI. Et eksempel på sådan en rapport og en skabelon til PowerBI kan findes .

Tak til alle for opmærksomheden! I denne artikel har vi brugt fra webinaret med Microsoft Azure-arkitekten Anna Fenushina "Når folk ikke når det. Hvordan man får 100 % ud af chatbots og kognitive tjenester til at automatisere rutineprocesser", hvor vi klart viste, hvad chatbots i Azure er, og hvilke scenarier de anvendes i, samt demonstrerede, hvordan man på 15 minutter kan oprette en bot i QnA Maker, og hvordan anmodningsstrukturen fortolkes i LUIS.
Vi har lavet dette webinar som en del af online-marathonet for udviklere Dev Bootcamp. Her talte vi om produkter, der accelererer udviklingen og aflaster medarbejdernes rutinearbejde med hjælp fra automatiseringsværktøjer og færdigkonfigurerede Azure-moduler. Optagelser af andre webinare, der indgik i marathonet, er tilgængelige via links:
-
Vi fortæller om udviklingen og de nye muligheder i Azure DevOps-tjenesten. Vi går i dybden med alle fem hovedkomponenter, og hvordan tjenesten understøtter industriel softwareudvikling. Vært — Vladimir Gusаров, Microsoft MVP.
Vi ser på, hvordan man implementerer tilgangen 'build as code' for enhver programmeringssprog ved hjælp af multi-staged YAML pipelines. Vært — Vladimir Gusаров, Microsoft MVP.
Vi diskuterer, hvordan man udvikler strategier for opbevaring af kildekode, og hvordan man bruger versionsstyringssystemer med Azure Repos. Vært — Vladimir Gusаров, Microsoft MVP.
Vi introducerer metoder til styring af open source i udviklingen og praktisk anvendelse af værktøjet WhiteSource. Vi taler om at finde sårbarheder i komponenter med open source og opretholdelse af licensrensning med WhiteSource. Værter — Diana Lisbaron, Sales Director for WhiteSource, og Oreshkina Daria, Web Control, officiel distributør af WhiteSource i Rusland.
Kilde: habr.com
