Zum Hauptinhalt springen

Erste Schritte

Folgen Sie diesen Schritten, um Ihren ersten Bot auf der BITMARCK Chat und Voiceplattform - BCVP - anzulegen. Gestalten Sie Konversationen, fügen Sie eine Wissensquelle hinzu und testen Sie die ersten Interaktionen. So lernen Sie die wichtigsten Funktionen der BCVP sowie die BCVP-Dokumentation kennen.

Schritt 1: Erstellen Sie einen neuen Bot

In diesem Guide erstellen wir einen Bot von Grund auf, um Schritt für Schritt zu lernen, wie man Flows, Knoten und Wissensquellen konfiguriert.

  • Navigieren Sie zur Übersicht Seite.
  • Erstellen Sie einen neuen Bot.
  • Vergeben Sie einen Namen für Ihren neuen Bot.

new bot

Schritt 2: Erstellen Sie Ihren ersten Flow

Das Verhalten von Bots ist in Flows aufgeteilt. Da Sie mit einem neuen Bot starten, müssen Sie zuerst einen Flow anlegen.

  • Navigieren Sie zum Bereich "Flows".
  • Erstellen Sie einen neuen Flow (z. B. mit dem Namen "Smalltalk").
  • Geben Sie deFügen Sie einen Antwort-Knoten hinzu

Flows werden aus Knoten zusammengesetzt. Um Ihrem Flow eine Funktion zu geben, fügen Sie einen Knoten hinzu.

  • Klicken Sie in Ihrem Flow auf "Knoten hinzufügen" und wählen Sie den Antwort-Knoten.

Schritt 3: Öffnen Sie den Antwort-Knoten

Flows werden aus Knoten zusammengesetzt. Der wichtigste Knoten ist der Antwort-Knoten. Hier kann ein Large Language Model (LLM) verwendet werden, um die Antwort zu erzeugen. Das Antwortverhalten Ihres Bots wird direkt über Prompts in der Oberfläche gesteuert. So nutzen Sie die Power moderner KI (LLMs) - ohne komplizierte Setups.

output node

Knoten verbinden

Zwei Knoten verbinden Sie einfach, indem Sie mit der Maus auf den Knopf drücken. Mit einem Doppelklick auf eine Verbindung entfernen Sie diese wieder.

💡 Experten-Tipp: Sampling Parameter

Wenn Sie tiefer einsteigen wollen: Sie können LLM-Parameter wie z. B. Temperatur selbst setzen und die Generierung feinjustieren.

simple response

👉 Öffnen Sie die LLM-Settings und probieren Sie eine kleine Anpassung aus. In der Dokumentation finden Sie weitere Informationen, was welcher Parameter tut.

Hintergrundwissen – Künstliche Intelligenz und Large Language Models:

  • LLMs (Large Language Models) sind fortschrittliche KI-Systeme, die natürliche Sprache verarbeiten und generieren können. Die Basis ist das Trainieren von künstlichen neuronalen Netzen auf riesigen Textmengen aus dem Internet, Büchern und anderen Textkorpora, um Muster, Zusammenhänge und die Struktur von Sprache zu lernen. Das Modell lernt während des Trainings, die Wahrscheinlichkeit zu berechnen, welches Wort als nächstes in einem Text folgen sollte, basierend auf dem bisherigen Kontext.
  • Die Eingabe, die ein Benutzer in ein Sprachmodell eingibt, bezeichnet man als Prompt. Der Prompt ist die Frage oder der Text, der dem Modell als Ausgangspunkt dient, um daraufhin eine Antwort zu generieren. Ein gut formulierter Prompt ist entscheidend, da die Qualität und Genauigkeit der Antwort stark von der Präzision und Klarheit des Prompts abhängt.

Schritt 4: Öffne den Entwickler-Chat

Im Entwicklungs-Chat oben rechts können Sie Ihren Bot direkt ausprobieren. Zusätzlich sehen Sie, wie die Anfrage intern verarbeitet wird — perfekt zum Verstehen & Debuggen.

![debug chat](/img/screenshots/debug chat.png)

👉 Starten Sie eine Unterhaltung mit Ihrem Bot und beobachten Sie die Verarbeitung. Finden Sie in den Events heraus, welcher Flow verwendet wurde?

Schritt 5: Wissensbasis

Sie können Ihrem Bot eigenes Wissen hinzufügen, indem Sie Dokumente hochladen. Diese werden automatisch verarbeitet und in kleine Chunks zerlegt. Auf dieser Basis kann Ihr Bot gezielt Informationen abrufen und präzise Antworten geben. Außerdem können automatisch und in regelmäßigen Abständen Websites gecrawlt werden, um stets aktuelle Informationen von den konfigurierten Websites zur Verfügung zu stellen.

knowledge crawler

👉 Laden Sie ein erstes Dokument hoch und prüfen Sie, wie es verarbeitet wird.

Über spezielle Wissen-Knoten greift Ihr Bot auf Ihre Wissensbasis zu. So Erstellen Sie einen neuen Flow (z. B. "Wissensfragen") und fügen Sie einen Wissensknoten hinzu. Sie können nun den Prompt anpassen oder die Einstellungen des Retrieval-Schritts bearbeiten Im Vector-Search-Menü können sie ausprobieren, wie die Suche funktioniert und welchen Einfluss die Parameter haben.

👉 Öffnen Sie den "Wissensfrage"-Flow und bearbeiten Sie den Wissensknoten. Sie können den Prompt anpassen oder die Einstellungen des Retrieval-Schritts.

rag node

💡 Experten-Tipp: Tags für gezielte Suche

Strukturieren Sie Ihre Wissensdatenbank mit Tags. So können Sie situationsabhängig nur relevante Inhalte durchsuchen — schneller und präziser. Im Wissens-Knoten können Sie konfigurieren, welche Tags berücksichtigt werden sollen.

👉 Vergeben Sie Tags für ein Dokument und testen Sie den Unterschied im Entwicklungs-Chat.

knowledge tags

💡 Experten-Tipp: Datenqualität maximieren

Für die besten Ergebnisse:

  • Inhalte vorab strukturieren über Tags, gezielt Dokumente auswählen
  • Plaintext-Formate wie Markdown verwenden
  • Automatisches Chunking überprüfen und gegenebenfalls manuell Chunks definieren

👉 Laden Sie ein kurzes Markdown-Dokument hoch und vergleichen Sie die Antworten.

knowledge menu

Hintergrundwissen – Retrieval Augmented Generation:

  • Retrieval Augmented Generation (RAG) ist eine hybride KI-Technik, die Retrieval-Systeme mit generativen Sprachmodellen kombiniert. Sie wurde entwickelt, um die Leistung und Genauigkeit von LLMs durch den Zugriff auf spezifisches, aktuelles oder fachspezifisches Wissen zu verbessern.
  • Wie RAG funktioniert:
    • Retrieval-Phase: Wenn eine Benutzeranfrage eingeht, durchsucht das System die Wissensdatenbank nach Chunks mit relevanten Informationen.
    • Augmentation-Phase: Die gefundenen relevanten Informationen werden als zusätzlicher Kontext zum ursprünglichen Prompt hinzugefügt.
    • Generation-Phase: Das LLM generiert eine Antwort basierend auf dem erweiterten Prompt
  • RAG verwendet Vector-Search: Klassische Suchalgorithmen suchen in Texten, indem übereinstimmende Zeichenfolgen gesucht werden. Bei RAG verwenden wir stattdessen eine semantische Suche basierend auf KI-Modellen, sogenannten Embeddern. Dies erlaubt es uns, semantisch ähnliche Texte zu finden, auch wenn Synonyme, Rechtschreibfehler oder andere Sprachen verwendet werden. Sie können die Vektorsuche im Reiter Vektorsuche ausprobieren.
  • Wenn die Wissensmenge sehr klein ist, können Sie die Daten auch einfach direkt in den Prompt eines Ausgabe-Knotens kopieren. So eliminieren Sie eine mögliche Fehlerquelle - die Suche. Probieren Sie aus, wie die Varianten mit und ohne Suche sich unterscheiden.

Hintergrundwissen – ETL-Pipeline:

  • Wie stellen wir sicher, dass ein Bot im laufenden Betrieb stets mit den aktuellsten Informationen versorgt bleibt? Die Antwort könnte eine ETL-Pipeline sein.
  • ETL (Extract, Transform, Load) Pipelines sind entscheidend für die automatisierte Verwaltung von Wissensbasen. Sie bestehen aus drei Hauptphasen:
    • Extract: Daten aus verschiedenen Quellen (Dokumente, Datenbanken, APIs, PDFs, etc.) werden gesammelt
    • Transform: Hochqualitative Texte werden extrahiert, bspw. PDF-Parsing, OCR, etc. Längere Texte werden in kleine Chunks zerlegt (Chunking)
    • Load: Upload der Daten in die Wissensdatenbank über die API-Schnittstelle, außerdem Abgleich der Ausgangsdatenmengen, obsolete Daten aus der Wissensdatenbank entfernen
  • Beispiele für ETL-Pipelines: Upload von Inhalten von Confluence-Seiten oder von Dokumenten in Sharepoint-Ordnern.

Schritt 6: Informations-Extraktion

Wir können LLMs auch nutzen, um Informationen aus dem Gesprächsverlauf in strukturierte Daten zu überführen.

Formular-Knoten helfen Ihrem Bot, gezielt Informationen aus einem Gespräch zu erfassen. Das können z. B. Name, E-Mail oder andere Daten sein.

👉 Legen Sie jetzt ein erstes Formularfeld an und testen Sie, wie der Bot die Daten erkennt.

form node

💡 Experten-Tipp: Branch-Knoten für den Gesprächsverlauf

Sie können auf Basis der Formularfelder den Flow steuern. Beispiel: Wenn ein Nutzer angibt, minderjährig zu sein, wird in anderen Informationsquellen gesucht.

branch node

💡 Experten-Tipp: Kreative Nutzung von Formularfeldern

Formularfelder lassen sich auch "zweckentfremden", z. B. um zu prüfen:

  • Wurde eine Antwort in einem RAG-Knoten gefunden?
  • Musste der Bot "Ich weiß es nicht" antworten?

So können Sie Flows noch feiner steuern und smartere Bots bauen.

Step 7: Kanäle

Unter den Menüpunkten im Bereich Kanäle können Sie einstellen, wie mit Ihrem Bot interagiert werden kann:

  • Website: Im Bereich Website können Sie ein Widget aktivieren und konfigurieren, dass auf Websites eingebunden werden kann. Sie können das Widget stylen und an Ihre Website anpassen.
  • Phone: Sie können den Phone Channel nutzen, damit Ihr Bot per Telefon mit Nutzern reden kann. Der Kanal macht aus gesprochener Sprache Text und aus Bot-Antworten wieder gesprochene Sprache. Sie können Anrufe steuern (auflegen, weiterleiten, aufzeichnen), Menüs per Tastenruf bedienen, ausgehende Anrufe starten und bestimmte Anrufer blockieren. So entsteht eine natürliche Sprachkommunikation zwischen Bot und Anrufern.
  • IMAP Mail: Kommunizieren Sie via Emailpostfach mit Ihrem Bot.
  • Knowledge Manager: Der Knowledge Manager-Kanal bietet eine spezialisierte Frontend-Anwendung, die für interne Wissensarbeiter, Support-Teams und spezialisierte Benutzer entwickelt wurde. Die Oberfläche erlaubt es, in einer vertrauten Chat-Oberfläche mit Ihrem Bot zu chatten. Unter https://knowledge.{{ baseUrl }} erreichen Sie den Knowledge Manager.

Step 8: Aktions-Knoten

Der Aktions-Knoten erlaubt es, innerhalb von Flows Python-Code auszuführen. Dabei wird automatisch eine leere Funktion angelegt, die ein Objekt übergeben bekommt, dass es uns erlaubt über seine Methoden:

  • Ausgaben zu erzeugen,
  • Slot-Variablen (siehe Formularextraktion) zu füllen,
  • Auf die Chat-Historie zuzugreifen, oder
  • LLMs aufzurufen.

So können vielfältige Usecases umgesetzt werden, beispielsweise können Sie externe APIs aufrufen mit Daten, die aus den Chatverläufen mit Formularknotene extrahiert wurden. Oder Sie extrahieren Informationen über den Zustand eines Chats, um die Flows zielgerichteter mit den Verzweigungsknoten zu steuern.

Ausgabe erzeugen

Wir können die fixed_utter() Methode nutzen, um den Bot einen String ausgeben zu lassen.

Beispiel:

# Using RemoteLLMTrackerApi to utter a fixed string
tracker_api.fixed_utter("Hello! How can I help you today?")

Logging

Um im Debug-Chat Log-Nachrichten anzuzeigen, können die Methoden debug(), info(), warning(), error() verwendet werden:

Beispiel:

# Logging
tracker_api.info("Wir sind im Flow 'Smalltalk' gelandet.")

Slots manipulieren

Wir können strukturierte Informationen innerhalb von Chats in Slots speichern und die Einträge lesen und schreiben.

Beispiel:

# Einen einzelnen Slot lesen
name = await tracker_api.a_get_slot_value("user_name", "Unbekannt")
# Wir loggen den Wert zum Debugging.
tracker_api.info(name)

# Einzelnen Slot setzen
tracker_api.set_slot("user_intent", "booking")
tracker_api.set_slot("extracted_name", "Max Mustermann")

Chat-Historie auslesen

Beispiel:

# Gesamte Chat-Historie
conversation_history = await tracker_api.a_get_history()

for turn in conversation_history:
tracker_api.info(f"{turn.role}: {turn.content}")

# Letzte 5 Gesprächsverläufe
recent_history = tracker_api.get_history(n_turns=5)

LLM aufrufen

Wir können eigene Prompts an das LLM schicken und die Antwort verarbeiten.

Beispiel:

# Einfacher LLM-Aufruf
llm_response = await tracker_api.a_call_llm([
{"role": "system", "content": "Du bist ein Datenextraktions-Assistent. Extrahiere nur relevante Informationen."},
{"role": "user", "content": tracker_api.get_latest_user_message().content}
])

LLM Antworten streamen

LLMs erzeugen Antworten tokenweise. Wir können die Antwort entsprechend an den Nutzer streamen, sodass nicht auf die vollständige Antwort gewartet werden muss.

Beispiel:

# Streaming
stream = await tracker_api.stream_call_llm(
messages=[
{"role": "system", "content": "You are a funny bard in a medieval court"},
{"role": "user", "content": "Wackelpudding?"}
]
)

await tracker_api.stream_utter(stream)

Es gibt auch Funktionen für LLMs, die auch auf Tools Zugriff haben und Tool-Calls erzeugen können oder für LLMs, die strukturierte Daten erzeugen.

💡 Experten-Tipp: Python überall

Neben den Aktionsknoten kann Python an vielen weiteren Stellen verwendet werden, um das Verhalten der Bots zu modifizieren. Beispielsweise beim Orchestrator, RAG-Agenten, den normalen Ausgabe-Knoten oder Pre- oder Postprocessing-Agenten. Im Skript-Bereich finden Sie alle Skripts, die in Ihrem Bot angelegt wurden.