Botovodstvo



Seit Anfang der 2000er Jahre erscheinen Nachrichten über die Einführung von Chat-Bots in die Arbeit mit beneidenswerter Häufigkeit. In diesem Artikel werde ich Ihnen sagen, wo Sie anfangen sollen, einen Überblick über vorhandene Lösungen geben und die Erfahrungen beim Erstellen eines Bots für Selectel teilen.

Anwendungsbereich


Die Geschäftsentwicklung geht häufig nicht nur mit der Erweiterung des Kerngeschäfts einher, sondern auch mit dem Debuggen unterstützender Prozesse. Chatbots sind nur ein Teil der Geschäftsaktivität im Rahmen der Routine-Automatisierung. Die Kommunikation und die Ausführung einfacher Aufgaben des gleichen Typs liegen der Arbeit des Chat-Bots zugrunde. Damit können Sie nicht nur sich wiederholende Aufgaben ausführen, sondern auch Aufgaben, die eine Person nicht ausführen kann, z. B. die Überwachung von Aktivitäten in sozialen Netzwerken.

Ich möchte am Beispiel meiner eigenen Arbeit bei Selectel verschiedene Anwendungsbereiche für Bots angeben. Mini-Spoiler: Ich habe meine Arbeit als technischer Redakteur begonnen und bin jetzt Ingenieur in der Abteilung für Cloud-Lösungen. Der Weg zur Implementierung virtueller Assistenten begann mit einem Bot für die Marketingabteilung, der Kommentare und Erwähnungen des Unternehmens in sozialen Netzwerken verfolgt. Eine solche Entwicklung ist sehr einfach, ergänzt jedoch effektiv bestehende Lösungen auf dem Markt, beispielsweise den IFTTT-Dienst .

Die folgenden Entwicklungen in meiner Praxis waren ein interner Chatbot für die Personalabteilung und ein Bot für die Kommunikation mit Kunden, der während der SelectelTechDay-Konferenzen in St. Petersburg und Moskau als Demo-Stand präsentiert wurde. Beide Bots werden mit unterschiedlichen Diensten und Technologien erstellt. Bevor Sie sich mit den technischen Details befassen, sollten Sie das oberste Schema der Geräte-Bots berücksichtigen.

Die Grundprinzipien der Botanik




Die Chatbot-Aktivität basiert auf drei Hauptaktionen:

  1. Informationen werden über bestimmte Kommunikationskanäle empfangen oder angezeigt, z. B. in Slack- oder Vk.com-Dialogen.
  2. Das Erkennen von Absichten ist eine umfassende Analyse der Informationen, die zur Beantwortung erhalten wurden
  3. Aktionsverarbeitung - alle auf der Serverseite ausgeführten Arbeiten, die zur Vorbereitung der richtigen Antwort erforderlich sind. Wenn beispielsweise eine Wettervorhersage angefordert wurde, wird eine Anfrage an eine bestimmte API bezüglich des Wetters in der Stadt N gestellt, und die Ergebnisse dieses Befehls werden an den Benutzer gesendet

Die Hauptaktionen von Chatbots werden im Rahmen der Aufgabe der Aufrechterhaltung des Kontexts kombiniert, um eine humanoide Form der Kommunikation zu schaffen und den Dialog zu unterstützen. Der Chatbot sollte sich an das Gesprächsthema „erinnern“ und seine Antworten entsprechend anpassen.

Das Problem der Verbindung des Chatbots mit sozialen Plattformen wird separat behandelt. Konnektoren zu Instant Messenger und sozialen Netzwerken können unabhängig voneinander implementiert oder im Rahmen vorhandener Produkte zur Erstellung von Chat-Bots unterstützt werden.

Derzeit gibt es viele Lösungen, die einen vorgefertigten Service zur Automatisierung des technischen Supports oder der Verkaufsprozesse anbieten. Ich werde mehr auf Tools achten, mit denen Sie einen Service erstellen können, der die internen Anforderungen an die Unternehmenssicherheit erfüllt, ohne den Entwicklungsprozess zu verkomplizieren.

Botanischer Bau


Die oben genannten 3 Prinzipien von Chat-Bots (Kanal, Analyse, Aktion) können auf verschiedene Arten implementiert werden. Am einfachsten ist es, den eingehenden Text zu vergleichen und die entsprechenden Antworten an den Benutzer zu senden.



Unser Ziel ist etwas höher - ein System zu schaffen, in dem Sie schnell neue Skripte hinzufügen können und das den Benutzer in den meisten Fällen versteht.

Dazu müssen wir verstehen, wovon der Benutzer spricht, den Fortschritt des Dialogs steuern und in einigen Fällen bestimmte Aktionen ausführen (z. B. Besprechungsräume buchen). Dies kann mit den folgenden Tools erreicht werden:

  • DialogFlow (Google)
  • Wit.ai (Facebook)
  • Azure Bot-Dienst (Microsoft)
  • Rasa Core (Open Source)


Bei der Auswahl eines Produkts werden folgende Faktoren berücksichtigt:

  1. Wie kritisch ist die Platzierung des ausführbaren Codes des Bots in vorhandenen Systemen?
    Im Fall von Wit.ai und Dialogflow steuern wir beispielsweise nicht den gesamten Prozess vollständig - wir geben den Text an diese Anwendungen weiter und erhalten eine vorgefertigte Antwort. Mit dem Rasa Core oder Azure BotBuilder SDK können wir die gesamte Korrespondenz innerhalb der Grenzen interner Systeme speichern
  2. Wie viele Kommunikationskanäle benötigen Sie, um eine Verbindung herzustellen?
    Dialogflow bietet die Möglichkeit, eine begrenzte Anzahl von Konnektoren zu verwenden, die Instant Messenger und soziale Netzwerke durch Angabe von Zugriffsschlüsseln verbinden. Sie können für Wit.ai und Rasa Core eine beliebige Anzahl von Kanälen verwenden, aber die Logik der Verbindung muss unabhängig voneinander implementiert werden (häufig ist dies eine sehr triviale Aufgabe). Der Azure Bot-Dienst kann Konnektoren für bestimmte Kanäle verwenden, ist jedoch nicht auf diese beschränkt und kann auch unabhängig mit anderen Quellen verbunden werden
  3. Wie einfach ist es, Änderungen an der Bot-Wissensdatenbank vorzunehmen?
    Wenn Sie einen Bot in Form von Programmcode erstellen, ohne eine visuelle Schnittstelle für die Interaktion zu verwenden, begrenzen wir den Personenkreis, der Änderungen an den Dialogen und Antworten des Bots vornehmen kann. Die Funktionalität zum Hinzufügen und Bearbeiten von Phrasen sollte für alle verfügbar sein

Für unseren internen virtuellen Assistenten des Chat-Bots Tirex wurde eine Plattform von Google Dialogflow ausgewählt, die die Möglichkeit bietet, Absichten visuell zu bearbeiten. Die Aktionen werden in einer privaten Cloud in Selectel ausgeführt . Ausschlaggebend waren die Geschwindigkeit, mit der die Arbeit mit dem Bot begonnen wurde, die Sicherheit beim Senden von Nachrichten und das Vorhandensein des Slack-Kanals in der Liste der unterstützten.



Die Idee, einen Chat-Bot zu erstellen, liegt seit langem in der Luft des Unternehmens, insbesondere angesichts der Frage, welche Probleme damit gelöst werden könnten:

  • Eine Zunahme der Anzahl der Mitarbeiter des Unternehmens und damit ein zunehmender Fluss ähnlicher Fragen wie „Wie verwende ich eine Unternehmensbibliothek?“. und "Wo soll ich zu Mittag essen?"
  • Regelmäßige Buchung von Tagungsräumen und Ausstellung von Ausweisen
  • Suchen Sie in der Wissensdatenbank des Unternehmens nach Informationen und Dokumenten



Das Erstellen und Verbinden eines Bots in Dialogflow dauert einige Minuten. Zu Beginn werden wir die Prinzipien des Chatbots im System betrachten und dann die Implementierung komplexer Aktionen hinzufügen.

Erstellen eines Bots in Dialogflow


Architektur schaffen


Weiter im Text werden wir mit solchen Konzepten arbeiten wie:

  • Absicht ist eine formalisierte Aufgabe, die ein Benutzer ausführen möchte.
  • Parameter - Ein Datensatz, der zum Ausführen einer Aufgabe benötigt wird
  • Antwort - Eine Funktion oder ein Programm, das bzw. das als Reaktion auf eine erkannte Absicht ausgeführt wird
  • Trainingsphrase - Ein Beispiel für eine Nachricht des Benutzers, auf der der Chatbot lernt

Dialogflow verarbeitet die natürliche Sprache und extrahiert alle erforderlichen Daten, um komplexe Befehle auszuführen. Hierzu werden Agenten erstellt, die mehrere Absichten enthalten. Mit jeder der Absichten können Sie einen Chatbot vorbereiten, um die Nuancen und Feinheiten bei der Formulierung von Anforderungen zu verstehen.

Die Absicht umfasst Trainingssätze , Parameter und Antworten . In der Trainingsphrase werden die Parameter (z. B. Zeit oder Ort) hervorgehoben, die zur Bildung der richtigen Antwort erforderlich sind.

Die Antwort wird entweder absichtlich angezeigt oder Dialogflow sendet eine Anfrage an unseren Server, der die erforderlichen Arbeiten ausführt und die Antwort am Beispiel unseres Chat-Bots zurückgibt:

  • Bei einfachen Fragen (zum Beispiel „Haben wir ein Versicherungsprogramm im Ausland?“) Liegt die Antwort in der Absicht
  • Für komplexere Aufgaben wie "Gibt es jetzt einen kostenlosen Anrufraum?" Die Antwort wird mithilfe einer zusätzlichen Anfrage an den Server gebildet, die die Freizeit für alle Teilnehmer und Räume bestimmt



Arbeite mit Absichten


Betrachten Sie die Arbeit mit Dialoglow als Beispiel für eine Verhandlungsreservierung. Wir erstellen einen Booking Management Agent und bestimmen die folgenden Absichten:

  • Bestehende Buchungen anzeigen
  • Buchen Sie einen Tagungsraum

Jede der Absichten wird durch Trainingsphrasen aufgerufen. Je mehr sie hinzugefügt werden, desto wahrscheinlicher wird die gewünschte Aktion ausgeführt. In unserem Beispiel wird die Absicht, einen Besprechungsraum zu buchen, durch die folgenden Sätze verursacht:

  • Buchen Sie für heute um 23.15 Uhr für 30 Minuten bei mir
  • Hallo. Bitte reservieren Sie einen Tagungsraum am 08/08/2018 von 15:00 bis 16:00 Uhr
  • Buchen
  • Ich brauche einen Besprechungsraum



Das Prinzip der absichtlichen Datenerfassung lautet wie folgt:

  1. Basierend auf den eingegangenen Eingaben versteht Dialogflow, um welche Absicht es sich handelt. In unserem Beispiel - Buchungsverhandlung
  2. Wenn die erforderlichen Parameter in der ersten Nachricht nicht angegeben wurden (z. B. die Besprechungszeit), stellt der Chat-Bot klärende Fragen
  3. Nach Erhalt aller Daten sendet Dialogflow eine Anfrage an unseren Server in VPC, um den gewünschten Raum zu reservieren

Schauen wir uns diesen Prozess in Aktion an:



Die Aktion wird verarbeitet, indem eine Anforderung mit allen Daten an die vorab hinzugefügte Adresse des Aktionsservers (Webhook-URL) gesendet wird:



Unter website.ru/webhook befindet sich ein Server, der komplexe Befehle verarbeitet (in unserem Beispiel wird die Zeichenfolge "Hallo vom Server!" Zurückgegeben). Github Gist für einen schnellen Start:

# -*- coding: utf-8 -*- from flask import Flask, request, make_response, jsonify app = Flask(__name__) @app.route('/webhook', methods=['POST']) def webhook(): req = request.get_json(force=True) intent = req.get('queryResult').get('intent').get('displayName') print(intent) if intent == 'Sample intent': res = make_response(jsonify( { "fulfillmentText": "  !", } )) return res return make_response(jsonify( { "fulfillmentText": "   !", } )) if __name__ == '__main__': app.run(host='0.0.0.0', debug=True, port=5000) 

Erstellen eines Bots mit RASA


Um den Chatbot ohne Dienste von Drittanbietern für die Texterkennung zu verwenden, können Sie Tools wie Rasa verwenden , mit denen Sie den gesamten Prozess des Bots vollständig steuern können. Rasa ist eine Reihe von Open-Source-Softwarekomponenten, die Spracherkennung und Dialogverwaltung enthalten. Sie können sich bereits das Boilerplate ansehen, das ich vorbereitet habe, um mich mit der Plattform vertraut zu machen, und wir werden detailliertere Anweisungen veröffentlichen, wenn Anfragen der Habr-Community vorliegen.

Chatbots und Business


Ob Automatisierungsdienste für den Kundenservice verwendet werden sollen, ist keine einfache Frage. Moderne Tools bieten viele Lösungen für die Wahl zwischen Flexibilität, Arbeitsgeschwindigkeit und Sicherheit. Absichtserkennungssysteme in natürlicher Sprache sind jetzt nicht nur in proprietärer Form verfügbar, sondern auch frei verbreitet, was große Möglichkeiten für eigene Experimente eröffnet. Wir haben eine der Optionen in Betracht gezogen, mit denen Sie Chat-Bots schnell implementieren können, um dieselben Aufgaben Ihres Unternehmens ohne Kapitalkosten und mit minimalem Arbeitsaufwand zu automatisieren. Wenn Sie bereits Chat-Bots in Ihrer Arbeit verwenden, teilen Sie Feedback in den Kommentaren zu Ihren Impressionen und natürlich den Impressionen Ihrer Kunden mit.

Source: https://habr.com/ru/post/de436622/


All Articles