Alexa Hacking Workshop

Eschborn, 09.01.2018

Künstliche Intelligenz (KI) und Chatbots sind in aller Munde. Sprachbedienung ist vor allem durch die Amazon Echo Produktfamilie sehr populär. Um die Möglichkeiten einer Technologie auszuloten, ist es immer sinnvoll, sich selbst damit aktiv auseinanderzusetzen und eventuell sogar einen Prototypen zu entwickeln. Dies ist die Motivation für den Alexa Hacking Workshop, der im Unternehmensverbund S&N Invent von  Agon Solutions kurz vor Weihnachten 2017 veranstaltet wurde. Mehrere Entwickler und Berater trafen sich für zwei Tage in den Eschborner Büros, um zusammen spielerisch die neue Technologie zu entdecken. Aber es gab auch ein konkretes Ziel: Es sollte ein funktionierender und sinnvoller Skill (Alexa-Speak für „App“) entwickelt werden, der über Amazon Echo bedienbar ist.

Alexa Hacking Workshop

Erste Ansätze

Der erste Hacking Tag begann zunächst mit einem theoretischen Crashkurs in der notwendigen Terminologie sowie dem Programmiermodell. Anschließend ging es an die Einrichtung in der Amazon Cloud für einen Alexa Skill und eine Amazon Web Services (AWS) Lambda Funktion für die Anwendungslogik. Für den Alexa Skill muss mindestens ein Amazon Developer Account vorhanden sein. Dieser erweitert im Regelfall einen vorhanden Amazon-Account. Die AWS Lambda Funktion erfordert einen AWS Account. Erste Erfahrung bei der Registrierung beider Accounts: Die Erstellung eines Skills und Lambda Services ist zunächst kostenlos. Erst mit einer hohen Aufrufrate pro Monat entstehen nutzungsbezogene Kosten, was ohne Publizierung des Skills zumindest unwahrscheinlich ist. Fazit: Die Registrierung mit individuellen Accounts ist für erste Versuche die beste Wahl.

Im zweiten Schritt ging es an die Erstellung eines kleinen Beispiels. Mit Hilfe des Alexa Skill Kits erfolgt die geführte Konfiguration und Erstellung des Gesprächsleitfadens. Der Skill erhält zunächst seinen „Invocation Name“ (z.B. SkillXY), mit dem er sprachlich aktiviert wird: „Alexa, öffne SkillXY. Danach wird das Interaction Model, ein Gesprächsleitfaden, modelliert.

Für die Anlage des Lambda-Services nutzt man vorhandene Templates für NodeJS, Java, Python oder C# und generiert einen Connector zum Aufruf durch Skills. Nach gegenseitiger Referenzierung von Skill und Lambda-Service können beide Seiten über einen JSON basierten Anfrage-Response-Mechanismus kommunizieren und die Testfunktion des Alexa Skills mit textbasierter Eingabe erlaubt einen ersten Roundtrip.

Im dritten Schritt ist noch ein Client einzurichten, um per Sprache mit dem Alexa Skill zu kommunizieren. Dazu kann entweder das Amazon Echo-Gerät über eine mobile App in einem WLAN eingerichtet werden. Oder man verwendet die Alexa Reverb App, die eine verminderter Sprachqualität bietet, aber kein Echo-Gerät erfordert und überall unterwegs genutzt werden kann.

Nach dem ersten Setup begann jeder Teilnehmer sofort, seine eigenen Ideen in erste Skills zu gießen. Tatsächlich kommt man mit dem Skill Kit sehr schnell zu ersten lauffähigen Ergebnissen. Sind im Interaction Model ein oder mehrere „Intents“ (Absichten) angelegt, werden die so genannten „Sample Utterances“ definiert, die den Start eines Intents triggern. Die Herausforderung besteht darin, möglichst viele der gängigen Varianten für Satzstrukturen und Synonyme abzubilden, die ein Mensch in seiner Sprache verwenden kann (siehe Abbildung). Will man sich diesen Aufwand sparen, muss man sich entweder die Äußerung für den späteren Test notieren oder einen Hilfe-Intent erstellen, der dem Benutzer mögliche Äußerungen vorliest. Eine Utterance kann auch so genannte „Slots“ enthalten. Das sind Worte, die einem bestimmten Typ entsprechen müssen (z.B. „Vorname“ oder „Wochentag“), und die dann später entsprechend ausgewertet und weiter verwendet werden können. Für Fragen- und Antwortsätze an den Benutzer sind sogenannte Prompts zu erstellen, die ebenfalls Slots beinhalten können.

Zur Vervollständigung benötigt ein Skill natürlich auch Business Logik. Diese kann durch einen beliebigen Webservice oder durch eine AWS Lambda Funktion bereitgestellt werden. Wir haben uns der Einfachheit halber für AWS Lambda, also für Serverless Programming und dessen Implementierung mit NodeJS (JavaScript) entschieden.

In AWS Lambda muss dann für jeden Intent eine JavaScript Funktion bereitgestellt werden. Amazon bietet eine entsprechende Alexa API an, mit der man z.B. Zugriff auf die Slots (Parameter) in der Utterance erhält, mit der der Intent aufgerufen wurde. Für kleine Skills bleibt das JavaScript noch übersichtlich und auch dieser Teil der Skill Implementierung ist schnell erledigt.

Nach dem ersten halben Tag herrschte Euphorie auf dem Hacking Event: alle Skills laufen wie geplant!

Alexa Hacking Workshop

Von Einfach zu Komplex

Nach den ersten Gehversuchen nahmen sich die meisten Teilnehmer komplexere Skills vor. Eine typische Schwierigkeit bei der Interaktion mit Alexa ist, dass der Benutzer nur einen Teil der notwendigen Informationen angibt. Im Interaction Model kann man daher bestimmte Slots als mandatory kennzeichnen und Alexa fragt dann selbsttätig nach. Den Rest des ersten Tages verbrachten die Teilnehmer mit dem Erforschen der Möglichkeiten, welche das Interaction Model bietet, um komplexere Unterhaltungen abzubilden. So zeigte sich, dass bestimmte scheinbar einfache Use Cases nicht so einfach umzusetzen sind wie gedacht. So gab es z.B. größere Probleme bei der Implementierung eines Vokabeltrainers. Es ist ein Hindernis, dass der Skill keinen Zugriff auf den gesamten vom Benutzer gesprochenen Text hat, sondern nur auf die Slots. Die Slots wiederum müssen bestimmten Datentypen entsprechen (s.o.), die teilweise nur eingeschränkte Formate oder Inhalte (z.B: bestimmte Vornamen) akzeptieren.

State Management ist ein weiteres Problem. Denn Lambda Funktionen müssen stateless sein. Diese Einsicht wird dadurch erschwert, dass der Lambda Container durch AWS scheinbar nicht bei jedem Aufruf neu gestartet wird, so dass manchmal die globalen Variablen des JavaScript Codes erhalten bleiben – aber eben nicht immer. Wenn man State belastbar erhalten will, muss man den also an den Skill zurückgeben und mit jedem Aufruf wieder an Lambda übergeben. Oder, alternativ, zwischendurch in einer Datenbank speichern. Für die Abarbeitung eines Intents verwaltet der Skill ein State-Modell, für das in der Lambda Funktion spezifische Events erstellt werden können - beispielsweise zur Validierung von Slots oder zur Erstellung von Business Logik für den erfolgreichen Abschluss eines Intents.

Nach ersten Tests wurde erweiterte Features wie der Aufruf externer HTTPS Services, Optimierte Sprachausgabe per SSML (Speech Synthesis Markup Language, basiert auf XML), die Ausgabe von Cards (Skill-Infos auf der Alexa Mobile-App) und Mehrsprachigkeit ausprobiert.

Reale Welt

Nach den dann ernüchternden Erfahrungen aus Tag 1 begann der zweite Tag des Hacking Events zunächst mit einer Planungsrunde. Eine Idee war nun, einen „Info Skill“ zu entwickeln, mit dem ein realer Benutzer sich Informationen über das Unternehmen und seine Dienstleistungen verschaffen kann. Dazu entwarfen die Teilnehmer zunächst das Interaction Model grob am Whiteboard.

Alexa Hacking Workshop

Danach brauchte es noch ca. 3 Stunden, um den geplanten Skill mit einem ersten Testfall ausprobieren zu können. Es zeigte sich, dass die Grundidee stimmig war und man auf diese Weise zum Ziel kommen würde. Auch hier stecken allerdings die Tücken wieder im Detail. Für einen real verwendbaren Skill fließt ein Großteil des Aufwands in die Struktur des Gesprächsablaufes (wie viele Intents, welche Reihenfolge etc.) und die Sprachausgabe (Behandlung von Sonderzeichen in SSML, korrekte Aussprache von Fremdworten, korrekte Wiedergabe von Abkürzungen („S&N“, GmbH) und Betonung („Ahhhgon"). Soll Alexa längere informative Texte vorlesen, müssen nach Kommata, Sätzen und Absätzen Pausen, Emotionen und Betonungen ergänzt werden. Nicht zu unterschätzen ist der Testaufwand! Das Ergebnis überzeugte erst nach einigen Testrunden mit mehreren Personen und umfangreicher Ergänzung der Äußerungen. Beispielsweise muss generell vor Publizierung ein Hilfs-Intent zur Anleitung der Nutzer erstellt werden.

Zusammenfassung

Nach den 2 Tagen Alexa Hacking haben die Teilnehmer viel über Chatbots, Alexa, Amazon Echo und Natural Language Processing (NLP) gelernt. Man kennt Tools und Methoden und kann Stärken und Schwächen nun viel besser einschätzen. Es wird klar, wo Herausforderungen und Aufwände versteckt sind. Mitarbeiter sind nun für entsprechende Projekte und Kundenanfragen besser gerüstet. Nicht zuletzt gibt es tatsächlich ein lauffähiges und einsatzfähiges Ergebnis: den Skill.

Ansprechpartner: Juri Urbainczyk, Jochen Kirchner

Kontakt

Nicole Heyne

Marketing

Person_Bild

Telefon +49 6196 80269-28
E-Mail senden