/
Chatbot für die Konfiguration des Themenbaums

Chatbot für die Konfiguration des Themenbaums

Ziel

Am 07.02.2025 wurde abgestimmt, das Nutzende einen Chat-Assistenten erhalten sollen, der die nötigen Parameter für die Themenbaum-Erstellung abfragt und diese Konfiguration dann übergibt.

Es wurde vorgeschlagenen, eine Angulare-Webkomponente zu erstellen und diese dann unabhängig vom Rest der Redaktionsumgebung zu pflegen.

Code-Repo: GitHub - janschachtschabel/topictreeconfigurationchatbot: Chatbot für die Konfiguration zur Themenbaumerstellung

image-20250210-152948.png

Umsetzung

Ein ausführlicher System-Prompt mit Infos darüber welche Informationen benötigt werden, steuert das Gespräch. Die Antworten des Users werden nach entsprechenden Antworten durchsucht und diese werden in Formularfelder geparst, um eine Kontrolle und manuelle Anpassung zu ermöglichen.

Abfrage von Variablen

Ein Gesprächsworkflow wurde von Jessi und Jan am 07.02.2025 entworfen:

https://miro.com/app/board/uXjVLirzn1Y=/

Bei ersten Tests hat sich dieser als noch nicht optimal herausgestellt. Für den Prototyp wurde testweise eine angepasste Version genutzt, die zuerst die Mindestdaten abfragt und das anhängen von Metadaten optional gestaltet (hat den Vorteil, das dies später besser ergänzt werden kann ohne den User unflexibel zu machen). Der Parameter Zielgruppe muss eventuell auch nochmal reflektiert werden. Vielleicht ist eine Freitextabfrage günstiger, da die Angabe “Lernende oder Lehrende” kaum Mehrwerte bringt.

Variablen die abgefragt werden:

  • Mindestdaten:

    • Themenbaumthema

    • Anzahl Hauptkategorien

    • Anzahl Unterkategorien

    • Anzahl Weitere Unterkategorien

  • Optionale Metadaten

    • Bildungsstufe

    • Fachgebiet

    • Zielgruppe

System-Prompt

Neben den abzufragenden Infos sollte der Prompt die verfügbaren Werte des Vokabulars und den aktuellen Stand aus den Formularfeldern kennen.

Prompt-Entwurf

Du bist Boerdie, ein freundlicher KI-Assistent für die Konfiguration eines Themenbaums für Bildungsinhalte. VERFÜGBARE WERTE: Bildungsstufen: ${this.bildungsstufen.join(', ')} Fachgebiete: ${this.fachgebiete.join(', ')} Zielgruppen: ${this.zielgruppen.join(', ')} AKTUELLER STAND: ${JSON.stringify(currentState, null, 2)} ABLAUF (Strikt in dieser Reihenfolge): 1. Themenbaumthema erfragen 2. Anzahl der Hauptkategorien festlegen (1-30, Empfehlung: 10-12) 3. Anzahl der Unterkategorien festlegen (0-20) 4. Anzahl der Weiteren Unterkategorien festlegen (0-20) 5. Abfrage, ob man bereits einige Metadaten für den Themenbaum festlegen möchte oder direkt zur Zusammenfassung springen möchte. 6. Optional: Bildungsstufen 7. Optional: Fachgebiete 8. Optional: Zielgruppen 9. Zusammenfassung präsentieren und um Freigabe bitten NÄCHSTER SCHRITT: ${nextStep} VERHALTEN: 1. Führe den Benutzer strikt Schritt für Schritt durch den Prozess 2. Stelle immer nur eine Frage auf einmal 3. Zeige nicht alle verfügbaren Werte, sondern bitte den Nutzenden um eine Antwort 4. Bestätige erhaltene Antworten 5. Falls die Eingabe des Nutzenden nicht den verfügbaren Werten entspricht, versuche ihn im Dialog darauf zu orientieren 6. Fasse am Ende alle Eingaben zusammen und bitte um Freigabe 7. Bei Ablehnung der Freigabe, frage nach was geändert werden soll WICHTIG: - Bleibe freundlich und hilfsbereit - Gib Empfehlungen wenn sinnvoll - Validiere die Eingaben gegen die verfügbaren Werte - Formatiere deine Antworten in Markdown: - Verwende **fett** für wichtige Begriffe - Nutze \`code\` für Zahlenwerte - Strukturiere mit # und ## für Überschriften - Verwende - für Aufzählungen - Bei der Zusammenfassung: 1. Präsentiere alle Eingaben übersichtlich 2. Frage explizit nach Bestätigung der Zusammenfassung 3. Erst nach Bestätigung der Zusammenfassung nach Freigabe fragen

Variablen-Extraktion

Die Variablen können mittels folgender Optionen aus dem Chat extrahiert werden:

  • Keyword basierend

  • mit Function-/Toolcalling

  • mit strukturierten Aufrufe, die neben der Chatnachricht immer den aktuellen Stand der Variablen übergibt (in einem Prompt-Aufruf)

  • mit strukturierten Aufrufen in einem zweiten Prompt, der die Variablen aus dem Gespräch extrahiert

Der erste Versuch mit Functioncalling lief gut - es gab aber Probleme, wenn Nutzende auf Fragen zur Anzahl der Kategorien nur eine Zahl antworteten. Diese konnte nicht korrekt zugeordnet werden.

Strukturierte Aufrufe mit einem Prompt für Nachrichten und Variablen liefen nicht fehlerfrei.

Dies in einem zweiten Prompt zu entkoppeln scheint am besten zu funktionieren und hat den Vorteil, das die Prompt-Parameter für Gespräch und Variablen-Extraktion getrennt geregelt werden können (z.B. niedrigere Temperatur für den Variablen-Extraktions-Prompt).

Ergänzende Funktionen

  • Formularfelder zur manuellen Korrektur

  • Anzeige des Status für die Vollständigkeit/Freigabe

Stand der Webkomponente

  • kann die Daten abfragen und in einem Formular parsen

  • kann Fächer, Bildungsstufe und Zielgruppe zuordnen

  • die Hochschulfachsystematik ist noch nicht implementiert

  • der API Aufruf zur Themenbaumgenerierung wird erstellt aber nur simuliert als Text dargestellt

Todo

  • Anpassungsvorschläge von Tommy (10.02.25):

    • Stelle auf Angular Material Version 18.x um und verwende dies beispielsweise zur Einbindung der Formular-Felder.

    • Nicht zu viel Style verwenden. Lieber auf Standard Angular Material Design abzielen.

    • Bitte die Funktionen in der .ts Datei kommentieren (mittels JSDoc). 

    • ng add @angular/material@18

    • Angular: ^18.1.5

    • "typescript": "~5.4.5"

    • "@angular-devkit/build-angular": "^18.0.3",

    • Verwende in der UI die Komponenten von Angular Material, z.B. zur Integration von Inputs.

    • Kommentiere die Funktionen der .ts-Datei mittels JSDoc.

    • Reduziere die Styles-Datei auf wesentliche und notwendige Anpassungen und verwende wenn möglich die Defaults, die durch Angular Material gesetzt sind.

  • das UX wurde auf material umgestellt und die CSS etwas reduziert

  • die doppelte Bestätigung bei der Zusammenfassung wurde entfernt und die Anzeige des simulierten API Aufrufs verbessert

image-20250210-181006.png
Version in Material UX

Related content