/ Ein Open Source Chatbot-Builder im Eigenbau

Ein Open Source Chatbot-Builder im Eigenbau Teil 1: 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.

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.

Bisherige und geplante Themen der Serie

  • Ein Open Source Chatbot Builder im Eigenbau Teil 1: Aktuelle Herausforderungen
  • Ein Open Source Chatbot-Builder im Eigenbau Teil 2: Warum eine Konversation nicht in einen Baum passt
  • Ein Open Source Chatbot-Builder im Eigenbau Teil 3: Konversationen in relationalen Datenbanken
  • Ein Open Source Chatbot-Builder im Eigenbau Teil 4: Konversationen und Kontext in Graphdatenbanken
  • Ein Open Source Chatbot-Builder im Eigenbau Teil 5: Von Chatbots und Wanderern - Was ist Graph Traversal?
  • Ein Open Source Chatbot-Builder im Eigenbau Teil 6: Intelligenter Kontext durch logisches Graph Traversal
  • Ein Open Source Chatbot-Builder im Eigenbau Teil 7: Verbesserter Überblick durch isolierte Bedingungen
  • Ein Open Source Chatbot-Builder im Eigenbau Teil 8: Warum unser Chatbot auf ArangoDB setzt
  • Ein Open Source Chatbot-Builder im Eigenbau Teil 9: Ein Conversation-Builder mit Foxx, Nuxt.js und Cytoscape.js
  • Ein Open Source Chatbot-Builder im Eigenbau Teil 10: Ein basic Chatbot Web-Frontend mit Nuxt.js
  • Ein Open Source Chatbot-Builder im Eigenbau Teil 11: Warum Antwortvorschläge unabhängig von Fragen sein sollten
  • Ein Open Source Chatbot-Builder im Eigenbau Teil 12: Schlussfolgerungen und Antworten im flexiblen Kontext widerrufen
  • Ein Open Source Chatbot-Builder im Eigenbau Teil 13: Unser Chatbot geht anheuern - Hosting mit Docker
  • Ein Open Source Chatbot-Builder im Eigenbau Teil 14: Fehlende Antwortmöglichkeiten automatisch lernen

This article is also available in english.