Der erste Prototyp unseres Chatbot ist fertig. Jetzt bekommt der Assistent über Botpress noch ein wenig Logik spendiert: Schleifen, Abfragen, Variablen, sowie erweiterte KI-Fähigkeiten.
Der Chatbot samt ChatGPT-Integration.
(Bild: Lang / Botpress)
Kurzes Recap: Im ersten Teil dieses Workshops wurde der Bot initiiert, per Sitemap-XML-Datei mit Wissen gefüttert und anschließend mit einem einzigen Knoten, Start- und Ende-Marker im Designer aufgebaut. Der Knoten gibt bislang einen fixen Begrüßungstext aus und kann Fragen auf Basis der Wissensbasis beantworten. Zuletzt bekam der Bot ein wenig Persönlichkeit: Ein humoriger Admin mit einem Faible für kurze Antworten und Emojis.
Der bisherige Workflow: Der Nutzer stellt eine Frage, der Bot antwortet oder gibt an, keine Antwort gefunden zu haben – in beiden Fällen endet die Konversation. Im nächsten Schritt soll der Bot nun unterschiedliche Wege gehen, je nachdem, ob eine Antwort gefunden wurde oder nicht – also eine Umsetzung einer Wenn-Dann-Abfrage. Und damit es nicht zu einfach wird, kommt auch gleich die Verwendung von Variablen mit dazu.
If-Abfrage und Variablen
Der erste Knoten für die If-Abfrage
(Bild: Lang / Botpress)
Die If-Abfrage ist in Botpress grundsätzlich simpel und intuitiv umgesetzt – allerdings mit kleinen Stolpersteinchen und bisweilen etwas unpräzise. Zu Beginn benötigen wir einen Node mit folgenden Karten: „Raw Input“ aus dem Bereich „Capture Information“ und zweimal „Expression“ aus dem Bereich „Flow Logic“.
Die Karte „Raw Input“ verhält sich fast wie die reine Text-Karte aus dem ersten Teil: Es wird ein Text präsentiert – der hier allerdings in einer Variablen gespeichert werden kann. Wir geben also den gewünschten Text ein und erstellen unter „Store result in“ eine Variable (hier im Bild „workflow.frage1“).
Nun geht es an die beiden Expression-Karten. Dabei handelt es sich Botpress-intern um sogenannte Transitions – Übergänge, die an bestimmte Bedingungen geknüpft sind. Diese sollen hier sein: „Antwort gefunden“ oder „Antwort nicht gefunden“.
KI-generierter Code für Transitions.
(Bild: Lang / Botpress)
Achtung! Standardmäßig haben diese Ausdrücke das Label „always“ und das blaue Sternchen ist aktiviert. Das bedeutet, dass Ihre Eingaben unter Label automatisch in eine für Botpress verständliche Bedingung umgemünzt werden – standardmäßig wird aus always dann true abgeleitet. Nun können Sie hier etwas wie „Answer from Knowledge.“ eingeben und Botpress macht daraus automatisch die Bedingung „event.kb.results.length > 0“ und für „Now answer …“ kommt „event.kb.results.length === 0“.
Manuell eingefügte Bedingungen.
(Bild: Lang / Botpress)
Das klingt sehr logisch – funktioniert hier aber nicht. Stattdessen musste doch etwas Recherche her und es stellte sich heraus: der Code für die beiden Bedingungen lautet korrekt „{{turn.KnowledgeAgent.responded}}“ für Ja/True und entsprechend mit vorgestelltem Ausrufezeichen „{{!turn.KnowledgeAgent.responded}}“ für Nein/False.
Wenn-Dann in Botpress-Manier.
(Bild: Lang / Botpress)
Damit sind also zwei Wenns definiert, fehlen noch die Danns: In diesem Fall und zum Testen erstellen wir schlicht zwei Knoten mit Textkarten, die Wahr oder Falsch bestätigen und flanschen diese an die beiden Wenn-Karten an. Übrigens: Natürlich sollte man alle Knoten möglichst sinnvoll benennen, ansonsten geht irgendwann die Übersicht verloren.
Schließlich muss für den ersten Knoten noch wie üblich „Enable Knowledge Answering“ aktiviert werden (zu erkennen an dem blauen Buch neben „Bot1“) und Start- und End-Marker sollten verbunden werden.
Verwendung einer Variablen.
(Bild: Lang / Botpress)
Der Bot gibt nun also eine Antwort und dann den Text „Ja, ich hatte eine Antwort.“ aus – oder den Hinweis, dass keine Antwort in der Wissensbasis gefunden wurde und dann den NoAnswer-Text. Wir erinnern uns: Die Frage selbst wurde in einer Variablen gespeichert. Im Sinne des aktiven Zuhörens könnte der Bot die Frage nun beim Antworten wiederholen, hier beispielsweise, wenn keine Antwort gefunden wurde.
Selbst in den reinen Text-Antworten lassen sich vorhandene Variablen direkt über @+Autovervollständigung oder das @-Menü ansprechen.
Loop
Wo If-Abfragen zum Einsatz kommen, sind Schleifen meist nicht weit weg. Bislang startet der Bot am Ende immer von vorn, egal, ob eine Antwort gegeben wurde oder nicht. Üblicher wäre Folgendes: Wenn die Frage beantwortet werden konnte, landen Nutzer wieder bei der Eingabe einer neuen Frage. Falls nicht, bleibt es zunächst beim expliziten Ende via End-Marker.
Ein extra Loop verbessert die User Experience.
(Bild: Lang / Botpress)
Zwei Knoten kommen jetzt neu dazu: Der „Welcome“-Knoten mit statischem Text dient lediglich der Begrüßung und soll nur beim Start angezeigt werden, nicht, wenn die neue Schleife durchlaufen wird. Der Knoten „Loop1“ hat tatsächlich gar keinen Inhalt. Wenn eine Antwort verfügbar ist, wird der Knoten „YesAnswer“ getriggert, dann immer „Loop1“ und von dort aus geht es immer zurück zu „Bot1“ und der Aufforderung, eine Frage zu stellen.
Stand: 08.12.2025
Es ist für uns eine Selbstverständlichkeit, dass wir verantwortungsvoll mit Ihren personenbezogenen Daten umgehen. Sofern wir personenbezogene Daten von Ihnen erheben, verarbeiten wir diese unter Beachtung der geltenden Datenschutzvorschriften. Detaillierte Informationen finden Sie in unserer Datenschutzerklärung.
Einwilligung in die Verwendung von Daten zu Werbezwecken
Ich bin damit einverstanden, dass die Vogel IT-Medien GmbH, Max-Josef-Metzger-Straße 21, 86157 Augsburg, einschließlich aller mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen (im weiteren: Vogel Communications Group) meine E-Mail-Adresse für die Zusendung von Newslettern und Werbung nutzt. Auflistungen der jeweils zugehörigen Unternehmen können hier abgerufen werden.
Der Newsletterinhalt erstreckt sich dabei auf Produkte und Dienstleistungen aller zuvor genannten Unternehmen, darunter beispielsweise Fachzeitschriften und Fachbücher, Veranstaltungen und Messen sowie veranstaltungsbezogene Produkte und Dienstleistungen, Print- und Digital-Mediaangebote und Services wie weitere (redaktionelle) Newsletter, Gewinnspiele, Lead-Kampagnen, Marktforschung im Online- und Offline-Bereich, fachspezifische Webportale und E-Learning-Angebote. Wenn auch meine persönliche Telefonnummer erhoben wurde, darf diese für die Unterbreitung von Angeboten der vorgenannten Produkte und Dienstleistungen der vorgenannten Unternehmen und Marktforschung genutzt werden.
Meine Einwilligung umfasst zudem die Verarbeitung meiner E-Mail-Adresse und Telefonnummer für den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern wie z.B. LinkedIN, Google und Meta. Hierfür darf die Vogel Communications Group die genannten Daten gehasht an Werbepartner übermitteln, die diese Daten dann nutzen, um feststellen zu können, ob ich ebenfalls Mitglied auf den besagten Werbepartnerportalen bin. Die Vogel Communications Group nutzt diese Funktion zu Zwecken des Retargeting (Upselling, Crossselling und Kundenbindung), der Generierung von sog. Lookalike Audiences zur Neukundengewinnung und als Ausschlussgrundlage für laufende Werbekampagnen. Weitere Informationen kann ich dem Abschnitt „Datenabgleich zu Marketingzwecken“ in der Datenschutzerklärung entnehmen.
Falls ich im Internet auf Portalen der Vogel Communications Group einschließlich deren mit ihr im Sinne der §§ 15 ff. AktG verbundenen Unternehmen geschützte Inhalte abrufe, muss ich mich mit weiteren Daten für den Zugang zu diesen Inhalten registrieren. Im Gegenzug für diesen gebührenlosen Zugang zu redaktionellen Inhalten dürfen meine Daten im Sinne dieser Einwilligung für die hier genannten Zwecke verwendet werden. Dies gilt nicht für den Datenabgleich zu Marketingzwecken.
Recht auf Widerruf
Mir ist bewusst, dass ich diese Einwilligung jederzeit für die Zukunft widerrufen kann. Durch meinen Widerruf wird die Rechtmäßigkeit der aufgrund meiner Einwilligung bis zum Widerruf erfolgten Verarbeitung nicht berührt. Um meinen Widerruf zu erklären, kann ich als eine Möglichkeit das unter https://contact.vogel.de abrufbare Kontaktformular nutzen. Sofern ich einzelne von mir abonnierte Newsletter nicht mehr erhalten möchte, kann ich darüber hinaus auch den am Ende eines Newsletters eingebundenen Abmeldelink anklicken. Weitere Informationen zu meinem Widerrufsrecht und dessen Ausübung sowie zu den Folgen meines Widerrufs finde ich in der Datenschutzerklärung.
Freilich könnte man auf den expliziten Loop-Knoten meist verzichten, Ausgänge von Knoten können sogar an den Eingang desselben Knotens gesetzt werden. Mit extra Loop-Schritt wird es aber übersichtlicher, flexibler und benutzerfreundlicher: Keine Antwort und dann einfach ein Neustart? Das lassen sich Nutzer tendenziell nicht lange gefallen.
ChatGPT als Fallback
Jetzt endlich kommt die geballte Macht von ChatGPT zum Einsatz – denn ChatGPT ist das, was in Botpress als generative KI genutzt und referenziert wird. Der Gedanke ist simpel: Wenn das eigene Wissen keine Antwort hergibt, soll bitte ChatGPT antworten.
Dazu legen wir einen zusätzlichen Knoten nach dem Knoten „NoAnswer“ an. Hier werden zwei Elemente benötigt, zunächst einmal eine Karte vom Typ „AI Task“. Unter „Task Instructions“ geben Sie in normaler Sprache ein, was denn die Aufgabe dieses Tasks-Knotens ist – zum Beispiel das Beantworten der Nutzerfrage, kurz und mit Emojis.
Nun wird abermals doch etwas Code-Wissen verlangt: Unter „AI Task Input“ muss folgen, was man bei ChatGPT eingeben würde – also nochmals die anfangs gestellte Nutzerfrage. Nur zur Erinnerung: Diese wurde in der Variablen „workflow.frage1“ gespeichert.
Die letzte Nutzereingabe findet sich allerdings immer in der Variablen „{{event.preview}}“. Das ist etwas generischer und funktioniert auch in komplexeren Workflows mit vielen Nutzereingaben. Die Antwort der generativen KI muss nun ebenfalls noch in einer Variablen gespeichert werden, hier etwa der neu angelegten „workflow.AIAnswer“.
ChatGPT-Fallback als KI-Aufgabe.
(Bild: Lang / Botpress)
Botpress weiß nun also, dass eine Frage beantwortet werden soll (AI Task), um welche Frage es sich handelt (AI Task Input) und wo das Ergebnis der Aufgabe gespeichert werden soll (workflow.AIAnswer). Damit die Nutzer diese Antwort auch zu Gesicht bekommen, fehlt noch eine simple Text-Karte in diesem Knoten, der lediglich die Variable mit der Antwort in der Form „@workflow.AIAnswer“ übergeben wird.
Ganz ohne Code geht es nicht – aber Botpress hilft.
(Bild: Lang / Botpress)
Natürlich lässt der Botpress-Editor einen nicht ganz allein, wenn der Workflow mal von No-Code zu Low-Code wechselt. Als Beispiel: Die wohl einfachste Art, eine Antwort der allgemeinen generativen KI zu bekommen, ist die Karte „AI Generate Text“. Dieser könnten schlicht fixe Texte übergeben werden oder abermals die letzte Nutzereingabe.
Das Bild zeigt die Autovervollständigung für gültige Ausdrücke samt Erklärung – und vor allem samt einer Vorschau. Hier ist etwa „Wo ist Köln?“ die letzte Nutzereingabe gewesen. So wird schnell klar, was genau hinter Ausdrücken und Variablen steckt.
Der Chatbot samt ChatGPT-Integration.
(Bild: Lang / Botpress)
Damit ist auch der zweite Prototyp soweit fertig. Der Bot begrüßt Nutzer und fordert sie so lange zu Fragen auf, bis die eigene Wissensbasis keine Antwort liefern kann. In dem Fall wird eine ChatGPT-Antwort geliefert und die Session explizit beendet. Im vorangestellten Bild noch einmal der Überblick.
Natürlich ist das soweit nur ein grober Rahmen, aber wir haben Wissensbasen, Schleifen, Variablen, Code-Referenzen, Bedingungen und vor allem die Integration generativer KI kennengelernt – sei es als Antwortgeber oder Interpreter für interne, menschlich formulierten Befehl (was wie erwähnt bisweilen nur mittelprächtig funktioniert).
Weitere Aufgaben wie Multiple-Choice-Fragen, das Triggern von Hooks oder selbst komplexe Fragebögen lassen sich mit diesen Grundkenntnissen recht fix umsetzen. Im kommenden letzten Teil geht es noch ans Feintuning, vor allem aber wird aus dem schematischen Abriss endlich eine App, (mit CSS) hübsch angepasst an und eingebettet in die Checkmk-Oberfläche.