Wir erstellen einen Chatbot, welcher Mitarbeitern Fragen zu wichtigen Unternehmensdaten beantworten kann. Am Beispiel der Hochschule Karlsruhe. Der Chatbot soll Fragen zu Unternehmensinfos beantworten können. Die Zielgruppe sind die Mitarbeiter des Unternehmens. Zum Beispiel soll der Chatbot beantworten können, wo sich bestimmte Gebäude oder Räume befinden. Die KI soll auch über Firmenevents bescheid wissen.
Zuerst müssen wir die Daten für unseren Chatbot sammeln. Für dieses Beispiel werde ich nur wenige Daten nutzen. Für ein richtigen Chatbot braucht man viel mehr Daten.
Campustag
17. Juni 2023, 10 -15 Uhr
Lange Nacht der Mathematik
21. April 2023, 15-24 Uhr
Wann ist der Campustag?; Der Campustag ist am 17. Juni 2023, 10 - 15 Uhr .;;
An welchem Datum ist der Campustag?; Das Datum des Campustages ist der 17.6.2023. ;;
Zu welcher Uhrzeit startet der Campustag?; Der Campustag startet um 10 Uhr. ;;
Wann endet der Campustag?; Der Campustag endet um 15 Uhr. ;;
Wann ist die Lange Nacht der Mathematik?; Die Lange Nacht der Mathematik findet am 21. April 2023 von 15-24 Uhr statt. ;;
Wann startet die Lange Nacht der Mathematik?; Die Lange Nacht der Mathematik startet um 15 Uhr.;;
die Lange Nacht der Mathematik; Die Lange Nacht der Mathematik ist am 21.4.2023 von 15 Uhr bis 24 Uhr.;;
Rechenzentrum
Benutzerberatung
Tel.: +49 (0)721 925-2305
E-Mail: bb.rz@h-ka.de
Sprechzeiten:
Mo. bis Fr. 10:00–13:00 Uhr
Geb. LI, Raum 135
Was ist die Telefonnummer des Rechenzentrums?; Die Nummer des Rechenzentrums ist +49 (0)721 925-2305. ;;
Von wann bis wann sind die Sprechzeiten des Rechenzentrums?; Die Zeiten sind Montag bis Freitag jeweils von 10:00-13:00 Uhr. ;;
Hat das Rechenzentrum Dienstags um 11 Uhr geöffnet?; Ja das Rechenzentrum hat Dienstags von 10:00-13:00 Uhr geöffnet. ;;
Wann kann man das Rechenzentrum Mittwochs am besten erreichen?; Mittwochs kann man das Rechenzentrum von 10:00-13:00 Uhr erreichen. ;;
Wie ist das Rechenzentrum zu erreichen ?; Das Rechenzentrum lässt sich über die Telefonnummer +49 (0)721 925-2305 von Montag bis Freitag jeweils von 10:00-13:00 Uhr erreichen. ;;
Mit desto mehr Fragen man den Chatbot trainiert umso besser werden die Ergebnisse. Nun müssen wir unsere Fragen noch in das richtige Format umwandeln. Die Trainingsdaten für ChatGPT müssen im JSONL Format bereitgestellt werden. Jede Zeile enthält ein JSON Dictionary mit den Keys Prompt und Completion.
{"prompt" : "Prompt1....", "completion": "Antwort 1"}
Um die oben angezeigten Fragen in das richtige Format umzuwandeln, habe ich ein kleines Python Script geschrieben:
In der Kommandozeile folgende Befehle ausführen. Damit das ganze funktioniert müssen Sie sich die ChatGPT CLI installieren, einen API Key erstellen und siesen zu den Systemumgebungsvariablen hinzufügen.
Als nächstes müssen Sie die Open AI CLI nutzen, dazu müssen Sie diese zuerst installieren. Sie können diese über den Befehl "pip install --upgrade openai" installieren. Falls Sie den Python Package Manager pip noch nicht installiert haben, müssen Sie das zuerst tun :) .
Nun müssen Sie openAi noch Ihren OpenAI API Key mitteilen.
Unter Linux oder MacOS können Sie dies mit dem folgendem Befehl:
export OPENAI_API_KEY="<OPENAI_API_KEY>"
Ich habe bei Windows die Systemumgebungsvariable OPENAI_API_KEY über die Windows Einstellungen gesetzt.
Jetzt können Sie Ihre Daten für das Model mit folgendem Befehl vorbereiten:
Ich habe alle Empfehlungen befolgt.
Nun können wir das API Model trainieren:
Die epochs geben an wie viele Iterationen die KI trainiert werden soll. Ich habe bei diesem Datenset 80 gewählt, da wir nur 12 prompts an Training Daten haben. Daher wird die KI 80 mal mit unseren 12 prompts trainiert. Das Fine Tuning mit OpenAI kostet Geld, man zahlt je Token. Dieses Training hat ca. 1 Euro gekostet. Im Web-Portal von OpenAI kann man ein Ausgabe-Limit setzten. Falls dieses bereits erreicht ist, können Sie kein Model mehr fine tunen.
Mit dem Befehl:
kann man nun den Chatbot testen. Ich hatte folgende Ergebnisse:
Wann hat das Rechenzentrum geöffnet? -> Das Rechenzentrum hat freitags von 10:00-13:00 Uhr geöffnet
Wann hat das Rechenzentrum geöffnet? -> Das Rechenzentrum hat von Montag bis Freitag jeweils von 10:00-13:00 Uhr geöffnet
Wann findet der Campustag statt? -> Der Campustag findet am 17. Juni 2023 von 10-15 Uhr statt.
Wichtiger Hinweis! Die getesteten Fragen waren nicht im Trainings-Set, dies bedeutet, dass unsere KI wirklich etwas gelernt hat und sich nicht einfach nur Fragen gemerkt hat. Wie gesagt wäre es aber nötig dem Chat Bot noch viel mehr Trainings Daten zu geben.
Nun wollen wir unseren Mitarbeitern ermöglichen den Chatbot zu nutzen, daher werden wir im Intranet eine Seite entwickeln. Zur Entwicklung der Weseite nutzen wir React im Frontend und Django im Backend. Es ist wichtig das diese Seite nicht frei zugänglich ist, da wir für unseren Chatbot je Anfrage zahlen müssen und Nutzer dann unbeschränkt Fragen können.
Mit folgendem python code bekommen wir für eine Frage eine Chatbot Antwort:
Diesen Code nutzen wir im Django Backend.
Unsere Webseite soll folgendes können: Ein Mitarbeiter des Unternehmens kommt auf unsere interne Seite, dort gibt es ein Eingabefeld und ein Knopf zum Absenden. Falls man dort eine Frage eingibt und absendet, dann wird einem die Antwort des Chatbots angezeigt. Um zu verhindern das Personen sehr viele Anfragen speichern wir die Anzahl der Anfragen eines Nutzers in den letzten 10 Minuten; innerhalb von 10 Minuten darf der Mitarbeiter höchstens 40 Fragen stellen. Wir gehen in unserem Fall davon aus, das es bereits eine interne Unternehmensseite gibt, bei welcher sich Mitarbeiter anmelden können. Dort meldet man sich mit Nutzername und Passwort an. Damit wir unsere Besispiel Seite umsetzen können gehen wir davon aus, dass auf unserer Seite Username und Passwort eingegeben werden.
User besucht Seite -> User loggt sich ein -> Session wird erstellt. Session ID ist eine zufällige Zahl 1- 10E20 -> User stellt Chatbot fragen mit Übergabe der Session ID -> Die SessionID wird in den Cookies für mehrere Tage gespeichert. Die SessionID wird ohne weiter Nutzer und Passwort Eingabe jede Stunde aktualisiert; Damit die Nutzer anonym bleiben.
Damit wir wissen wie gut unser Chatbot abgeschlossen hat und um diesen weiter zu verbessern wollen wir alle gestellten Fragen und Antworten speichern. Um die Privatsphäre unserer Mitarbeiter zu schützen sollen diese Daten nicht vom Nutzer abhängig zu sein, es aber interessant sein kann zu sehen, welche Fragen ein Nutzer nach einander gefragt hat, Pseudonymisieren wir die Daten. Somit speichern wir für die Anfrage das Datum die ungefähre Uhrzeit, nur die Stunde zum Schutz der Mitarbeiter Daten; Zeit seit letzter Frage mit selber Session ID in Sekunden, wenn mehr als 600 Sekunden wird ein X eingetragen; Dazu natürlich der promt und die Chatbot Completion..
Im Django Backend haben wir einen Chatbot-Service, einen Authentifizierungs-Service und ein Logging-Service.
Nachdem der Chatbot live war und wir bereits einige Daten gesammelt haben, dann können wir den Chatbot weiter trainieren. Dazu müssen wir diese Daten aber erstmal verbesser und zwar zu jeden Prompt eine bessere completion schreiben als die des Chatbots. Besser ist natürlich garnicht so simpel. Wenn man diese completions dann alle verbessert hat kann man das Chatbot Model mit den neuen Daten verbessern.
Falls Sie wollen das der Chatbot von alleine schlauer wird, benötigen Sie eine Möglichkeit um festzustellen ob der Nutzer mit der Antwort des Chatbots zufrieden ist. Am besten finden Sie noch wenn der Nutzer unzufrieden mit der Antwort ist heraus welche Antwort dieser lieber bekommen hätte.
Eine simple Möglichkeit ist es einen Like und Dislike Button im Chat einzubauen.
Ansonsten könnte man auch darüber ob der Nutzer danach noch weitere Fragen zum selben Thema gestellt hat. Beispielsweise fragte dieser erst "Wann ist die Lange Nacht der Mathematik" und danach fragte er "An welchem Datum ist die Lange Nacht der Mathematik". Dann wissen wir, dass die erste Frage vom Chatbot schlecht beantwortet wurde.
Außerdem ist es interessant ob der Nutzer nach dem Verwenden des Chatbots die interne Webseite durchsucht.
Um eine MySQL Datenbank zu erstellen habe ich XAMPP verwendet. Daraufhin habe ich eine neue MySQL Datenbank namens "chatbot", sowie einen Nutzer "chatbot" mit dem Passwort 1234 erstellt. Damit Django sich mit der Datenbank verbinden kann müssen wir in der Datei settings.py folgendes ändern:
Gerne entwickeln wir einen Chatbot für Sie. Schreiben Sie uns gerne eine Email und wir besprechen Ihr Projekt.