Dialogflower - Google Dialogflow für Yandex Alice


Vor einigen Monaten startete Yandex eine Beta seiner Sprachassistentin Alice , in der es seine API öffnete. Und erst kürzlich habe ich alles öffentlich gemacht. Jetzt können Millionen von Benutzern verschiedene Funktionen und Dienste per Spracheingabe direkt über die mobile Suche, den Navigator und den Yandex-Browser starten. Es überrascht nicht, dass es immer mehr Sprachfähigkeiten gibt. Die Dialog-API setzt jedoch voraus, dass Sie programmieren können, einen eigenen Server mit HTTPS haben und außerdem Anforderungen in einer natürlichen Sprache verarbeiten können müssen ...

Inzwischen hat Google seit langem einen kostenlosen und recht praktischen Dialogdesigner namens Dialogflow. Natürlich unterstützt er Alices Protokoll nicht sofort, daher kam die Idee, diese Situation zu korrigieren, sodass Entwickler (und nicht nur) schnell und ohne Server Fähigkeiten für Alice entwickeln, die die natürliche Sprache und den Kontext des Dialogs verstehen können.

Was ist Dialogflow?


Bild

Dialogflow ist ein Onlinedienst von Google, mit dem Sie Ihre eigenen Chat-Bots oder Funktionen für einen Google-Assistenten erstellen können (dies wird als Agent bezeichnet ). Es gibt bereits einige gute Artikel über das Habré, in denen die wichtigsten Werkzeuge dieses Produkts behandelt werden. Hier ist einer von ihnen .

Tatsächlich kann Dialogflow die Phrase eines Benutzers in einer natürlichen Sprache (und auch in Russisch) mit einer „nicht-sprachlichen“ Bedeutung ( Absicht genannt ) abgleichen und etwas beantworten. Darüber hinaus hält er auch den Kontext des Dialogs fest, damit der nächste Satz im Kontext früherer Bemerkungen umgesetzt werden kann.

Das Tool ist recht einfach zu verwalten und speichert dennoch alle Statistiken von Anforderungen, sodass Sie den Agenten mit neuen Absichten neu schulen oder vorhandene mit einem Klick auffüllen können. So läuft das Training ab: Sie zeigen nur Beispiele für Anforderungen, die sich auf eine bestimmte Absicht in Ihrem Agenten beziehen, und Dialogflow erstellt automatisch ein Modell und versteht den Benutzer immer besser. Er kann auch einige Entitäten aus der Phrase auswählen, z. B. Datumsangaben oder Städte, wenn Sie diese benötigen, um eine Funktion auszuführen.

Warum ist es Alice?


Alice hat eine API ähnlich der Telegramm-API. Mit anderen Worten, um eine Fertigkeit für Alice zu erstellen, müssen Sie einen Server einrichten, der eine Textanforderung von Alice vom Benutzer empfängt und mit Daten im gewünschten Format antwortet. Alles scheint einfach zu sein, aber um selbst die einfachste Fähigkeit zu erstellen, müssen Sie das Protokoll von Alice studieren, Ihren öffentlichen Server mit HTTPS erhöhen, Code schreiben, der die menschliche Sprache versteht und den Kontext der Konversation beibehält.

Damit Sie nicht jedes Mal alle diese Schritte ausführen müssen, können Sie Dialogflow verwenden, wenn Sie kein Programmierer sind und die Fertigkeiten wirklich verbessern müssen.

Dialogblume


Bild

Nur Dialogflow unterstützt das Alice-Protokoll nicht, sodass Sie einen Agenten nicht einfach in eine Fertigkeit verwandeln können. Zu diesem Zweck wurde der Dienst dialogflower.com erstellt, der im Wesentlichen ein Adapter ist. Er implementiert einerseits das Alice-Protokoll und stellt andererseits eine Verbindung zu Ihrem Dialogflow-Agenten her. Und macht so den Agenten zu einer Fähigkeit. Ohne Server und Code.

Bild

Erstellen Sie einen Agenten


Bild

Jetzt können wir uns nur noch auf die Logik des Dialogs selbst in unserem Agenten konzentrieren. Zuerst müssen Sie genau diesen Agenten auf der Site dialogflow.com erstellen

Nach der Eingabe werden wir aufgefordert, den Namen des Agenten einzugeben und dessen Sprache auszuwählen. Im Namen können nur lateinische Buchstaben verwendet werden. Denken Sie daran, die Sprache auf Russisch umzustellen.

Danach können Sie Absichten hinzufügen - Themen, die unser Agent versteht und auf die er irgendwie reagiert.

Standardmäßige Begrüßungsabsicht


Diese Absicht ist standardmäßig in jedem Agenten vorhanden. Es wird nicht bei einer Benutzerphrase ausgelöst, sondern beim Willkommensereignis . Das heißt, wenn ein Benutzer Ihre Fertigkeit in Alice mit einem Satz wie "Die Fertigkeit starten ist meine wichtigste Fertigkeit" startet. Dann gibt es immer noch keinen Befehl vom Benutzer, und der Agent als Antwort sollte in der Regel einfach mitteilen, was als nächstes getan werden kann.

Wenn Sie in der Liste der Absichten auf Standard-Begrüßungsabsicht klicken, können Sie unten auf der Seite Antworten hinzufügen - Antworten, aus denen der Agent jedes Mal zufällig eine auswählt und an Alice sendet.

Alice weiß immer noch, wie man Schaltflächen und Links anzeigt, dann zeigen wir, wie man sie der Antwort hinzufügt

Klicken Sie auf Antwort hinzufügen - Textantwort und fügen Sie Textantwortoptionen hinzu.

Standard-Fallback-Absicht


Bild

Diese Absicht wird ausgelöst, wenn der Benutzer eine Phrase sagt, die der Agent keiner der vorhandenen Absichten zuordnen kann. Das heißt, wenn der Agent die Anforderung des Benutzers einfach nicht versteht. Hier können Sie auch die Antworten festlegen, die Alice geben wird, wenn wir nicht wissen, was wir antworten sollen.

Wir antworten auf Repliken


Wenn Sie im linken Menü neben dem Wort Absichten auf das Pluszeichen klicken, können Sie eine neue Absicht hinzufügen und eine Liste von Phrasen angeben, auf die Sie etwas beantworten müssen. Fügen Sie in der Liste Trainingsphrasen die Phrasen hinzu, die der Benutzer wahrscheinlich ausspricht. Je mehr von ihnen, desto besser.

Natürlich versteht Dialogflow Englisch besser als Russisch. Erwarten Sie daher nicht, dass er alle gleichbedeutenden Ausdrücke versteht. In dieser Hinsicht funktioniert unser analoges Aimylogic besser, worüber ich weiter unten sprechen werde.

Vergessen Sie nicht, Ihrer Absicht Antworten hinzuzufügen und klicken Sie auf die Schaltfläche Speichern . Ohne es wird nichts funktionieren.
Sie können es hier testen - auf der rechten Seite des Bildschirms. Schreiben Sie Ihre Testphrase in das Feld Jetzt testen und sehen Sie, was Ihr Agent geantwortet hat.

Fertigkeiten erschaffen


Jetzt ist alles bereit, um unseren erstellten Agenten an Alice zu befestigen und in der Yandex Dialog-Konsole zu testen. Gehen Sie dazu zu dialogflower.com und klicken Sie auf Fertigkeit erstellen . Geben Sie im angezeigten Fenster das Clientzugriffstoken Ihres Agenten an. Sie finden es auf der Seite mit den Agenteneinstellungen in Dialogflow. Klicken Sie auf Fertig stellen und in einer Sekunde haben Sie eine Webhook-URL, mit der wir zu Yandex Dialogs gehen.

Bild

Erstellen Sie dann eine neue Fähigkeit für Alice und geben Sie diese Webhook-URL in seinen Einstellungen an. Darüber hinaus müssen Sie für Tests nur den Namen der Fertigkeit angeben, alle anderen Felder sind noch nicht erforderlich. Klicken Sie auf Speichern und wechseln Sie zur Registerkarte Testen . Hier können Sie etwas schreiben und überprüfen, ob Ihre Fähigkeiten wie erwartet funktionieren.

Wir erhöhen die Funktionalität


Jetzt ist unsere Fähigkeit bereit und alle Änderungen wirken sich nur auf den Agenten in Dialogflow aus. Fügen Sie einfach Absichten hinzu und ändern Sie sie. Vergessen Sie nicht, auf die Schaltfläche Speichern zu klicken und das Ergebnis in der Yandex.Dialogs-Konsole zu testen.

Wie man den Kontext versteht


Dialogflow kann Absichten verketten, sodass Ihre Fähigkeiten angemessen auf Phrasen reagieren können, die im Kontext einer Konversation gesprochen werden. Fügen Sie dazu einfach die Absicht einer anderen Absicht hinzu. Gehen Sie dazu zur Liste der Absichten und bewegen Sie den Mauszeiger über eine davon. Rechts wird eine schwache Meldung zum Hinzufügen von Folgeabsichten angezeigt. Klicken Sie darauf und fügen Sie eine Absicht hinzu, die im Kontext der vorherigen funktioniert.

Das heißt, wenn Sie beispielsweise eine Absicht haben, die auf Sätze wie „Wie ist das Wetter?“ Reagiert, können Sie eine Absicht mit Sätzen wie „Morgen“ hinzufügen. Dieser Satz wird dann vom Agenten nur verarbeitet, wenn der Benutzer zuerst nach dem Wetter gefragt hat.

So fügen Sie Schaltflächen zu Alices Antwort hinzu


Alice kann nicht nur mit Text antworten, sondern auch Schaltflächen und Links anzeigen. Durch Klicken auf die Schaltfläche bildet der Benutzer sozusagen eine neue Anfrage, nur ohne sie auszusprechen und ohne zu tippen.

Um der Antwort Schaltflächen hinzuzufügen, müssen Sie ein Stück JSON in einem Format schreiben, das Alice versteht. Gehen Sie dazu zur gewünschten Absicht, gehen Sie zu den Antworten dort und klicken Sie auf Antworten hinzufügen - Benutzerdefinierte Nutzlast . Hier können Sie eine Antwort von der Alice-API angeben. Um beispielsweise Schaltflächen hinzuzufügen, schreiben Sie

{"buttons": [ {"title": " ", "hide": true} ]} 


Hier wird eine Schaltfläche hinzugefügt, die Alice beim Drücken eine Anfrage "Text anfordern" sendet und danach automatisch aus dem Chat-Verlauf verschwindet. Und hier ist ein weiteres Beispiel

 {"buttons": [ {"title": " ", "hide": true}, {"title": "  ", "url": "https://dialogflower.com"} ]} 


Hier werden zwei Schaltflächen hinzugefügt, von denen eine einen Link zu dialogflower.com darstellt

Im Allgemeinen können Sie jeden JSON in Payload im Format des "Antwort" -Felds aus Alices Protokoll schreiben.

Wo ist die Logik?


Natürlich müssen Sie nicht immer mit zufälligen, sondern statischen Phrasen antworten. Um etwas Logik hinzuzufügen, müssen Sie einen kleinen Code schreiben. Nun, oder viel, es liegt an Ihnen. Mit Dialogflow können Sie dies jedoch tun, ohne Server zu mieten.

Gehen Sie zur Registerkarte Erfüllung und schalten Sie den Schalter Deaktiviert ein. Hier können Sie Javascript-Code schreiben, der nach Bedarf auf die ausgelöste Absicht reagiert und eine Art Logik ausführt, bevor die Antwort an den Benutzer gesendet wird. Tatsächlich kann die Antwort selbst sofort im Code neu definiert werden.

Hier werde ich nicht beschreiben, wie und was mit diesem Code zu tun ist. Ich werde nur ein gutes Beispiel für Github geben , in dem der Agent Ereignisse im Google-Kalender erstellen und den Benutzer aufzeichnen kann, um das Fahrrad in freien Stunden zu reparieren.

Das Hauptvorteil hierbei ist, dass Sie keinen separaten Server einrichten müssen, um eine Logik für Ihren Agenten zu implementieren. Google erledigt alles für Sie und kostenlos.

Zusammenfassend


Alice wird von immer mehr Menschen im Land benutzt. Sie arbeitet in der Suche, im Navigator und im Browser, und bald wird die Home-Kolumne mit Alice an Bord zum Verkauf angeboten.

Alice hat eine API und jeden Tag erscheinen mehr und mehr Sprachfähigkeiten für sie.

Dialogflow von Google bietet ein gutes Tool für die Entwicklung von Sprachanwendungen, auch ohne Programmierkenntnisse und mit der Möglichkeit, Ihren Code kostenlos auf Google-Servern auszuführen.

Dialogflower verbindet den Agenten in Dialogflow mit Alice, sodass Sie schnell Fähigkeiten erstellen und experimentieren können.

Also, was war los? Darüber hinaus ist Dialogflower so kostenlos wie Dialogflow mit Alice.

Fliege in die Salbe


Dies waren alles interaktive Blumen, aber in der realen Welt ist nicht alles so schön. Natürlich ist Dialoglfow ein cooles Tool, aber auf Russisch funktioniert es nicht so gut wie auf Englisch. Bisher versteht er nicht viele Synonyme, und sie müssen beim Erstellen der Absicht manuell getötet werden.

Ein weiterer Nachteil ist, dass es in Dialogflow ziemlich schwierig ist, auch nur einen etwas komplizierten Dialog zu verwalten. Sie können es einfach nicht überprüfen, da Absichten nur eine flache Liste sind.

Vor ein paar Tagen wurde auf Habré ein Tool mit ähnlichen Funktionen eingeführt , das auch weiß, wie man natürliche russische Sprache versteht, es aber viel besser versteht und Synonyme versteht, selbst wenn Sie den Bot nur mit ein paar Sätzen trainiert haben. Es gibt noch nicht viele Dialogflow-Funktionen, z. B. Entitätsextraktion oder Statistik. Es gibt aber einen coolen visuellen Editor, in dem der gesamte Verlauf des Dialogs mit dem Benutzer sofort sichtbar ist. Und Sie können Logik hinzufügen, ohne Code zu schreiben.

Entwickler gewinnen jedoch immer in einem lebhaften Wettbewerb zwischen Herstellern von Entwicklertools.

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


All Articles