Teil 1: Chatbots und aktuelle Herausforderungen

Hi! Schön, dass du dabei bist! Dies ist der Beginn einer Artikelserie, welche die Entwicklung eines Open Source Conversation-Builders von Anfang an begleiten soll. Es soll hier nicht darum gehen, wie bestehende Botbuilder und Frameworks genutzt werden können um einen Bot zu basteln. Es geht viel mehr darum einen eigenen Open Source Botbuilder inklusive visuellem Dialog-Flow-Editor und Webchat-Frontend zu bauen.

Diese Serie wird von theoretischen Vorüberlegungen, aktuellen Problematiken, Konversationstheorie, der Entwicklung von Datenmodellen bis hin zum Hosting alles abdecken was für das Thema wichtig ist. Du wirst lernen, was ein Gespräch ist und was es ausmacht, wie man es am besten in einer Datenbank speichert und was ein Graph ist. Außerdem werde ich dir zeigen, was ich unter dem Begriff "logisches Graph Traversal" verstehe und wie das deinem Chatbot ermöglicht immer ganz einfach den Kontext zu bewahren. Auch die Anbindung weiterer Services wie NLP oder Recast.ai möchte ich später thematisieren.

Was du mitbringen solltest

Du musst keine fundierten technischen Kenntnisse haben um meinen Artikeln zu folgen. In der Serie geht es nämlich nicht nur allein um Technikthemen. Es geht auch um die Frage wie Prozesse nutzerfreundlich gestaltet werden können und welchen aktuellen Herausforderungen sich Bots stellen müssen. Deshalb würde ich mich freuen, wenn du deine bisherigen Erfahrungen einbringen kannst auch wenn du eventuell nur wenig Verständnis für Nerd-Themen hast.

Wenn du jedoch generell an dem Technologie-Stack interessiert bist und der Entwicklung folgen möchtest, solltest du mit den Grundlagen der Webentwicklung vertraut sein. Du solltest vor allem die Fähigkeit mitbringen dich in neue Themen einzuarbeiten. Ich werde nicht in allen Bereichen auf die Details eingehen, weil ich mich auf das Projekt als Ganzes konzentrieren will. Einiges werde ich eventuell nur am Rande ansprechen. Daher musst du in der Lage sein bestimmte Gebiete selbst zu erforschen.

Generell möchte ich auf modernen Technologien wie, NUXT.js bzw. Vue.js, ArangoDB, Foxx Microservices, Cytoscape.js, JSON Web Tokens, Git und Docker aufbauen. Wenn dir diese Begriffe bereits vertraut sind ist das umso besser.

Worum es nicht geht

Es geht in dieser Serie erstmal nicht darum Machine Learning oder Deep Learning selbst zu implementieren. Das hebe ich mir für spätere Posts auf. Es geht auch nicht darum ein eigenes NLP zu bauen. Es geht hauptsächlich darum wie in einer geführten Konversation eine Frage zur nächsten führt und warum dieses Thema alles andere als trivial ist.

Ich möchte dir in späteren Posts jedoch zeigen wie du bereits bestehende NLP-Systeme oder Chat-Kanäle ankoppeln kannst und welche Möglichkeiten es für dein System gibt selbstständig zu lernen.

Warum mache ich das?

Vielleicht irre ich mich grundlegend. Aber ich glaube, dass sich die Chatbot-Thematik in einigen Bereichen in eine ungünstige Richtung entwickelt. Viele Botbuilder sind meiner Meinung nach zu komplex und zu umständlich zu pflegen. Aus Erfahrung weiß ich, dass reale Probleme manchmal nur schwer in die digitale Welt übertragbar sind. Das erfordert oft ein Umdenken und das Verwerfen alter Strukturen. Häufig führen Unterschiede zwischen einer digitalen Repräsentation und einem realen Problem zu umständlichen Frontends und komplizierten Prozessen.

1. Umständliche Eigenprogrammierungen

So muss man sich beim Bau geführter Konversationen derzeit häufig mit Eigenprogrammierungen, Kontextvariablen und Bedingungen herumschlagen, um dem Bot auch komplexere oder kontextbezogene Verhaltensweisen beizubringen. Das Erstellen von Gesprächsverläufen gleicht häufig mehr komplexer Entwicklung als einfachem Design. Ich möchte in dieser Serie zeigen, dass man darauf durchaus verzichten kann.

2. Es ist oft nicht leicht den Überblick über geführte Konversationen zu behalten

Die genannte Komplexität führt häufig dazu, dass es oft nur schwer ist, den Überblick über die geplante Konversation zu behalten. Es ist nicht immer leicht ersichtlich welche Ereignisse zu welchen Reaktionen des Chatbots führen, wenn die Konversationsverläufe wachsen. Auch in diversen Tests für Botplatformen wird auf diese Problematik hingewiesen. Ich möchte versuchen das zu ändern.

3. Viele Botbuilder sind Blackboxes

Du weißt oft weder wie bestehende Services eigentlich genau funktionieren noch welchen Technologie-Stack sie verwenden. Du weißt auch nicht, was mit den gesammelten Daten passiert und wo sie gespeichert werden. Du hast auch oft keine Ahnung, wie viele Menschen eine Plattform tatsächlich nutzen, ob es sich um einen kurzen Hype oder einen Geheimtipp handelt oder ob der Service morgen überhaupt noch existiert. Du bist oft von undurchsichtigen und unkomfortablen Pricingmodellen abhängig, die deine Messages limitieren oder dir ein Branding aufzwingen. Das alles sind verschiedene Facetten einer Blackbox auf die du nur schwer Einfluss nehmen kannst.

4. Fehlende Transparenz und Privatsphäre

Die meisten Chatbots sind zentralisierte Systeme. Ihre KI läuft auf einem abgeschotteten Server. Dieser nimmt Eingaben entgegen und sendet Nachrichten zurück. Völlig intransparent für den User ist jedoch, wie diese Nachrichten zustande kommen und aufgrund welcher Informationen diese geschlussfolgert werden. Dabei wäre es mit heutigen Technologien möglich, Systeme zu entwickeln, welche komplett oder zum größten Teil client-side laufen.

5. Zunehmende Verkapselung von Wissen

Viele Chatbots verfügen über ein massives Expertenwissen. Sie führen Beratungen durch oder begleiten durch komplexe Prozesse. Dieses Expertenwissen wird oft in Botbuilding-Platformen, Programmcodes und APIs verpackt und kodiert, sodass es nur noch schwer von dort extrahiert oder für andere Prozesse zugänglich gemacht werden kann. Wissen, das auf diese Art und Weise vergraben wird, steht nicht mehr allen Menschen unabhängig zur Verfügung.

Ich möchte ein Experiment wagen und versuchen das zu verändern. Ziel ist ein System, in dem sehr komplexe Gesprächsverläufe sehr einfach gebaut, sehr einfach gespeichert und auch sehr einfach in einem Chat abgerufen werden können. Dieser Einfachheit ist diese Serie gewidmet.

Mehr Artikel zum Thema findest du hier