So haben wir unseren Kassenzone ChatGPT-Bot erstellt

Seit Mai haben wir einen eigenen ChatBot basierend auf ChatGPT, der euch ermöglicht, Infos aus über 500 Podcast-Episoden der letzten 10 Jahre zu durchsuchen. In diesem Beitrag erfahrt ihr, wie wir diesen ChatBot erstellt haben, welche Tools wir verwendet haben und welche Herausforderungen es dabei gab.

Wie viele Kassenzone-Leser/innen und Hörer/innen bereits mitbekommen haben, haben wir seit Mai unseren eigenen ChatBot auf Basis ChatGPT live. Diesen könnt ihr nutzen, um alle Infos, Fakten und Anekdoten aus über 500 Podacast Episoden aus den letzten 10 Jahren zu durchsuchen.

Wenn ihr z.B. erfahren wollt welche Meinung Alex zu Temu hat, ob die aktuellen Innenstadt-Konzepte überleben werden oder ihr generelle Fragen zu digitalen Geschäftsmodellen habt, dann schaut hier vorbei:

https://chatbot.kassenzone.de

Im Nachgang zur Veröffentlichung gab es viele Fragen, wie aufwändig das Ganze war und wie genau unser Chatbot genau umgesetzt wurde. Hier ist eine Übersicht unseres Vorgehens.

1. Vorbereitung der Podcast-Episoden

Zunächst mussten die Audiodateien so aufbereitet werden, dass ChatGPT auf alle Inhalte zugreifen kann. Dazu mussten die Audiodateien transkribiert werden. Da die meisten Episoden auf Deutsch sind und unterschiedliche Sprecher haben, war eine genaue Sprechererkennung und eine sehr gute deutsche Transkription erforderlich.

Die Sprechererkennung war auch sehr wichtig, da die Episoden in einem Interviewformat stattfinden, mit unterschiedlichen Gästen. D.h. die Aussagen der Gäste zu ihren Erfahrungen und Firmen etc. muss klar erkenntlich sein.

Glücklicherweise gibt es inzwischen dank AI einige gute Online Services, welche Transkriptionen in guter Qualität anbieten. Nach umfangreicher Recherche fiel unsere Wahl auf GoSpeech:

GoSpeech ist ein deutsches Unternehmen mit datenschutzkonformer Verarbeitung und einem benutzerfreundlichen Interface. Der Service kostet 49 Euro für 5 Stunden Transkriptionen pro Monat, jede weitere Stunde kostet 12 Euro.

Schritte für die Transkription:

  1. Podcast Episoden als .mp3 oder .acc-Format herunterladen und hierbei auf eine gute Namenskonvention achten (Podcastnummer + aussagekräftiger Titel + ggf. Datum)
  2. In GoSpeech die Sprache auf Deutsch einstellen, „Mehrere Sprecher“ auswählen und optional ein eigenes Vokabular hinzufügen (was in unserem Fall nicht notwendig war)
  3. Warten, bis alle Transkriptionen abgeschlossen sind. Bei über 500 Episoden hat dies länger als einen Tag gedauert.

2. Nachbearbeitung der Transkriptionen

Nach der Transkription war etwas manuelle Nacharbeit nötig. GoSpeech erkennt zwar die verschiedenen Sprecher gut, ordnet jedoch keine Namen zu. Um Fragen wie „Was sagt Alex zum Thema XY?“ beantworten zu können, mussten die Sprechernamen manuell hinzugefügt werden.

Auch Firmennamen und Fachbegriffe mussten überprüft werden. Die Erkennung dieser Begriffe hängt stark von der Audioqualität und Aussprache ab. Namen wie „Shein“ oder „Temu“ wurden oft falsch erkannt.

Schritte für die Nachbearbeitung:

  1. Die einzelnen Episoden über den Editor bearbeiten und die Sprechernamen hinterlegen. D.h. Sprecher 1, 2, … mit dem korrekten Namen versehen. Dieser Name wird dann automatisch für alle Parts des Sprechers in der Episode übernommen.
  2. Relevante Firmennamen checken und per “Suchen und Ersetzen” bei Bedarf korrigieren, da sich meist ein falsch erkannter Name sich durch die komplette Transkription zieht.

3. Export der Transkriptionen

Nachdem die Transkriptionen fertiggestellt waren, wurden sie als .txt-Dateien exportiert. Diese Dateiformat eignet sich gut für die Verarbeitung in ChatGPT. Wichtig ist, dass hier auch die Sprecherzuordnung und Zeitstempel enthalten sind.

4. Vorbereitung der Daten für ChatGPT

ChatGPT hat einige Beschränkungen für Custom GPTs. Es dürfen maximal 20 Dateien mit Quelldaten hochgeladen werden, und jede Datei darf nicht größer als 512MB sein. Um dies zu umgehen, haben wir die Episoden in wenigen großen Dateien zusammengefasst. Die Dateigröße war dabei kein Problem, da eine Stunde Podcast in Textform weniger als 100KB umfasst.

Um die diversen txt.-Dateien in wenigen großen txt.-Dateien zusammenzufügen habe ich zwei Skripte erstellt, welche in die Transkription zuerst den jeweiligen Dateinamen / Episodennamen hinzufügen und danach alle Transkriptionen in eine große .txt-Datei zusammenfügen.

Wichtig dabei ist, dass die Abschnitte der einzelnen Episoden klar getrennt und entsprechend gekennzeichnet sind, damit ChatGPT später auf die einzelnen Episoden referenizieren kann.

Skript 1 – Dateinamen in den Episoden hinzufügen:

!/bin/bash

# Setzen der Umgebungsvariable für deutsche Lokalisierung mit UTF-8 Codierung

export LANG=de_DE.UTF-8

# Setzen Sie den Pfad zum Zielverzeichnis
ZIELVERZEICHNIS=“/KassenzonePodcasts“

# Durchlaufen aller .txt Dateien im Zielverzeichnis
for datei in „$ZIELVERZEICHNIS“/*.txt; do

# Dateiname ohne Erweiterung extrahieren
dateiname=$(basename „$datei“ .txt)

# Erstellen einer temporären Datei mit UTF-8 Codierung
{
echo „========================================================================“
echo „$dateiname“
echo „========================================================================“
cat „$datei“
} > temp.txt

# Verschieben der temporären Datei, um die Originaldatei zu ersetzen
mv temp.txt „$datei“

done

echo „Fertig.“

Skript 2 – Alle Transkriptionen zu einer Datei zusammenfügen:

!/bin/bash

# Setzen der Umgebungsvariable für deutsche Lokalisierung mit UTF-8 Codierung

export LANG=de_DE.UTF-8

# Setzen Sie den Pfad zum Zielverzeichnis

ZIELVERZEICHNIS=“/KassenzonePodcasts“

# Der Name der Datei, in die der Inhalt zusammengeführt wird

AUSGABEDATEI=“# result.txt“

# Vorhandene Ausgabedatei löschen, falls sie existiert

rm -f „$ZIELVERZEICHNIS/$AUSGABEDATEI“

# Durchlaufen aller .txt Dateien im Zielverzeichnis und Anhängen an die Ausgabedatei

for datei in „$ZIELVERZEICHNIS“/*.txt; do

    cat „$datei“ >> „$ZIELVERZEICHNIS/$AUSGABEDATEI“

    echo „“ >> „$ZIELVERZEICHNIS/$AUSGABEDATEI“  # Fügt eine Leerzeile zwischen den Dateiinhalten hinzu

done

echo „Alle Textdateien wurden in $AUSGABEDATEI zusammengeführt.“

Index Datei erstellen

Zusätzlich habe ich eine Index-Datei erstellt, die alle Episodennamen und deren Veröffentlichungsdatum enthält, um später Fragen zu bestimmten Daten beantworten zu können:

5. Erstellung und Konfiguration des GPT

Nachdem alle Daten vorbereitet waren, konnte ein Custom GPT erstellt werden. Dafür benötigt ihr ein „Plus“-Abo bei OpenAI für 20 Dollar pro Monat. Im Bereich „GPTs erkunden“ könnt ihr mit der Erstellung des ChatBots beginnen:

Im Chatfenster beschreibt ihr, wie der ChatBot kommunizieren und aussehen soll. Das Resultat ist ein Prompt, der als Konfiguration des ChatBots dient. Alternativ könnt ihr die Konfiguration direkt bearbeiten und dort das gewünschte Verhalten, einen Namen, ein Logo und Beispielfragen festlegen.

Letztendlich wird daraus für euch allerdings “nur” ein Promt erzeugt, welcher als Konfiguration des Chatbots genutzt wird. Das Ergebnis dieses Prompts findet ihr unter “Konfigurieren”:

Alternativ zum Anlegen der Konfiguration per Chatfenster könnt ihr also auch direkt in die Konfiguration gehen und dort das gewünschte Verhalten des Chatbots definieren, einen Namen festlegen, Logo hochladen und Beispielfragen (welche die Nutzer beim Aufruf sehen) festlegen.

Im Konfigurationspromt haben wir auch definiert, in welchem Format die Daten vorliegen und wie diese strukturiert sind:

Die Transkripte der Podcast Episoden liegen hier als txt Dateien vor. Die Transkripte sind nummeriert und der älteste Podcast hat die Nummer K#012, der neuste Podcast die Nummer K#530. Je höher die Podcast Nummer, desto neuer sind also die Folgen. Das Datum der einzelnen Podcast Episoden findet sich in der Datei „Podcast_Transcriptions_PublishingDate_Information.txt“: jeweils in einer Zeile befindet sich dort der Nummer der Episode (nach dem Schema: K#XXX und „XXX“ ist die Nummer der Episode) Episodenname, getrennt mit einem Semikolon das dazugehörige Datum der Veröffentlichung.

Zuletzt müssen die vorbereiteten .txt-Dateien mit den Transkriptionen hochgeladen werden. Dies geschieht in der Konfiguration im Bereich „Wissen“. Die Option „Code-Interpreter und Datenanalyse“ muss ebenfalls aktiviert sein.

6. GPT live schalten

Nach den Einstellungen und dem Hochladen der Dateien wählt ihr „Aktualisieren“. Danach erhaltet ihr einen Link zum ChatBot, den ihr zur Nutzung und Veröffentlichung verwenden könnt:

 Leider kam es bei uns häufiger vor, dass beim Hinzufügen von neuen Inhalten (Transkriptionsdateien) und anschließendem Speichern eine Fehlermeldung auftauchte, dass die GPT Version nicht gespeichert werden konnte. In diesem Fall hat es geholfen noch einmal die Aktualisierung durchzuführen und teilweise die Dateien zu löschen und erneut hochzuladen. Dies scheint, laut vielen Berichten in Foren leider häufiger vorzukommen.

Viel Spaß beim Erstellen eures eigenen ChatBots!

Ausblick

Unseren aktuellen Chatbot findet ihr unter: https://chatbot.kassenzone.de

Falls ihr Feedback habt, meldet euch gerne bei uns unter: [email protected]

Im nächsten Schritt werden wir übrigens testen, wie sich Gemini von Google gegenüber ChatGPT schlägt und ob zum Beispiel der Prozess zur Aktualisierung neuer Inhalte dort etwas besser automatisiert werden kann.

Neue Beiträge per E-Mail abonnieren.

Deine Anmeldung konnte nicht gespeichert werden. Bitte versuche es erneut.
Danke! Bestätige deine Anmeldung bitte in der Mail, die wir dir soeben geschickt haben.

Mehr zu Allgemein

Carsten Lambrecht, MD Burger King Dänemark und SchwedenCarsten Lambrecht, MD Burger King Dänemark und Schweden

Carsten Lambrecht, MD Burger King Dänemark und SchwedenCarsten Lambrecht, MD Burger King Dänemark und Schweden

China Strategien: Kopieren oder Kooperieren? #monthlyHeinemannChina Strategien: Kopieren oder Kooperieren? #monthlyHeinemann

China Strategien: Kopieren oder Kooperieren? #monthlyHeinemannChina Strategien: Kopieren oder Kooperieren? #monthlyHeinemann

Energieautarke Quartiere mit Martin Lass #EnergiezoneEnergieautarke Quartiere mit Martin Lass #Energiezone

Energieautarke Quartiere mit Martin Lass #EnergiezoneEnergieautarke Quartiere mit Martin Lass #Energiezone

Alle Beiträge zu Allgemein