Hallo, Habr! Heute zeigen wir Ihnen, wie Sie mit Azure Probleme lösen, die normalerweise menschliches Eingreifen erfordern. Die Mitarbeiter verbringen viel Zeit damit, dieselben Fragen zu beantworten und Telefonanrufe und Textnachrichten zu bearbeiten. Chatbots automatisieren die Kommunikation und Erkennung und reduzieren den Arbeitsaufwand für Menschen. Bots werden auch in Azure DevOps verwendet, wo sie beispielsweise die Freigabe von Releases und die Verwaltung von Builds – Anzeigen, Starten und Stoppen – direkt aus Slack oder Microsoft Teams ermöglichen. Im Wesentlichen ähnelt ein Chatbot einer CLI, ist jedoch interaktiv und ermöglicht es dem Entwickler, im Kontext der Chat-Diskussion zu bleiben.
In diesem Artikel sprechen wir über Tools zum Erstellen von Chatbots, zeigen, wie sie mit kognitiven Diensten erweitert werden können, und beschreiben, wie die Entwicklung mit vorgefertigten Diensten in Azure beschleunigt werden kann.

Chatbots und kognitive Dienste: Was sind die Gemeinsamkeiten und Unterschiede?
Um Bots in Microsoft Azure zu erstellen, verwenden Sie den Azure Bot Service und das Bot Framework. Zusammen stellen sie eine Reihe von Software zum Zusammenstellen, Testen, Bereitstellen und Verwalten von Bots dar, mit der Sie sowohl einfache als auch erweiterte Kommunikationssysteme mit Sprachunterstützung, natürlicher Spracherkennung und anderen Funktionen aus vorgefertigten Modulen erstellen können.
Nehmen wir an, Sie müssen einen einfachen Bot basierend auf einem unternehmensweiten Frage-und-Antwort-Dienst 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:
- Dienste zur schnellen Entwicklung von Dialogschnittstellen (Bots).
- Fertige kognitive KI-Dienste für unterschiedliche Anwendungsszenarien (Bild- und Spracherkennung, Wissensdatenbank und Suche).
- Dienste zum Erstellen und Trainieren von KI-Modellen.
Normalerweise verwechseln die Leute intuitiv „Bots“ und „kognitive Dienste“, da beide Konzepte auf dem Prinzip der Kommunikation basieren und der Anwendungsfall für Bots und Dienste Dialoge beinhaltet. Chatbots arbeiten jedoch mit Schlüsselwörtern und Auslösern, während kognitive Dienste mit beliebigen Abfragen arbeiten, die normalerweise von Menschen verarbeitet werden:

Eine weitere Möglichkeit der Kommunikation mit dem Benutzer sind kognitive Dienste, die dabei helfen, eine beliebige Anfrage in einen klaren Befehl umzuwandeln und an den Bot weiterzuleiten.
Chatbots sind also Anwendungen zum Arbeiten mit Anfragen, und kognitive Dienste sind intelligente Tools zur Anfrageanalyse, die separat gestartet werden, auf die der Chatbot jedoch zugreifen kann und die ihn „intelligent“ machen.
Chatbots erstellen
Das empfohlene Entwurfsmuster für einen Bot in Azure lautet wie folgt:

Azure wird zum Entwerfen und Entwickeln von Bots verwendet. . Es gibt eine auf GitHub , die Fähigkeiten des Frameworks ändern sich, daher muss die Version des SDK berücksichtigt werden, das in den Bots verwendet wird.
Das Framework bietet mehrere Optionen zum Erstellen von Bots: mithilfe von klassischem Code, Befehlszeilentools oder Flussdiagrammen. Die letzte Option visualisiert die Dialoge, hierfür können Sie den Manager verwenden . Es wurde auf der Grundlage des Bot Framework SDK als visuelles Entwicklungstool entwickelt, das interdisziplinäre Teams zum Erstellen von Bots verwenden können.

Mit Bot Framework Composer können Sie mithilfe von Blöcken eine Dialogstruktur erstellen, mit der Ihr Bot arbeiten kann. Zusätzlich können Sie Trigger erstellen, also Schlüsselwörter, auf die der Bot im Dialog reagiert. Beispielsweise die Wörter „Betreiber“, „Diebstahl“ oder „Stopp“ und „genug“.
Im Bot Framework Composer können Sie ein komplexes Verzweigungsdialogsystem erstellen mit . Dialoge können sowohl kognitive Dienste als auch Ereigniskarten (Adaptive Cards) verwenden:

Nach der Erstellung können Sie den Chatbot in einem Abonnement bereitstellen und das automatisch erstellte Skript erstellt alle erforderlichen Ressourcen: kognitive Dienste, Anwendungsplan, Application Insights, Datenbank usw.
QnA Maker
Um einfache Bots basierend auf Unternehmens-Q&A-Datenbanken zu erstellen, können Sie den kognitiven Dienst QnA Maker verwenden. Als einfacher Web-Assistent implementiert, ermöglicht er die Eingabe eines Links zu einer Unternehmens-Wissensdatenbank (FAQ-URLs) oder die Verwendung einer Dokumentdatenbank im *.doc- oder *.pdf-Format als Grundlage. Nach der Erstellung des Index wählt der Bot automatisch die am besten geeigneten Antworten auf die Fragen des Benutzers aus.
Mit QnAMaker können Sie außerdem Ketten klärender Fragen mit automatischer Button-Erstellung erstellen, die Wissensdatenbank mit Metadaten ergänzen und den Dienst während der Nutzung weiter trainieren.
Der Dienst kann als Chatbot verwendet werden, der nur diese eine Funktion implementiert, oder als Teil eines komplexen Chatbots, der je nach Anforderung andere KI-Dienste oder Elemente des Bot Frameworks verwendet.
Arbeiten 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 in einem bestimmten Format, das in einem Chatbot verwendet werden kann.

Die am häufigsten in Chatbots verwendeten sind:
- Texterkennung.
- Erkennung entwicklerdefinierter Bildkategorien Custom Vision Service (Produktionsfall: Erkennung, ob ein Mitarbeiter einen Helm, eine Schutzbrille oder eine Maske trägt).
- Gesichtserkennung (ein hervorragender Anwendungsfall ist die Überprüfung, ob die befragte Person ihr eigenes Gesicht oder beispielsweise ein Foto eines Hundes oder ein Foto einer Person des anderen Geschlechts gepostet hat).
- Spracherkennung.
- Bildanalyse.
- Übersetzung (wir alle erinnern uns, wie viel Lärm die Simultanübersetzung über Skype machte).
- Rechtschreibprüfung und Korrekturvorschläge.
LUIS
Um Bots zu erstellen, benötigen Sie möglicherweise (Intelligenter Dienst zum Sprachverständnis). Serviceaufgaben:
- Stellen Sie fest, ob die Aussage des Benutzers Sinn ergibt und ob eine Bot-Antwort notwendig ist.
- Reduzieren Sie den Aufwand für die Transkription der Benutzersprache (Text) in Befehle, die der Bot verstehen kann.
- Sagen Sie die wahren Ziele/Absichten des Benutzers voraus und gewinnen Sie wichtige Erkenntnisse aus Gesprächsphrasen.
- Ermöglichen Sie dem Entwickler, den Bot anhand einiger Beispiele zur Bedeutungserkennung zu starten und ihn dann während der Arbeit weiter zu trainieren.
- Ermöglichen Sie dem Entwickler, die Qualität der Befehlstranskription mithilfe der Visualisierung zu beurteilen.
- Unterstützen Sie die schrittweise Verbesserung der Erkennung echter Ziele.
Im Wesentlichen besteht das Hauptziel von LUIS darin, mit einer gewissen Wahrscheinlichkeit zu verstehen, was der Benutzer gemeint hat, und eine natürliche Abfrage in einen zusammenhängenden Befehl umzuwandeln. Um Abfragewerte zu erkennen, verwendet LUIS eine Reihe von Absichten (Bedeutungen, Absichten) und Entitäten (entweder von Entwicklern vorkonfiguriert oder übernommene und vorgefertigte „Domänen“ – einige vorgefertigte Bibliotheken mit typischen Phrasen, die von Microsoft erstellt wurden).
Ein einfaches Beispiel: Sie haben einen Bot, der Ihnen eine Wettervorhersage liefert. Für ihn besteht die Absicht darin, eine natürliche Anfrage in eine „Handlung“ zu übersetzen – etwa eine Anfrage nach einer Wettervorhersage, und die Entitäten sind Zeit und Ort. Hier ist ein Diagramm, das zeigt, wie die CheckWeather-Absicht für einen solchen Bot funktioniert.
Absicht
Essenz
Beispiel einer natürlichen Abfrage
Wettercheck
{"Typ": "Standort", "Entität": "Moskau"}
{"Typ": "builtin.datetimeV2.date", "Entität": "Zukunft","Auflösung":"2020-05-30"}
Wie wird das Wetter morgen in Moskau?
Wettercheck
{ "Typ": "Datumsbereich", "Entität": "dieses Wochenende" }
Zeigen Sie mir die Vorhersage für dieses Wochenende
Um QnA Maker und LUIS zu kombinieren, können Sie verwenden .

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 einfach eine Antwort aus der Unternehmens-Wissensdatenbank; ist dieser niedrig, kann die Anfrage zur Klärung an LUIS gesendet werden. Durch die Verwendung des Dispatchers müssen Sie diese Logik nicht programmieren, sondern können diese Grenze für die Aufteilung der Anfragen automatisch ermitteln und sie schnell verteilen.
Testen und Veröffentlichen des Bots
Eine weitere lokale Anwendung wird zum Testen verwendet, . Mithilfe des Emulators können Sie mit dem Bot kommunizieren und die von ihm gesendeten und empfangenen Nachrichten überprüfen. Der Emulator zeigt Nachrichten so an, wie sie in der Web-Chat-Oberfläche erscheinen würden, und protokolliert JSON-Anfragen und -Antworten, während Sie Nachrichten mit dem Bot austauschen.
Ein Beispiel für die Verwendung des Emulators wird in dieser Demo vorgestellt, die die Erstellung eines virtuellen Assistenten für BMW zeigt. Im Video werden auch neue Beschleuniger für die Erstellung von Chatbots besprochen – Vorlagen:

Sie können Vorlagen auch beim Erstellen Ihrer eigenen Chatbots verwenden.
Mithilfe von Vorlagen können Sie typische Bot-Funktionen nicht neu schreiben, sondern vorgefertigten Code als „Fähigkeit“ hinzufügen. Ein Beispiel könnte die Arbeit mit einem Kalender, das Einrichten von Besprechungen usw. sein. Code der vorgefertigten Fähigkeiten auf Github.
Der Test war erfolgreich, der Bot ist fertig und muss nun veröffentlicht und die Kanäle verbunden werden. Die Veröffentlichung erfolgt über Azure-Tools, als Kanäle können Messenger oder soziale Netzwerke genutzt werden. Sollte kein benötigter Kanal zur Dateneingabe vorhanden sein, können Sie in der entsprechenden Community auf GitHab danach suchen.
Um einen vollwertigen Chatbot als Schnittstelle für die Kommunikation mit dem Benutzer und kognitive Dienste zu erstellen, benötigen Sie natürlich zusätzliche Azure-Dienste wie Datenbanken, Serverless (Azure Functions) sowie LogicApp-Dienste und möglicherweise Event Grid.

Auswertung und Analytik
Zur Auswertung von Benutzerinteraktionen können Sie entweder die integrierte Analyse des Azure Bot Service oder den dedizierten Application Insights-Dienst verwenden.
Im Ergebnis können Informationen nach folgenden Kriterien erhoben werden:
- Wie viele Benutzer haben im ausgewählten Zeitraum über verschiedene Kanäle auf den Bot zugegriffen.
- Wie viele Benutzer, die eine Nachricht gesendet haben, sind später zurückgekommen und haben eine weitere gesendet.
- Wie viele Aktionen wurden während des angegebenen Zeitintervalls über jeden Kanal 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 Auslastung und die Chatbot-Reaktionen zu erhalten. Zu beachten ist, dass der Application Insights-Dienst über eine eigene Schnittstelle im Azure-Portal verfügt.
Darüber hinaus können die über diesen Dienst gesammelten Daten zum Erstellen zusätzlicher Visualisierungen und Analyseberichte in PowerBI verwendet werden. Ein Beispiel für einen solchen Bericht und eine Vorlage für PowerBI finden Sie .

Vielen Dank für Ihre Aufmerksamkeit! In diesem Artikel haben wir aus dem Webinar der Microsoft Azure-Architektin Anna Fenyushina „Wenn die Leute keine Zeit haben. Wie Sie Chatbots und kognitive Dienste zu 100 % nutzen, um Routineprozesse zu automatisieren“, in dem wir klar gezeigt haben, was Chatbots in Azure sind und welche Szenarien für ihre Verwendung möglich sind. Außerdem haben wir gezeigt, wie man in 15 Minuten einen Bot in QnA Maker erstellt und wie man die Struktur von Anfragen in LUIS entschlüsselt.
Wir haben dieses Webinar als Teil des Online-Marathons für Entwickler Dev Bootcamp durchgeführt. Es wurden Produkte vorgestellt, die die Entwicklung beschleunigen und den Mitarbeitern des Unternehmens mithilfe von Automatisierungstools und vorkonfigurierten Azure-Modulen einen Teil der Routinearbeit abnehmen. Aufzeichnungen weiterer im Marathon enthaltener Webinare sind unter den folgenden Links verfügbar:
-
Wir sprechen über die Entwicklung und neuen Funktionen des Azure DevOps-Dienstes. Wir werden alle fünf Hauptkomponenten im Detail untersuchen und wie der Dienst bei der Organisation der industriellen Softwareentwicklung hilft. Gastgeber: Vladimir Gusarov, Microsoft MVP.
Wir schauen uns an, wie der „Build as Code“-Ansatz für jede Programmiersprache mithilfe mehrstufiger YAML-Pipelines implementiert werden kann. Gastgeber: Vladimir Gusarov, Microsoft MVP.
Wir besprechen, wie man Strategien zum Speichern von Software-Quellcode entwickelt und wie man Versionskontrollsysteme mit Azure Repos verwendet. Gastgeber: Vladimir Gusarov, Microsoft MVP.
Wir führen Open Source-Managementmethoden während der Entwicklung und praktischen Anwendung des WhiteSource-Tools ein. Wir sprechen über die Suche nach Schwachstellen in Open-Source-Komponenten und die Einhaltung der Lizenzbestimmungen mit WhiteSource. Gastgeber sind Diana Lisbaron, Director of Sales WhiteSource, und Daria Oreshkina, Web Control, der offizielle Distributor von WhiteSource in Russland.
Source: habr.com
