Bevor wir mit den Herausforderungen, die sich bei der Umsetzung von Bots ergeben, loslegen, hilft es sicherlich erstmal kurz den Begriff “Bot” zu definieren. “Bot” leitet sich vom englischen Wort “robot” (dt. Roboter) ab. Dies erklärt zum Teil auch direkt die Definition, bzw. macht sie naheliegend.
Ein “Bot” ist ein Computerprogramm, das weitgehend automatisiert und selbstständig meist sich wiederholende Aufgaben abarbeitet. Es ist dabei nicht auf die Interaktion mit einem menschlichen Benutzer angewiesen. Beispiele für Bots sind z.B. die Webcrawler von Internet-Suchmaschinen, die selbsttätig Webseiten besuchen, wobei sie den vorhandenen Links folgen und dabei gegebenenfalls den Inhalt der Seiten auswerten.
Wenn Bots miteinander kommunizieren, spricht man von “Botnet”. Ein “Chatbot” ist ein Bot, der für die Interaktion in einer Unterhaltungsform mit einem Menschen gestaltet wird. Diese Art von Unterhaltung, wie z.B. Amazon Alexa, Siri etc., wird vorab programmiert.
Umsetzung von Bots – Challenge #1
Das KONZEPT. Im Vergleich zur Programmierung von z.B. Websites, Apps, hat der Entwickler nicht mehr einfach nur eine Designvorlage, die z.B. festlegt, dass ein bestimmter Text an einer bestimmten Stelle steht und dass beim Anklicken von einem bestimmt Button, das und das passiert. Zugegebenermaßen, auch das ist schon nicht leicht, aber welche Absicht der Nutzer verfolgt, wenn er z.B. einen gewissen Button klickt, ist bekannt.
Bei einem Sprachbot ist diese Absicht nicht bekannt. Es lässt sich auch nicht einfach die Absicht des Nutzers vorhersagen, trotz allem muss darauf reagiert werden können und der Sprachbot muss entsprechend programmiert sein.
Für einen Sprachbot bietet es sich an, eine Art Sprachbaum zu entwickeln. Jedoch kann ein solcher Baum für einen bestimmten Prozess schnell sehr breit und weit verzweigt werden. Selbst ein im ersten Moment simples Beispiel, kann sich schnell als komplex und vielseitig vernetzt darstellen.
So ist zum Beispiel der Vorgang “Essen bestellen” ein augenscheinlich einfacher Vorgang, jedoch ergeben sich in der Kommunikation schnell viele Schachtelungen. Soll das Essen nicht-vegetarisch, vegetarisch oder vegan sein? Wie sieht es mit Allergien oder Unverträglichkeiten aus? Wie viele Gänge soll das Essen enthalten? Wie viel darf es kosten? Soll das Steak bleu, englisch, medium rare, medium, medium well oder well done gebraten sein ….? Fragen über Fragen, also immer weitere Verästlungen.
Daher ist es sinnvoll sich erstmal auf kleine Use-cases zu konzentrieren und iterativ vorzugehen. Das bedeutet, dass mit dem Nutzer zusammen der Bot Stück für Stück erarbeitet und verbessert wird. Ziel davon ist auf der einen Seite nicht direkt zu tief einzusteigen und auf der anderen Seite trotzdem die Nutzerfreundlichkeit immer gewährleisten zu können.
Umsetzung von Bots – Challenge #2
Der KONTEXT. Wir Menschen wissen, wenn wir uns miteinander unterhalten, sehr genau innerhalb von welchem Kontext wir uns gerade bewegen und was gemeint ist.
Ein einfaches Beispiel:
- Person x: Du hast ein sehr schönes Fahrrad.
- Person y: Danke, was gefällt dir daran so gut?
- Person x: Die Farbe.
In diesem Fall wird Person y sofort wissen, dass die Farbe des Fahrrads gemeint ist. Ein Computer weiß sowas erstmal nicht. Es kann vorkommen, dass ein Kontext mit einem anderen Kontext und noch einem Kontext verschachtelt ist. Dinge, wie der Zusammenhang zwischen einer Sache und der Zeit und dem Ort können z.B. so ein mehrschichtiges Kontextmodell sein. Auch die Problematik, wenn z.B. zwei Fragen in einer Frage enthalten sind, ist nicht so einfach zu lösen.
Umsetzung von Bots – Challenge #3
Das TESTING. Eine große Herausforderung an der Stelle ist vor allem die Frage, wie man Bots automatisiert testen kann.
Doch klären wir zunächst die Frage, was genau eigentlich Testing ist. Der Tester führt eine Untersuchung für den Kunden oder PO (Product Owner) durch, um diesen Informationen zur Qualität des Produkts oder der Dienstleistung und Informationen zur vollständigen Funktionstüchtigkeit des zu entwickelnden Produktes bereitstellen zu können.
Testing-Challenge #1 – Learning Clouds
Aber was sind jetzt Unterschiede zwischen dem Testen einer Website und einem Bot? Die meisten Chatbots werden auf sogenannten Learning Cloud Services gebaut, das sind lernende Plattformen, die sich ständig weiterentwickeln und verändern. Das bedeutet der aktuelle Stand der Cloud verändert sich fortlaufend. Dazu kommt, dass sich NLU bzw. NLP (Natural language understanding / processing), wie z.B. Dialogflow oder Alexa ständig im Lern-/Trainingsmodus befinden, weil sich eben die Plattformen auch ständig verändern. Daher ist es schwierig oder eigentlich fast unmöglich etwas “festzulegen”. Es kann sein, dass eine bestimmte “Funktion” heute perfekt und morgen nach einer Veränderung der Cloud gar nicht mehr funktioniert. Für den Tester bzw. Entwickler ist daher auch meist unklar, wenn ein Fehler auftritt, ob der eigene Code defekt, also Schuld daran, ist oder ob es an der Cloud liegt.
Was das Testing nochmals erschwert ist, dass das eigene Testszenario zusätzlich auch nochmals die Cloud beeinflusst. Durch das ständige Testen wird die Logik und Denkweise des Bots verfälscht. Er lernt falsch zu denken und zu antworten. Das macht das Testen sehr schwierig, denn um diese Problematik zu vermeiden, muss der/die Tester(in) immer versuchen, ein natürliches Gespräch aufrecht zu halten.
Testing-Challenge #2 – Barrierelose Bots
Ein weiterer Aspekt ist die “Barrierelosigkeit” bei der Nutzung von Chatbots. Der User kann sagen, was er will, genau erahnen kann man das nie. Im Vergleich dazu ist eine Website wieder deutlich einfacher. Hier gibt es vielleicht fünf verschiedene Links und ein paar Buttons, was es recht einfach macht zu planen, was wo wann wie passieren soll. Allein weil der Handlungsspielraum des Users stark eingegrenzt ist. Beim Bauen eines Chatbots hingegen müssen also theoretisch alle irgendwie erdenklichen Szenarien bedacht werden.
Wie löst man diese Probleme? Hilfreich kann Open Source Software wie Botium sein, die mit verschiedenen Technologien angewendet werden kann. Angenehme Vorteile von Open Source Software sind, dass sie kostenlos sind und stetig verbessert werden.
Umsetzung von Bots – Challenge #4
Die Herausforderung, wie ich in höchster PERFORMANZ, also möglichst schnell an die gewünschte Information komme, ist zu guter Letzt nicht zu vergessen. Die Informationen liegen in einer Datenbank bereit. Aber wie komme ich, bzw. der Bot so schnell wie möglich an die Datenbank und kann genau das Stück Information extrahieren, das gebraucht wird, damit der Nutzer genau die Antwort erhält, die er sucht? In diesem Zusammenhang spielt das Anzapfen verschiedener Schnittstellen eine wichtige Rolle, außerdem ist die Art und Weise, wie die Informationen aufbereitet und zur Verfügung gestellt werden wichtig.
Jetzt kennt ihr die Herausforderungen, die wir im Zusammenhang mit der Konzeption und Umsetzung von Bots als am wichtigsten erachten. Findet ihr das Thema interessant und würdet gerne mehr darüber erfahren? Habt ihr vielleicht noch weitere Herausforderungen, die wir nicht erwähnt haben? Wir freuen uns über Eure Kommentare!