Funktionen¶
LLM-Chat bietet einen Freitext-Chat mit optionaler Anreicherung durch Dokumente und Bilder. Eingaben werden über einen einheitlichen Upload-Mechanismus angenommen und automatisch nach Dateityp verarbeitet. Geladene Dokumente bleiben über alle Sitzungen hinweg verfügbar; Bilder werden als visueller Inhalt der jeweiligen Nachricht gesendet. Vorgefertigte Rollenprofile, Prompt-Vorlagen und ein Word-Export ergänzen den Funktionsumfang.
Anwendungsszenarien¶
- Dokumente zusammenfassen und kritisch reflektieren: Längere Texte werden geladen und im Dialog auf Kernaussagen, Argumentationsstrukturen und Lücken hin befragt.
- Daten und Quellen aus Dokumenten extrahieren: Aus geladenen Dokumenten werden gezielt Zahlen, Fakten, Verweise oder Zitate herausgesucht und strukturiert ausgegeben.
- Bilder und Diagramme erläutern: Diagramme, Screenshots oder fotografierte Tafelbilder werden an eine Nachricht angehängt und im Kontext der gestellten Frage interpretiert.
- Texte übersetzen und stilistisch überarbeiten: Texte werden zwischen Deutsch und Englisch übersetzt oder hinsichtlich Stil, Grammatik und Klarheit überarbeitet.
- Mehrere Dokumente vergleichen: Mehrere Dokumente werden parallel geladen und für strukturierte Vergleiche herangezogen — etwa zur Gegenüberstellung von Konzepten, Methoden oder Quellen.
- Recherchen über Sitzungen hinweg fortsetzen: Recherchen lassen sich auf mehrere thematische Sitzungen verteilen, wobei der Dokumentenpool sitzungsübergreifend erhalten bleibt.
Auf einen Blick¶
- Anbindung an einen OpenAI-kompatiblen LLM-Endpunkt mit vorkonfigurierten Profilen für Qwen3, Qwen3.5, Kimi und GLM sowie einem Default-Profil für weitere Modelle.
- Unterstützung von 14 Dokumentformaten (PDF, DOCX, DOC, XLSX, XLS, PPTX, PPT, HTML, HTM, TXT, MD, RST, CSV, RTF, PY) und 4 Bildformaten (JPG, PNG, GIF, WEBP).
- Streaming-Antworten mit Filterung von Reasoning-Tags und einer Stop-Funktion während der Generierung.
- Verwaltung mehrerer Chat-Sitzungen mit Auto-Titelvergabe; geladene Dokumente sind sitzungsübergreifend verfügbar.
- Vier Rollenprofile für den System-Prompt sowie 13 thematische Prompt-Vorlagen, davon vier dokumentspezifisch.
- Token-Budget-Anzeige, Duplikatsbereinigung beim Dokument-Upload und kontrollierte Ablehnung bei Überschreitung der Limits.
- Word-Export des Chat-Verlaufs mit vollständigem Markdown- und LaTeX-Rendering.
Chat und Dialogsteuerung¶
Der Chat bildet den Kern der Anwendung. Antworten werden gestreamt, sodass die Ausgabe unmittelbar sichtbar wird. Für Modelle mit <think>-Notation werden interne Reasoning-Abschnitte aus der Ausgabe entfernt und während der Verarbeitung durch eine kompakte Statusanzeige ersetzt.
- Streaming und Stop-Funktion: Modellantworten werden zeichenweise ausgegeben; eine laufende Generierung lässt sich jederzeit abbrechen.
- System-Prompt mit Rollenprofilen: Vier vorgefertigte Profile (sachlicher Assistent, Tutor, inspirativ, leer) sind auswählbar und im Anschluss frei editierbar.
- Prompt-Vorlagen: Klickbare Vorlagen für Zusammenfassung, Analyse, einfache Erklärung, Übersetzung (DE/EN), Stilüberarbeitung, Vergleich, Brainstorming und Schritt-für-Schritt-Anleitungen. Bei geladenen Dokumenten werden zusätzliche dokumentspezifische Vorlagen eingeblendet (Worum geht es?, Zahlen & Fakten, kritische Reflexion, Literatur & Quellen).
- Auto-Titelvergabe: Nach der ersten Nachricht einer Sitzung wird ein Kurztitel im Format „Aktionswort: Thema" generiert.
- Markdown- und LaTeX-Darstellung: Antworten werden mit Markdown-Formatierung dargestellt; LaTeX-Formeln werden inline (
$…$) und als Block ($$…$$) gerendert. - Datumshinweis: Das aktuelle Datum wird automatisch als Bestandteil des System-Prompts mitgesendet.
Datenanbindung¶
LLM-Chat verbindet sich mit einem einzelnen externen Datenpunkt: einem Sprachmodell-Server.
- OpenAI-kompatibler LLM-Endpunkt: Adressiert wird ein über die OpenAI-Chat-Completions-API ansprechbarer Server (etwa eine vLLM- oder kompatible Instanz). Verbindungsparameter wie Basis-URL, API-Schlüssel und Modellname sind über Umgebungsvariablen konfigurierbar. Vorkonfigurierte Modell-Profile bestehen für Qwen3, Qwen3.5, Kimi und GLM; weitere Modelle werden über ein Default-Profil unterstützt. Je Profil werden Sampling-Parameter (Temperature, top-p, top-k, min-p, Penalty-Werte) sowie modellspezifische Reasoning-Schalter (
chat_template_kwargs) gepflegt und per Modellnamen oder explizit per Konfigurationsvariable ausgewählt.
Dokumentverarbeitung¶
Dokumente werden serverseitig zu reinem Text extrahiert und als dauerhafter Bestandteil des Sitzungskontexts in den System-Prompt aufgenommen. Die Verarbeitung folgt einer zweistufigen Strategie.
- Schnelle Extraktoren: Für jedes Format wird zunächst ein leichtgewichtiger, formatspezifischer Extraktor versucht —
pdfminer.sixfür PDF,python-docxfür DOCX (inklusive Tabellen),python-pptxfür PPTX (inklusive Sprechernotizen-Strukturen und Tabellen),openpyxlfür XLSX, ein eigener HTML-Parser für HTML/HTM sowie eine Direktlesung für reine Textformate (TXT, MD, RST, PY, CSV, RTF). - Universal-Fallback: Schlägt der schnelle Extraktor fehl oder existiert für das Format keiner (DOC, PPT, XLS), wird auf
unstructuredmit formatspezifischen Partitionern zurückgegriffen. Für PDF lässt sich zwischen einer schnellen Variante und einer hochauflösenden Layout-Analyse umschalten. - Bereinigung: Nach der Extraktion werden mehrfache Leerzeilen und Whitespaces reduziert, optional Seitenzahlen entfernt und zu kurze Absätze ausgefiltert; Überschriften werden erkannt und behalten.
- Token-Schätzung: Pro Dokument wird der Token-Bedarf approximiert (rund drei Zeichen pro Token für Deutsch) und gegen das verfügbare Kontextbudget geprüft.
Bildverarbeitung¶
Bilder werden für die multimodale Eingabe an das Sprachmodell vorbereitet.
- Validierung und Konvertierung: Geprüft werden Format und Dateigröße (Standard-Limit 20 MB). Die EXIF-Orientierung wird korrigiert, RGBA/LA/P-Modi werden gegen einen weißen Hintergrund nach RGB konvertiert.
- Skalierung: Bilder werden bei Bedarf auf eine maximale Kantenlänge (Standard 2048 px) skaliert.
- Übertragung: Die Übergabe erfolgt als Base64-kodierte JPEG-Datei in der von der OpenAI-API erwarteten
image_url-Struktur. - Mehrere Bilder pro Nachricht: Mehrere Bilder können innerhalb einer Nachricht gemeinsam an das Modell übergeben werden, etwa für vergleichende Analysen.
Sitzungs- und Kontextverwaltung¶
- Mehrere Chat-Sitzungen: Pro Browser-Tab werden bis zu 20 Sitzungen vorgehalten und sind in der Sidebar wechselbar.
- Globaler Dokumentkontext: Geladene Dokumente sind unabhängig von der aktiven Sitzung verfügbar; ein Sitzungswechsel oder „Neuer Chat" entfernt sie nicht.
- State pro Browser-Tab: Jeder Browser-Tab erhält eine eigene Anwendungsinstanz; ein Reload setzt den Zustand zurück.
- Persistente Bilder im Verlauf: Verarbeitete Bilder werden für die Anzeige im Verlauf zwischengespeichert, sodass sie auch nach erneutem Öffnen einer Sitzung sichtbar bleiben.
Qualitätssicherung¶
- Duplikatsbereinigung: Wird ein Dokument mit identischem Dateinamen erneut geladen, ersetzt es das bestehende Dokument; das Token-Budget wird entsprechend angepasst.
- Token-Limit-Prüfung: Vor jeder Aufnahme eines Dokuments wird geprüft, ob der verfügbare Budget-Rest ausreicht. Bei Überschreitung wird das Dokument kontrolliert abgelehnt und der Nutzer per Hinweis informiert.
- Dokument-Anzahl-Limit: Eine konfigurierbare Obergrenze (Standard 25 Dokumente) verhindert die unbegrenzte Anhäufung von Kontextquellen.
- Reasoning-Filterung:
<think>-Abschnitte werden auch bei zeichenweisem Streaming zuverlässig erkannt (inklusive partieller Tag-Anfänge) und aus der finalen Ausgabe entfernt. - Robustes Encoding-Handling: Bei Textdateien werden mehrere Zeichensätze (UTF-8, Latin-1, CP1252) durchprobiert, um Lesefehler zu vermeiden.
- Eingabevalidierung gegen XSS: Vom Nutzer kommende Daten (Dateinamen, IDs) werden in der Sidebar HTML-encodiert dargestellt.
- Aussagekräftige Fehlermeldungen: Verbindungs-, Modell- oder Auslastungsfehler des Sprachmodell-Servers werden in eindeutig formulierten, deutschsprachigen Hinweisen ausgegeben.
Export¶
- Word-Export: Der Chat-Verlauf der aktuellen Sitzung wird als
.docx-Datei ausgegeben. Der Markdown-Renderer übernimmt Überschriften (H1–H4), fett/kursiv/durchgestrichene Texte, Inline- und Block-Code, geordnete und ungeordnete Listen mit Verschachtelung, Tabellen, Blockzitate, horizontale Linien und Hyperlinks.