Wir beschleunigen die Entwicklung mit Services von Azure: Erstellen von Chatbots und kognitiven Diensten mithilfe der Plattform

Hallo, Habr! Heute werden wir erläutern, wie man mit Azure Aufgaben löst, die normalerweise menschliches Eingreifen erfordern. Betreiber verbringen viel Zeit damit, auf dieselben Fragen zu antworten, Telefonanrufe und Textnachrichten zu bearbeiten. Chatbots automatisieren die Kommunikation und Erkennung und reduzieren die Arbeitslast für Menschen. Auch in Azure DevOps kommen Bots zum Einsatz, die es beispielsweise ermöglichen, Releases zu genehmigen, Builds zu verwalten – anzusehen, zu starten und zu stoppen – direkt aus Slack oder Microsoft Teams. Im Grunde genommen ähnelt ein Chatbot in gewisser Weise der CLI, allerdings interaktiv, und ermöglicht es Entwicklern, im Kontext der Diskussion im Chat zu bleiben.

In diesem Artikel werden wir über Werkzeuge zur Erstellung von Chatbots sprechen, zeigen, wie sie mit kognitiven Diensten verbessert werden können, und beschreiben, wie man die Entwicklung dank fertiger Dienste in Azure beschleunigt.

Wir beschleunigen die Entwicklung mit Services von Azure: Erstellen von Chatbots und kognitiven Diensten mithilfe der Plattform

Chatbots und kognitive Dienste: Gemeinsamkeiten und Unterschiede

Zur Erstellung von Bots in Microsoft Azure werden der Azure Bot Service und die Bot Framework-Plattform verwendet. Zusammen bilden sie eine Software-Suite zum Erstellen, Testen, Bereitstellen und Verwalten von Bots, die es ermöglicht, sowohl einfache als auch fortgeschrittene Kommunikationssysteme mit Sprachunterstützung, natürlicher Sprachverarbeitung und anderen Funktionen aus fertigen Modulen zu erstellen.

Angenommen, Sie möchten einen einfachen Bot auf der Grundlage eines Unternehmensdienstes für Fragen und Antworten implementieren oder umgekehrt einen funktionalen Bot mit einem komplexen, verzweigten Kommunikationssystem erstellen. Dafür stehen Ihnen eine Reihe von Werkzeugen zur Verfügung, die grob in drei Gruppen unterteilt werden können: 

  1. Dienste zur schnellen Entwicklung von Dialogschnittstellen (Bots).
  2. Fertige kognitive KI-Dienste für verschiedene Anwendungsfälle (Bild-, Sprach- und Wissensdatenbankerkennung sowie Suche).
  3. Dienste zur Erstellung und Schulung von KI-Modellen.

In der Regel vermischen Menschen intuitiv „Bots“ und „kognitive Dienste“, da beiden Konzepten das Prinzip der Kommunikation zugrunde liegt, und in den Anwendungsszenarien von Bots und Diensten Dialoge vorkommen. Aber Chatbots arbeiten mit Schlüsselwörtern und Triggern, während kognitive Dienste mit beliebigen Anfragen arbeiten, die normalerweise von Menschen bearbeitet werden: 

Wir beschleunigen die Entwicklung mit Services von Azure: Erstellen von Chatbots und kognitiven Diensten mithilfe der Plattform

Kognitive Dienste sind eine weitere Möglichkeit, mit Benutzern zu kommunizieren, um eine beliebige Anfrage in einen klaren Befehl umzuwandeln und diesen an den Bot weiterzuleiten. 

Somit sind Chatbots Anwendungen zur Bearbeitung von Anfragen, während kognitive Dienste Werkzeuge zur intelligenten Analyse von Anfragen sind, die separat starten, aber vom Chatbot aufgerufen werden können, wodurch dieser 'intelligent' wird. 

Erstellung von Chatbots

Das empfohlene Entwurfsschema für Bots in Azure sieht wie folgt aus: 

Wir beschleunigen die Entwicklung mit Services von Azure: Erstellen von Chatbots und kognitiven Diensten mithilfe der Plattform

Für das Design und die Entwicklung von Bots in Azure wird Bot Frameworkverwendet. Auf GitHub gibt es Beispiele für Bots, die Möglichkeiten des Frameworks ändern sich, weshalb die verwendete SDK-Version in den Bots berücksichtigt werden muss.

Das Framework bietet mehrere Optionen zur Erstellung von Bots: durch herkömmlichen Code, Befehlszeilentools oder Flussdiagramme. Letzteres visualisiert Dialoge, hierfür kann der Manager Bot Framework Composerverwendet werden. Er wurde auf Grundlage des Bot Framework SDK als anschauliches Entwicklungstool erstellt, das interdisziplinäre Teams zur Erstellung von Bots nutzen konnten.

Wir beschleunigen die Entwicklung mit Services von Azure: Erstellen von Chatbots und kognitiven Diensten mithilfe der Plattform

Mit dem Bot Framework Composer können Sie mithilfe von Blöcken die Dialogstruktur erstellen, mit der der Bot arbeiten wird. Zusätzlich können Trigger erstellt werden, d.h. Schlüsselwörter, auf die der Bot während des Dialogs reagiert. Beispielsweise auf die Wörter „Operator“, „Diebstahl“ oder „Stopp“ und „Genug“.

Im Bot Framework Composer kann ein komplex verzweigtes Dialogsystem erstellt werden, das Adaptive Dialogsnutzt. Dialoge können sowohl kognitive Dienste als auch Adaptive Cards verwenden:

Wir beschleunigen die Entwicklung mit Services von Azure: Erstellen von Chatbots und kognitiven Diensten mithilfe der Plattform

Nach der Erstellung kann der Chatbot in der Subscription bereitgestellt werden, wobei ein automatisch vorbereiteter Skript alle erforderlichen Ressourcen erstellt: kognitive Dienste, Anwendungsplan, Application Insights, Datenbank und so weiter.

QnA Maker

Zur Erstellung einfacher Bots auf Basis von Unternehmensdatenbanken mit Fragen und Antworten kann der kognitive Dienst QnA Maker verwendet werden. Dieser wird als einfacher Web-Assistent realisiert und ermöglicht es, einen Link zur Unternehmenswissensdatenbank (FAQ-URLs) oder eine Dokumentendatenbank im *.doc- oder *.pdf-Format als Grundlage zu verwenden. Nach der Erstellung des Index wird der Bot in der Lage sein, die am besten geeigneten Antworten auf die Fragen der Benutzer zu finden.

Mit QnAMaker können auch Ketten von уточняющими Fragen mit automatischer Erstellung von Schaltflächen erstellt sowie die Wissensdatenbank mit Metadaten ergänzt und der Dienst im laufenden Betrieb weitergebildet werden.

Der Dienst kann entweder als Chatbot verwendet werden, der nur diese Funktion ausführt, oder als Teil eines komplexen Chatbots, der je nach Anfrage auch andere KI-Dienste oder Elemente des Bot Framework nutzt.

Arbeiten mit anderen kognitiven Diensten

Auf der Azure-Plattform gibt es viele verschiedene kognitive Dienste. Technisch gesehen handelt es sich um eigenständige Webdienste, die aus dem Code heraus aufgerufen werden können. Der Dienst sendet als Antwort ein JSON in einem bestimmten Format, das im Chatbot verwendet werden kann.

Wir beschleunigen die Entwicklung mit Services von Azure: Erstellen von Chatbots und kognitiven Diensten mithilfe der Plattform
In Chatbots werden am häufigsten folgende verwendet:

  1. Texterkennung.
  2. Erkennung von vom Entwickler definierten Bildkategorien durch den Custom Vision Service (Anwendungsfall: Erkennung, ob ein Mitarbeiter einen Schutzhelm, eine Schutzbrille oder eine Maske trägt).
  3. Gesichtserkennung (ein großartiger Anwendungsfall ist die Überprüfung, ob der Befragte sein eigenes Gesicht oder beispielsweise ein Foto eines Hundes oder ein Foto eines anderen Geschlechts hochgeladen hat).
  4. Spracherkennung.
  5. Bildanalyse.
  6. Übersetzung (wir alle erinnern uns, wie viel Aufsehen die simultane Übersetzung in Skype erregt hat).
  7. Rechtschreibprüfung und Vorschläge zur Fehlerkorrektur.

LUIS

Um Bots zu erstellen, kann außerdem erforderlich sein LUIS (Language Understanding Intelligent Service). Die Aufgaben des Dienstes sind:

  • Zu bestimmen, ob die Äußerung des Nutzers sinnvoll ist und ob eine Reaktion des Bots erforderlich ist.
  • Den Aufwand für die Transkription von Sprache (Text) des Nutzers in verständliche Befehle für den Bot zu reduzieren.
  • Echte Benutzerziele/-absichten vorherzusagen und wichtige Informationen aus Phrasen im Dialog zu extrahieren.
  • Entwicklern zu ermöglichen, den Bot mit nur wenigen Beispielen zur Sinneserkennung zu starten und den Bot im laufenden Betrieb weiterzubilden.
  • Entwicklern zu ermöglichen, Visualisierungen zur Bewertung der Qualität der Transkription von Befehlen zu nutzen.
  • In schrittweisen Verbesserungen bei der Erkennung echter Ziele zu helfen.

Im Grunde genommen besteht das Hauptziel von LUIS darin, mit einer bestimmten Wahrscheinlichkeit zu verstehen, was der Benutzer gemeint hat, und die natürliche Anfrage in einen klaren Befehl umzuwandeln. Zur Erkennung der Bedeutungen der Anfragen verwendet LUIS eine Reihe von Intents (Sinn, Absichten) und Entities (entweder von den Entwicklern vordefiniert oder aus bereits gebauten "Domänen" - einigen vorgefertigten Bibliotheken typischer Phrasen, die von Microsoft bereitgestellt wurden). 

Ein einfaches Beispiel: Sie haben einen Bot, der Wettervorhersagen ausgibt. Für ihn wäre der Intent die Übersetzung der natürlichen Anfrage in eine "Aktion" – Die Anfrage nach der Wettervorhersage, und die Entities – Zeit und Ort. Lassen Sie uns das Funktionsschema des Intents CheckWeather für einen solchen Bot betrachten.

Intent
Entity
Beispiel für eine natürliche Anfrage

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

CheckWeather
{ "type": "date_range", "entity": "dieses Wochenende" }
Zeig mir die Vorhersage für dieses Wochenende.

Für die Kombination von QnA Maker und LUIS kann man verwenden Dispatcher

Wir beschleunigen die Entwicklung mit Services von Azure: Erstellen von Chatbots und kognitiven Diensten mithilfe der Plattform

Wenn Sie mit QnA Maker arbeiten und eine Anfrage vom Benutzer erhalten, bestimmt das System, mit welcher Wahrscheinlichkeit die Antwort aus QnA für die Anfrage passt. Wenn die Wahrscheinlichkeit hoch ist, wird dem Benutzer einfach die Antwort aus der Unternehmensdatenbank gegeben, wenn sie niedrig ist – kann die Anfrage an LUIS zur Klärung gesendet werden. Die Verwendung von Dispatcher ermöglicht es, diese Logik nicht programmieren zu müssen, sondern die Grenze der Anfrageunterscheidung automatisch zu bestimmen und sie zügig zu verteilen.

Testen und Veröffentlichen des Bots

Für das Testen wird eine weitere lokale Anwendung verwendet, Bot framework emulator. Mit dem Emulator können Sie mit dem Bot kommunizieren und die Nachrichten überprüfen, die er sendet und empfängt. Der Emulator zeigt Nachrichten so an, wie sie im Web-Chat-Interface erscheinen würden, und protokolliert Anfragen und JSON-Antworten beim Nachrichtenaustausch mit dem Bot.

Ein Beispiel für die Verwendung des Emulators wird in dieser Demonstration dargestellt, in der die Erstellung eines virtuellen Assistenten für BMW gezeigt wird. Außerdem wird im Video über die neuen Acceleratoren zur Erstellung von Chatbots gesprochen – Vorlagen:

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

Sie können auch Vorlagen bei der Erstellung Ihrer Chatbots verwenden. 
Vorlagen ermöglichen es, gängige Bot-Funktionen nicht neu schreiben zu müssen, sondern bereits fertigen Code als „Fähigkeit“ hinzuzufügen. Ein Beispiel könnte die Arbeit mit einem Kalender, das Planen von Meetings usw. sein. Der Code für die fertiggestellten Fähigkeiten ist vorhanden. veröffentlicht auf github.

Die Tests waren erfolgreich, der Bot ist bereit und muss nun veröffentlicht und die Kanäle angeschlossen werden. Die Veröffentlichung erfolgt über Azure, und als Kanäle können Messenger oder soziale Netzwerke genutzt werden. Sollte der benötigte Eingangskanal nicht vorhanden sein, kann man in der entsprechenden Community auf GitHub danach suchen. 

Um einen vollwertigen Chatbot als Benutzeroberfläche für die Kommunikation mit Benutzern und kognitiven Diensten zu erstellen, benötigen Sie natürlich zusätzliche Azure-Dienste, wie Datenbanken, serverlos (Azure Functions), sowie LogicApp-Dienste und möglicherweise Event Grid.

Wir beschleunigen die Entwicklung mit Services von Azure: Erstellen von Chatbots und kognitiven Diensten mithilfe der Plattform

Bewertung und Analytik

Für die Bewertung der Interaktionen mit den Benutzern können sowohl die integrierte Analytik des Azure Bot Services als auch der spezielle Dienst Application Insights verwendet werden.

Infolgedessen können Informationen zu den folgenden Kriterien gesammelt werden:

  • Wie viele Benutzer auf den Bot aus verschiedenen Kanälen im gewählten Zeitraum zugegriffen haben.
  • Wie viele Benutzer, die eine Nachricht gesendet haben, später zurückgekehrt sind und eine weitere Nachricht gesendet haben.
  • Wie viele Aktionen über jeden Kanal im angegebenen Zeitraum gesendet und empfangen wurden.

Mit Application Insights können Sie beliebige Anwendungen in Azure, insbesondere Chatbots, überwachen und zusätzliche Daten zum Benutzerverhalten, zu Lasten und zur Reaktion des Chatbots erhalten. Es sei darauf hingewiesen, dass der Dienst Application Insights eine eigene Schnittstelle im Azure-Portal hat.

Die durch diesen Dienst gesammelten Daten können auch verwendet werden, um zusätzliche Visualisierungen und analytische Berichte in PowerBI zu erstellen. Ein Beispiel für einen solchen Bericht und eine Vorlage für PowerBI können Sie hier erhalten. hier.

Wir beschleunigen die Entwicklung mit Services von Azure: Erstellen von Chatbots und kognitiven Diensten mithilfe der Plattform

Vielen Dank für Ihre Aufmerksamkeit! In diesem Artikel haben wir verwendet Material aus dem Webinar der Microsoft Azure Architektin Anna Fenjushina „Wenn die Menschen nicht schnell genug sind. Wie man Chatbots und kognitive Dienste zu 100% zur Automatisierung rutinierter Prozesse nutzt“, in dem wir anschaulich gezeigt haben, was Chatbots in Azure sind und welche Einsatzszenarien es gibt, sowie demonstriert haben, wie man in 15 Minuten einen Bot im QnA Maker erstellt und wie die Struktur der Anfragen in LUIS entschlüsselt wird. 

Wir haben dieses Webinar im Rahmen des Online-Marathons für Entwickler Dev Bootcamp erstellt. Es ging um Produkte, die die Entwicklung beschleunigen und einen Teil der Routinearbeit von Mitarbeitern des Unternehmens durch Automatisierungswerkzeuge und prärigierte Azure-Module abnehmen. Aufzeichnungen anderer Webinare, die Teil des Marathons waren, sind über die folgenden Links verfügbar:

Quelle: habr.com

60GB SSD 8Gb DDR4