Beschleunigung der Entwicklung mit Azure-Diensten: Erstellen von Chatbots und kognitiven Diensten mithilfe der Plattform

Hey Habr! Heute zeigen wir Ihnen, wie Sie mit Azure Aufgaben lösen, die normalerweise die Beteiligung von Menschen erfordern. Telefonisten verbringen viel Zeit damit, die gleichen Fragen zu beantworten und Telefonanrufe und Textnachrichten zu bearbeiten. Chatbots automatisieren die Kommunikation und Erkennung und entlasten die Menschen. Bots werden auch in Azure DevOps eingesetzt, wo sie beispielsweise ermöglichen, Releases zu genehmigen, Builds zu verwalten – anzuzeigen, zu starten und zu stoppen – direkt von Slack oder Microsoft Teams aus. Tatsächlich erinnert ein Chatbot ein wenig an CLI, ist nur interaktiv und ermöglicht es dem Entwickler, den Kontext der Diskussion im Chat nicht zu verlassen.

In diesem Artikel sprechen wir über Chatbot-Tools, zeigen, wie sie mit kognitiven Diensten erweitert werden können, und beschreiben, wie sich die Entwicklung mit sofort einsatzbereiten Diensten in Azure beschleunigen lässt.

Beschleunigung der Entwicklung mit Azure-Diensten: Erstellen von Chatbots und kognitiven Diensten mithilfe der Plattform

Chatbots und kognitive Dienste: Wie ähneln sie sich und was ist der Unterschied?

Microsoft Azure verwendet den Azure Bot Service und das Bot Framework, um Bots zu erstellen. Zusammen stellen sie eine Reihe von Software zum Erstellen, Testen, Bereitstellen und Verwalten von Bots dar, mit denen Sie aus vorgefertigten Modulen sowohl einfache als auch erweiterte Kommunikationssysteme mit Unterstützung für Sprache, Erkennung natürlicher Sprache und anderen Funktionen erstellen können.

Angenommen, Sie müssen einen einfachen Bot basierend auf einem unternehmensweiten Frage- und Antwortdienst implementieren oder umgekehrt einen funktionalen Bot mit einem komplexen verzweigten Kommunikationssystem erstellen. Dazu können Sie eine Reihe von Tools verwenden, die bedingt in drei Gruppen unterteilt sind: 

  1. Services zur schnellen Entwicklung von Dialogschnittstellen (Bots).
  2. Vorgefertigte kognitive KI-Dienste für verschiedene Anwendungsfälle (Mustererkennung, Sprache, Wissensdatenbank und Suche).
  3. Dienste zum Erstellen und Trainieren von KI-Modellen.

Normalerweise verwechseln Menschen intuitiv „Bots“ und „kognitive Dienste“, da beide Konzepte auf dem Prinzip der Kommunikation basieren und es im Szenario der Nutzung von Bots und Diensten Dialoge gibt. Aber Chatbots arbeiten mit Schlüsselwörtern und Auslösern, während kognitive Dienste mit willkürlichen Anfragen arbeiten, die normalerweise von Menschen verarbeitet werden: 

Beschleunigung der Entwicklung mit Azure-Diensten: Erstellen von Chatbots und kognitiven Diensten mithilfe der Plattform

Kognitive Dienste sind eine weitere Möglichkeit, mit dem Benutzer zu kommunizieren und dabei zu helfen, eine beliebige Anfrage in einen klaren Befehl umzuwandeln und an den Bot weiterzuleiten. 

Chatbots sind also Abfrageanwendungen, und kognitive Dienste sind intelligente Tools zur Abfrageanalyse, die separat ausgeführt werden, auf die der Chatbot jedoch zugreifen kann, wodurch er „intelligent“ wird. 

Erstellung von Chatbots

Das empfohlene Entwurfsmuster für einen Bot in Azure lautet wie folgt: 

Beschleunigung der Entwicklung mit Azure-Diensten: Erstellen von Chatbots und kognitiven Diensten mithilfe der Plattform

Verwenden Sie zum Entwerfen und Entwickeln von Bots in Azure Bot-Framework. Gibt es auf GitHub Bot-Beispiele, ändern sich die Fähigkeiten des Frameworks, daher müssen Sie die Version des SDK berücksichtigen, die in den Bots verwendet wird.

Das Framework umfasst mehrere Optionen zum Erstellen von Bots: mithilfe von klassischem Code, Befehlszeilentools oder Flussdiagrammen. Die letzte Option rendert Dialoge, hierfür können Sie den Manager verwenden Bot Framework Composer. Es wurde auf dem Bot Framework SDK als beschreibendes Entwicklungstool aufgebaut, das interdisziplinäre Teams zum Erstellen von Bots verwenden konnten.

Beschleunigung der Entwicklung mit Azure-Diensten: Erstellen von Chatbots und kognitiven Diensten mithilfe der Plattform

Mit dem Bot Framework Composer können Sie mithilfe von Blöcken eine Dialogstruktur erstellen, mit der der Bot arbeitet. Darüber hinaus können Sie Trigger erstellen, also Schlüsselwörter, auf die der Bot während des Dialogs reagiert. Zum Beispiel die Wörter „Betreiber“, „Diebstahl“ oder „Stopp“ und „genug“.

Im Bot Framework Composer können Sie mithilfe von ein komplexes Dialogsystem erstellen Adaptive Dialoge. Dialoge können sowohl kognitive Dienste als auch Ereigniskarten (adaptive Karten) verwenden:

Beschleunigung der Entwicklung mit Azure-Diensten: Erstellen von Chatbots und kognitiven Diensten mithilfe der Plattform

Nach der Erstellung können Sie einen Chatbot in einem Abonnement bereitstellen, und ein automatisch vorbereitetes Skript erstellt alle erforderlichen Ressourcen: kognitive Dienste, Anwendungsplan, Application Insights, Datenbank usw.

QnA Maker

Um einfache Bots basierend auf Unternehmensdatenbanken mit Fragen und Antworten zu erstellen, können Sie den kognitiven Dienst QnA Maker verwenden. Als einfacher Web-Assistent implementiert, ermöglicht es Ihnen, einen Link zur Wissensdatenbank des Unternehmens (FAQ-URLs) als Eingabe einzureichen oder eine Datenbank mit Dokumenten im *.doc- oder *.pdf-Format als Grundlage zu verwenden. Nach der Erstellung des Index wählt der Bot die am besten geeigneten Antworten auf die Fragen des Benutzers aus.

Mit QnAMaker können Sie außerdem Klärungsketten mit automatischer Erstellung von Schaltflächen erstellen, die Wissensbasis mit Metadaten ergänzen und den Dienst während der Nutzung weiter trainieren.

Der Dienst kann als Chatbot eingesetzt werden, der nur diese eine Funktion umsetzt, oder als Teil eines komplexen Chatbots, der je nach Anforderung andere KI-Dienste oder Elemente des Bot Frameworks nutzt.

Zusammenarbeit mit anderen kognitiven Diensten

Auf der Azure-Plattform gibt es viele verschiedene kognitive Dienste. Technisch gesehen handelt es sich dabei um eigenständige Webdienste, die aus Code aufgerufen werden können. Als Antwort sendet der Dienst JSON eines bestimmten Formats, das im Chatbot verwendet werden kann.

Beschleunigung der Entwicklung mit Azure-Diensten: Erstellen von Chatbots und kognitiven Diensten mithilfe der Plattform
Die am häufigsten verwendeten Chatbots sind:

  1. Texterkennung.
  2. Erkennung von vom Entwickler definierten Kategorien von Custom Vision Service-Bildern (Produktionsfall: Erkennung, ob ein Mitarbeiter einen Schutzhelm, eine Schutzbrille oder eine Maske trägt).
  3. Gesichtserkennung (ein hervorragender Anwendungsfall besteht darin, zu überprüfen, ob die Person ihr Gesicht oder beispielsweise ein Foto eines Hundes oder einer Person des anderen Geschlechts gepostet hat).
  4. Spracherkennung.
  5. Bildanalyse.
  6. Übersetzung (wir erinnern uns alle daran, wie viel Lärm die Simultanübersetzung in Skype gemacht hat).
  7. Rechtschreibprüfung und Vorschläge zur Fehlerkorrektur.

LUIS

Um Bots zu erstellen, benötigen Sie möglicherweise auch LUIS (Sprachverstehender intelligenter Dienst). Serviceaufgaben:

  • Stellen Sie fest, ob die Aussage des Benutzers sinnvoll ist und ob die Reaktion des Bots notwendig ist.
  • Reduzieren Sie den Aufwand, die Sprache (den Text) des Benutzers in für den Bot verständliche Befehle umzuwandeln.
  • Sagen Sie wahre Benutzerziele/-absichten voraus und extrahieren Sie wichtige Informationen aus Phrasen im Dialog.
  • Um dem Entwickler den Start des Bots anhand von nur wenigen Beispielen der Bedeutungserkennung zu ermöglichen und dabei den Bot anschließend weiter zu trainieren.
  • Ermöglichen Sie dem Entwickler die Verwendung von Visualisierung zur Bewertung der Qualität der Befehlstranskription.
  • Helfen Sie bei schrittweisen Verbesserungen bei der Erkennung echter Ziele.

Tatsächlich besteht das Hauptziel von LUIS darin, mit einer gewissen Wahrscheinlichkeit zu verstehen, was der Benutzer gemeint hat, und eine natürliche Anfrage in einen kohärenten Befehl umzuwandeln. Um Abfragewerte zu erkennen, verwendet LUIS eine Reihe von Absichten (Bedeutungen, Absichten) und Entitäten (entweder von Entwicklern vorkonfiguriert oder übernommene und vorgeformte „Domänen“ – einige vorgefertigte Bibliotheken von Typphrasen, die von Microsoft vorbereitet wurden). 

Ein einfaches Beispiel: Sie haben einen Wettervorhersage-Bot. Für ihn besteht die Absicht darin, eine natürliche Anfrage in eine „Aktion“ umzusetzen – eine Anfrage nach einer Wettervorhersage, und die Entitäten werden Zeit und Ort sein. Hier ist ein Diagramm, wie die CheckWeather-Absicht für einen solchen Bot funktioniert.

Absicht
Essenz
Beispiel für eine natürliche Abfrage

CheckWeather
{"type": "location", "entity": "moscow"}
{"type": "builtin.datetimeV2.date", "entity": "future", "resolution": "2020-05-30"}
Wie wird das Wetter morgen in Moskau sein?

CheckWeather
{ „type“: „date_range“, „entity“: „dieses Wochenende“ }
Zeigen Sie mir die Wettervorhersage für dieses Wochenende

Um QnA Maker und LUIS zu kombinieren, können Sie verwenden Dispatcher

Beschleunigung der Entwicklung mit Azure-Diensten: Erstellen von Chatbots und kognitiven Diensten mithilfe der Plattform

Wenn Sie mit QnA Maker arbeiten und eine Anfrage von einem Benutzer erhalten, ermittelt das System, mit welcher Wahrscheinlichkeit die Antwort von QnA für die Anfrage geeignet ist. Bei hoher Wahrscheinlichkeit erhält der Benutzer lediglich eine Antwort aus der Wissensdatenbank des Unternehmens; bei niedriger Wahrscheinlichkeit kann die Anfrage zur Klärung an LUIS gesendet werden. Mit Dispatcher können Sie diese Logik nicht programmieren, sondern diesen Rand der Anforderungstrennung automatisch ermitteln und schnell verteilen.

Bot-Tests und Veröffentlichung

Zum Testen wird eine andere lokale Anwendung verwendet. Bot-Framework-Emulator. Mithilfe des Emulators können Sie mit dem Bot kommunizieren und die Nachrichten überprüfen, die er sendet und empfängt. Der Emulator stellt Nachrichten so dar, wie sie in einer Web-Chat-Oberfläche erscheinen würden, und protokolliert JSON-Anfragen und -Antworten bei der Kommunikation mit dem Bot.

Ein Beispiel für die Verwendung des Emulators wird in dieser Demo vorgestellt, die die Erstellung eines virtuellen Assistenten für BMW zeigt. Das Video spricht auch über neue Beschleuniger für die Erstellung von Chatbots – Vorlagen:

Beschleunigung der Entwicklung mit Azure-Diensten: Erstellen von Chatbots und kognitiven Diensten mithilfe der Plattform
https://youtu.be/u7Gql-ClcVA?t=564

Sie können beim Erstellen Ihrer Chatbots auch Vorlagen verwenden. 
Mithilfe von Vorlagen können Sie typische Bot-Funktionen nicht erneut schreiben, sondern vorgefertigten Code als „Fähigkeit“ hinzufügen. Ein Beispiel wäre die Arbeit mit einem Kalender, die Planung von Terminen usw. Vorgefertigter Kompetenzcode veröffentlicht auf Github.

Der Test war erfolgreich, der Bot ist bereit und jetzt müssen wir ihn veröffentlichen und Kanäle verbinden. Die Veröffentlichung erfolgt über Azure-Tools, als Kanäle können Messenger oder soziale Netzwerke genutzt werden. Wenn Sie keinen Dateneingabekanal benötigen, können Sie in der entsprechenden Community auf GitHab danach suchen. 

Um einen vollwertigen Chat-Bot als Kommunikationsschnittstelle mit dem Benutzer und kognitiven Diensten zu erstellen, benötigen Sie natürlich zusätzliche Azure-Dienste wie Datenbanken, Serverless (Azure Functions) sowie LogicApp-Dienste und möglicherweise , Ereignisraster.

Beschleunigung der Entwicklung mit Azure-Diensten: Erstellen von Chatbots und kognitiven Diensten mithilfe der Plattform

Bewertung und Analyse

Sie können sowohl die integrierten Analysen des Azure Bot Service als auch den dedizierten Application Insights-Dienst verwenden, um die Benutzerinteraktion auszuwerten.

Dadurch können Informationen nach folgenden Kriterien erhoben werden:

  • Wie viele Benutzer im ausgewählten Zeitraum über verschiedene Kanäle auf den Bot zugegriffen haben.
  • Wie viele Benutzer, die eine Nachricht gesendet haben, kamen später zurück und schickten eine weitere.
  • Wie viele Aktionen wurden über jeden Kanal während des angegebenen Zeitintervalls gesendet und empfangen.

Mit Application Insights können Sie jede Anwendung in Azure und insbesondere Chatbots überwachen, um zusätzliche Einblicke in das Benutzerverhalten, die Arbeitslast und die Chatbot-Reaktion zu erhalten. Zu beachten ist, dass der Application Insights-Dienst über eine eigene Schnittstelle im Azure-Portal verfügt.

Außerdem können die über diesen Dienst gesammelten Daten zur Erstellung zusätzlicher Visualisierungen und Analyseberichte in PowerBI verwendet werden. Ein Beispiel für einen solchen Bericht und eine Vorlage für PowerBI können entnommen werden hier.

Beschleunigung der Entwicklung mit Azure-Diensten: Erstellen von Chatbots und kognitiven Diensten mithilfe der Plattform

Vielen Dank für Ihre Aufmerksamkeit! In diesem Artikel haben wir verwendet Material aus einem Webinar der Microsoft Azure-Architektin Anna Fenyushina „Wenn Menschen keine Zeit haben. „Wie man Chatbots und kognitive Dienste zu 100 % nutzt, um Routineprozesse zu automatisieren“, wo wir anschaulich gezeigt haben, was Chatbots in Azure sind und welche Szenarien für ihre Verwendung gelten, und außerdem gezeigt haben, wie man in QnA Maker in 15 Minuten einen Bot erstellt und wie die Abfragestruktur in LUIS steht für. 

Wir haben dieses Webinar im Rahmen des Dev Bootcamp Online Developer Marathon durchgeführt. Es ging um Produkte, die die Entwicklung beschleunigen und den Mitarbeitern des Unternehmens durch Automatisierungstools und vorgefertigte vorkonfigurierte Azure-Module einen Teil der Routinearbeit abnehmen. Aufzeichnungen anderer Webinare, die im Rahmen des Marathons stattfanden, sind unter den Links verfügbar:

Source: habr.com

Kommentar hinzufügen