Viele Webseiten bieten inzwischen eine Chat-Funktion an. Oft antwortet dabei statt eines Menschen ein Chatbot. Mit Rasa Open Source setzen Sie selbst einen solchen Bot auf.
Chatbot bedeutet übersetzt Plauderroboter. Dahinter steckt also eine Software, die Gespräche führen kann. Dazu analysiert sie Sprache in Textform, um adäquat zu antworten. Der Fachbegriff für diesen Vorgang lautet Natural Language Processing (NLP). In der Vergangenheit arbeiteten NLP-Systeme vollkommen regelbasiert. Genauer gesagt nutzte man Zustandsautomaten, um die Gespräche zu führen.
Das setzte der Verwendung von Chatbots allerdings enge Grenzen: Sie taugten lediglich zum Bearbeiten einfacher Standardaufgaben. Ein Chatbot konnte beispielsweise Auskunft zu einem bestimmten Artikel in einem Online-Shop oder den Öffnungszeiten eines Museums geben. Moderne KI-basierte Varianten schaffen es mittlerweile, komplexe Unterhaltungen zu führen.
Grundprinzip
Im ersten Schritt analysiert der Chatbot die Anfrage und versucht zu verstehen, was sie bedeutet. Dieser Schritt heißt in der Fachsprache Natural Language Understanding (NLU). Als Ergebnis kommen dabei maschinenverständliche Informationen heraus, wie Schlagwörter oder konkrete E-Mail-Adressen.
Der Bot arbeitet dazu mit festen Regeln, beispielsweise Mustererkennung mit regulären Ausdrücken oder mit neuronalen Verfahren aus der KI-Welt. Zwar reagieren Letztere üblicherweise besser auf eine vorher nicht bekannte Anfrage, aber es verursacht einen hohen Aufwand, eine KI zu trainieren und zu testen. Generell lässt sich sagen, dass Sie für das KI-Training eine möglichst hohe Anzahl von Beispielen bereitstellen sollten.
Auf die Analyse folgt die Entscheidung, was zu tun ist. Erneut übernimmt das ein regelbasierter Automat oder eine KI. Bei komplexeren Bots ufert die Pflege eines Automaten (Entscheidungsbaum) jedoch allzu leicht aus, und auch hier müssen Sie die KI trainieren und testen. Obendrein gibt es Anwendungsfälle, für die man gar keine KI einsetzen möchte.
Rasa
Mit der KI-Plattform Rasa [1] lassen sich Chatbots und digitale Assistenten erstellen. Beim Test lag der Fokus darauf, den Aufwand für das Einrichten eines Bots, der fließende, komplexe und vor allem aufgabenorientierte Dialoge führen kann, möglichst gering zu halten. Um das zu erreichen, verwendet Rasa sowohl feste Regeln als auch KI.
Neben der Open-Source-Variante der Plattform gibt es eine kommerzielle Version des Frameworks, mit der Unternehmen Chatbots für spezielle Anwendungsfälle erstellen können. Sie umfasst zwei Komponenten: Rasa Pro stellt als Infrastruktur des Systems die Dienste bereit, mit dem Frontend Rasa Studio lassen sich Bots erstellen und testen. Die Plattform lässt sich sowohl selbst hosten als auch als Managed-Service einkaufen. Um die kommerzielle Variante von Rasa zu verwenden, benötigen Sie eine kostenpflichtige Lizenz.
Eine umfassende Dokumentation [2] zu Rasa Open Source findet sich auf der Homepage des Projekts. Daneben können Sie sich im Youtube-Kanal [3] von Rasa auch einige Videos zum Einsatz der Plattform ansehen.
Bei Rasa handelt es sich um eine in Python geschriebene Anwendung. Um eine Trennung von den systemeigenen Python-Bibliotheken zu gewährleisten, haben wir Rasa in einer eigenen virtuellen Python-Umgebung installiert. Die dazu nötigen Kommandos zeigt Listing 1. Die eigentliche Installation (vorletzte Zeile) benötigt etwas Zeit. Mit dem Befehl aus der letzten Zeile des Listings aktualisieren Sie die Installation, falls nötig.
Listing 1
Rasa installieren
$ sudo apt update $ sudo apt upgrade $ sudo apt install python3-venv python3-dev python3-pip $ python3 -m venv rasa $ source rasa/bin/activate $ cd rasa $ pip install --upgrade pip $ pip install rasa $ pip3 install --upgrade rasa
Projekt erstellen
Wenn Sie sich in der virtuellen Python-Umgebung befinden, genügt das Kommando rasa init, um ein neues Projekt einzurichten. Dazu müssen Sie einige Fragen zum Projekt beantworten (Abbildung 1). Wählen Sie zunächst ein Verzeichnis für das Projekt. Falls Sie sich noch im Ordner rasa/ befinden, kann auch er dafür herhalten. In der Abbildung sehen Sie eine Warnung bezüglich veralteter API-Features, die Sie jedoch für erste Versuche getrost ignorieren dürfen. Generell wirkt Rasa sehr gesprächig, was dabei hilft, eventuelle Fehler schnell einzugrenzen.

Abbildung 1: Anhand Ihrer Antworten auf einige Fragen führt Rasa Sie durch das Aufsetzen eines neuen Chatbots.
Die Nachfrage, ob Sie ein initiales Modell trainieren wollen, bestätigen Sie. Das Modell enthält einen einfachen Chatbot, anhand dessen sich später die Funktionsweise von Rasa erklären lässt. Nachdem das Modell trainiert ist, starten Sie es direkt, um einen ersten Test vorzunehmen. Bei der Konversation aus Abbildung 2 führte der von Rasa angebotene Link jedoch ins Leere. Bevor wir uns ansehen, wie Sie das reparieren können, wenden wir uns den zum Steuern des Chatbots nötigen Daten zu. Die Dateien verwenden alle das Format YAML (Endung .yml). Es eignet sich hervorragend für das Speichern strukturierter Daten wie beispielsweise Konfigurationsdateien.

Abbildung 2: Ein erster, trivialer Dialog mit dem Rasa-Bot funktioniert zwar, aber der vorgeschlagene Link funktioniert nicht.
Die Dateien zum Steuern des Chatbots liegen im Verzeichnis des Projekts. In domain.yml sind alle Teile von bekannten Dialogen definiert, also sämtliche Fragen, die ein Nutzer stellen kann (Intents) und alle Antworten (Responses), die das System gibt. Darüber hinaus finden sich dort einige Konfigurationsparameter. Hier werden die Intents allerdings nur allgemein definiert. Eine genauere Definition der Intents erfolgt mit unterschiedlichen Beispielen in der Datei data/nlu.yml. Dort deklarieren Sie beispielsweise “Hallo”, “Hi”, “Moin Moin” und “Gude” als Begrüßungen.
Die Datei config.yml beherbergt die Konfiguration zur NLU-Verarbeitung. In der Datei data/stories.yml beschreiben sogenannte Storys, wie die Dialoge ablaufen sollen, indem sie die Intents mit den Responses (die hier interessanterweise Actions heißen) verbinden. In data/rules.yml legen Sie Regeln fest, die immer zutreffen und nicht unbedingt Teile einer Story sein müssen. Gute Beispiele für Rules sind Begrüßungen oder Verabschiedungen.
Projekt anpassen
Wie erwähnt gibt der Chatbot im ersten Beispielprojekt einen veralteten Link aus. Dabei handelt es sich um eine Response aus der Datei domain.yml. Um den Fehler zu beheben, editieren Sie die Datei und tauschen den fehlerhaften Link gegen eine passende aktuelle URL aus. Als Bildchen zur Aufheiterung des Chat-Partners diente im Test ein Foto eines jungen Tigers, das sich auf der englischsprachigen Wikipedia findet.
Starten Sie danach den Chatbot mit dem Kommando rasa shell neu, hat sich der Dialog nicht verändert; der Chatbot liefert immer noch den falschen Link. Die Ursache dafür: Zwar haben Sie die Konfigurationsdatei angepasst, aber das Modell nicht neu trainiert. Das holen Sie jetzt mithilfe des Befehls rasa train nach und rufen dann erneut rasa shell auf. Wie Abbildung 3 veranschaulicht, liefert der Bot jetzt die gewünschte Ausgabe. Nach demselben Schema passen Sie nun das Beispielprojekt Ihren eigenen Vorstellungen an.

Abbildung 3: Nachdem Sie die Konfigurationsdatei angepasst und das Modell neu trainiert haben, findet sich ein funktionierender Link im Dialog.
Bevorzugen Sie statt der Kommandozeile eine etwas ansprechendere Oberfläche, greifen Sie auf die von Rasa bereitgestellte HTTP-API zurück, an die Sie nahezu alle anderen Chat-Tools anbinden können. In der Rasa-Dokumentation finden sich viele Beispiele dazu, darunter eine Verbindung zu Telegram [4].
Fazit
Wie Sie gesehen haben, fällt der Einstieg in die Programmierung von Chatbots mit Open Source Rasa ausgesprochen leicht. Das Framework ist dabei so flexibel, dass Sie es sowohl in einem kleinen Hobbyprojekt als auch in einer komplexen Unternehmensumgebung einsetzen können. Die vielen Video-Tutorials auf der Webseite des Projekts beschreiben Schritt für Schritt, was es erfordert, ein bestimmtes Ziel zu erreichen. Wenn Sie sich für das Thema Chatbots interessieren, lohnt es sich, einen Nachmittag in Rasa zu investieren. (csi)
Der Autor
Martin Mohr hat die komplette Entwicklung der modernen Computertechnik live miterlebt. Nach dem Studium schrieb er überwiegend Java-Applikationen. Mit dem Raspberry Pi erwachte seine alte Liebe zur Elektronik wieder.
Infos
-
Rasa: https://rasa.com
-
Rasa Open Source: https://rasa.com/docs/rasa/
-
Rasa-Youtube-Kanal: https://www.youtube.com/@RasaHQ
-
Rasa mit Telegram verbinden: https://rasa.com/docs/rasa/connectors/telegram/





