Accelerer udviklingen ved hjælp af Azure-tjenester: opret chatbots og kognitive tjenester ved hjælp af platformen

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.

Accelerer udviklingen ved hjælp af Azure-tjenester: opret chatbots og kognitive tjenester ved hjælp af platformen

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: 

  1. Tjenester til hurtig udvikling af dialoggrænseflader (bots).
  2. Færdige kognitive AI-tjenester til forskellige anvendelsesscenarier (billedgenkendelse, tale, vidensbase og søgning).
  3. 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: 

Accelerer udviklingen ved hjælp af Azure-tjenester: opret chatbots og kognitive tjenester ved hjælp af platformen

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: 

Accelerer udviklingen ved hjælp af Azure-tjenester: opret chatbots og kognitive tjenester ved hjælp af platformen

Til design og udvikling af bots i Azure anvendes Bot Framework. På GitHub findes der bots eksempler, 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 Bot Framework Composer. 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.

Accelerer udviklingen ved hjælp af Azure-tjenester: opret chatbots og kognitive tjenester ved hjælp af platformen

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 Adaptive Dialogs. Dialoger kan bruge både kognitive tjenester og hændelseskort (Adaptive Cards):

Accelerer udviklingen ved hjælp af Azure-tjenester: opret chatbots og kognitive tjenester ved hjælp af platformen

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.

Accelerer udviklingen ved hjælp af Azure-tjenester: opret chatbots og kognitive tjenester ved hjælp af platformen
De mest anvendte i chatbots er:

  1. Teksgenkendelse.
  2. 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).
  3. 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).
  4. Talgenkendelse.
  5. Billedanalyse.
  6. Oversættelse (vi husker alle, hvor meget støj den synkrone oversættelse i Skype skabte).
  7. Beskrevet kontrol og forslag til fejlretning.

LUIS

Der kan også være behov for LUIS (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 Dispatcher. 

Accelerer udviklingen ved hjælp af Azure-tjenester: opret chatbots og kognitive tjenester ved hjælp af platformen

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, Bot framework emulator. 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:

Accelerer udviklingen ved hjælp af Azure-tjenester: opret chatbots og kognitive tjenester ved hjælp af platformen
https://youtu.be/u7Gql-ClcVA?t=564

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 udgivet 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.

Accelerer udviklingen ved hjælp af Azure-tjenester: opret chatbots og kognitive tjenester ved hjælp af platformen

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 her.

Accelerer udviklingen ved hjælp af Azure-tjenester: opret chatbots og kognitive tjenester ved hjælp af platformen

Tak til alle for opmærksomheden! I denne artikel har vi brugt materiale 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:

Kilde: habr.com

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster