Systematische Stil-Replikation mit LLMs: Das Style-Tool#

1. Experimenteller Kontext und Motivation#

1.1 Ausgangssituation#

Das Style-Tool entstand aus einer Diskussion über die Möglichkeiten von Large Language Models. Da LLMs im Kern Werkzeuge für die Arbeit mit Sprache sind, stellte sich die Frage: Wie weit können LLMs Sprach- und Schreibstile kopieren und imitieren? Die Frage erschien interessant genug, um die Machbarkeit grob zu explorieren.

Die Vorstellung, dass Schreib- und Sprachstile auch für komplexere Stile repliziert werden können, erschien faszinierend. Mit einfachen Prompts lassen sich bereits Style-Prompts schaffen, die einen allgemeinen Stil imitieren. Allerdings sind Stile mehr als nur Satzbau: Sie strukturieren auch anders und haben jeweils ganz unterschiedliche Narrative, Reihenfolgen und Abläufe.

Das Projekt wurde als Lernvehikel konzipiert, um herauszufinden, wie gut diese umfassendere Stil-Replikation funktioniert.

2. Das Tool: Funktionsweise und Aufbau#

Style ist eine Gradio-basierte Webanwendung zur systematischen Entwicklung und Anwendung von Stil-Transformationsprompts. Die Anwendung ist in vier Hauptfunktionsbereiche (Tabs) gegliedert.

2.1 Tab 1: Transformieren#

Dieser Bereich wandelt Texte nach definierten Stilprofilen um. Nutzer können Stilprofile auf drei Wegen einbringen:

  • Auswahl aus hinterlegten Profilen (vier Built-in-Profile: Akademisch Hochschule, LinkedIn Post, Technische Dokumentation, Kundenmail)
  • Upload eigener Profile (JSON oder ZIP)
  • Direkte Eingabe eines Prompts

Ausgangstexte können als Dateien hochgeladen oder direkt eingefügt werden. Unterstützte Formate sind TXT, Markdown und DOCX. Eine Token-Zählung zeigt die Eingabegröße an und warnt bei Überschreitung von Limits.

Nach der Transformation ist das Ergebnis editierbar. Eine Feedback-Funktion ermöglicht iterative Verfeinerung: Der transformierte Text kann mit zusätzlichen Anweisungen erneut transformiert werden.

Export-Optionen umfassen verschiedene Formate (TXT, MD, DOCX) und wahlweise nur die Transformation oder beide Versionen (Original und transformiert).

2.2 Tab 2: Stil analysieren#

Diese Funktion extrahiert systematisch Stilmerkmale aus Beispieltexten. Die Analyse erfolgt in vier Dimensionen:

Linguistische Merkmale: Satzlänge (Durchschnitt und Varianz), Satzkomplexität, Passiv-Aktiv-Verhältnis, Nominalstil-Score, Hedging-Level, Konnektoren-Typen

Lexikalische Merkmale: Fachterminologie-Dichte, Fremdwörter-Anteil, Abstraktionsgrad, Modalverben-Frequenz

Pragmatische Merkmale: Formalitätsgrad, Leseransprache, Zielsetzung, Zielgruppe

Strukturelle Merkmale: Absatzlänge, Überschriften-Hierarchie, Listen-Häufigkeit, Textaufbau

Nutzer können eigene Texte (Ausgangsstil) hochladen. Optional können entweder Zieltexte (Beispiele für gewünschten Stil) oder eine textuelle Beschreibung des Zielstils angegeben werden.

Das LLM analysiert die Texte und strukturiert die Ergebnisse. Die Analyse kann als JSON-Profil, als Prompt-Text oder als komplettes ZIP-Paket exportiert werden. Das LLM konvertiert die natürlichsprachliche Analyse automatisch in strukturiertes JSON-Format.

2.3 Tab 3: Feinabstimmung#

Dieser Bereich implementiert einen Diff-basierten Ansatz zur Profil-Verfeinerung. Die Idee: Man möchte Feinschliff an entstandenen Texten durchführen, indem man Änderungen vornimmt, die dann getrackt werden. Dieses Pattern entspricht der üblichen Praxis – man bekommt von der KI Antworten und passt diese dann an.

Der Workflow:

  1. Optional: Laden eines Basis-Profils (hinterlegt oder hochgeladen)
  2. Eingabe eines Original-Texts (linke Spalte)
  3. Eingabe oder Erstellung der bearbeiteten Version (rechte Spalte)
  4. Analyse der Änderungsmuster durch das LLM

Das LLM analysiert systematische Unterschiede zwischen Original und Bearbeitung und leitet daraus Transformationsregeln ab. Bei vorhandenem Basis-Profil werden diese Regeln zur Verfeinerung des Profils verwendet.

Bis zu fünf Vorher-Nachher-Paare können verarbeitet werden. Die akkumulierten Erkenntnisse fließen in ein verfeinertes Profil ein, das als ZIP-Paket exportiert werden kann.

Eine Hilfsfunktion erlaubt das Vorausfüllen der rechten Spalte mit einer automatischen Transformation basierend auf dem geladenen Basis-Profil.

2.4 Tab 4: Stilübersicht#

Dieser Bereich visualisiert Stilprofile. Nach dem Laden eines Profils (hinterlegt oder hochgeladen) werden die Merkmale mit Unicode-Balkendiagrammen dargestellt. Der generierte Transformations-Prompt wird vollständig angezeigt und ist kopierbar.

3. Technische Architektur#

3.1 Gesamtstruktur#

Die Anwendung umfasst 2140 Zeilen Python-Code in sechs Dateien. Die Hauptanwendung (app.py) enthält 1200 Zeilen und orchestriert die gesamte UI-Logik und Tab-Funktionen. Hinzu kommen Prompt-Templates und JSON-Profile, sodass das Gesamtprojekt etwa 4000 Zeilen umfasst, wobei etwa die Hälfte Python ist und der Rest Prompts und Konfigurationsdateien.

3.2 Module#

llm_client.py: Kapselt die LLM-API-Integration. Verwendet eine OpenAI-kompatible Schnittstelle zum LLM der Humboldt-Universität Berlin. Implementiert Token-Counting mit Tiktoken, unterstützt ein Context-Window von 250.000 Tokens und reserviert 50.000 Tokens für Antworten. Enthält drei Hauptfunktionen: analyze_style() für Stil-Extraktion, transform_text() für Transformationen und analyze_diff() für Vorher-Nachher-Vergleiche.

document_processor.py: Verarbeitet verschiedene Dokumentformate. Konvertiert DOCX in Markdown unter Beibehaltung von Struktur (Überschriften, Listen, Tabellen). Lädt TXT und Markdown direkt. Speichert in allen drei Formaten. Validiert Dateien hinsichtlich Format und Größe (Maximum 10 MB).

profile_manager.py: Verwaltet Stilprofile. Lädt Built-in-Profile aus dem profiles-Verzeichnis. Importiert externe Profile aus JSON oder ZIP. Extrahiert Prompts aus Profilen oder generiert sie aus strukturierten Daten. Erstellt leere Profil-Templates mit der vollständigen Struktur der vier Dimensionen (Linguistik, Lexik, Pragmatik, Struktur).

export_handler.py: Handhabt alle Export-Operationen. Erstellt JSON-Dateien, Prompt-Texte, ZIP-Pakete und transformierte Dokumente. Verwendet tempfile.NamedTemporaryFile für Gradio-kompatible Downloads. ZIP-Pakete enthalten stil_parameter.json, stil_prompt.txt und stil_beispiele.txt.

3.3 Prompt-Templates#

Drei separate Template-Dateien definieren die System-Prompts:

style_analysis.txt: Instruiert das LLM zur systematischen Extraktion von Stilmerkmalen in den vier Dimensionen. Fordert quantitative Angaben, wo möglich, und extrahiert 20-30 repräsentative Beispielsätze.

style_transformation.txt: Definiert die Transformationsaufgabe. Instruiert zur Beibehaltung inhaltlicher Substanz bei Anpassung von Form und Ton gemäß Stilprofil.

diff_analysis.txt: Instruiert zur Vergleichsanalyse zwischen Original und Bearbeitung. Fordert Identifikation systematischer Änderungsmuster, Quantifizierung wo möglich und Ableitung von Transformationsregeln.

3.4 Der Hybrid-Ansatz#

Ein zentrales Architektur-Merkmal ist die Kombination aus strukturierten JSON-Daten und natürlichsprachlichen Prompts. Stilprofile enthalten:

{
  "linguistik": {
    "satzlaenge": {"durchschnitt": 18, "varianz": 5}
  },
  "generierter_prompt": "Schreibe im akademischen Stil..."
}

Dieser Ansatz ermöglicht sowohl maschinelle Verarbeitung (für Visualisierung, Vergleiche) als auch flexible sprachliche Anweisungen (für Transformation). Die Mischung hatte sich in anderen Experimenten bereits als günstig erwiesen.

4. Entwicklungsprozess#

4.1 Methodisches Vorgehen#

Die Entwicklung folgte einem strukturierten Prozess. Zunächst war noch nicht klar, wie eine Umsetzung aussehen könnte. Durch intensive Interaktion zum Austausch von Lösungsansätzen entstand ein immer klareres Bild – insbesondere bezüglich der Aufteilung in Funktionsbereiche (Tabs).

In dieser Diskussion kristallisierte sich heraus, dass JSON als mögliches Import-/Exportformat dienen könnte. Die modulare Architektur entwickelte sich während dieser Spezifikationsphase.

Die Idee war, nicht nur Stile entlang von Eingangstexten abzuleiten, sondern auch Anweisungen geben zu können, was noch berücksichtigt werden soll. Zusätzlich sollte Feinschliff durch Änderungen an entstandenen Texten möglich sein, die getrackt werden. Hier ging es rein um das Ausprobieren der Idee und den Ansatz über Änderungen (Diffs).

4.2 Spezifikation vor Implementierung#

Erst nachdem die Spezifikation, die technischen Ansätze und die Architektur ganz klar waren, erfolgte die Umsetzung. Bei der Abstimmung der Spezifikation wurde auf KISS-Prinzipien sehr genau geachtet, um eine einfache, gute Lösung zu erhalten.

Die Qualität der Spezifikation erwies sich als entscheidend: Je hochwertiger der Spezifikationsprozess und die Spezifikation, desto besser ließ sich die Idee umsetzen. Architekturerfahrungen waren dabei sehr wichtig.

4.3 Umsetzung und Iterationen#

Die hochwertige, vollständige Spezifikation ermöglichte eine direkte Implementierung. Es gab nur eine Iteration, da die Spezifikation sehr ausgearbeitet war und komplett umgesetzt werden konnte.

Zeitlicher Aufwand:

  • Spezifikation und erste Implementierung inklusive Coding und Deployment: etwa 90 Minuten
  • Zwei nachfolgende kleine Iterationen für Fehlerkorrekturen: jeweils 30 Minuten

Insgesamt wurde für die funktionierende Anwendung also etwa 2,5 Stunden aufgewendet.

4.4 Technologie-Stack#

Für den Betrieb kam ein LLM der Humboldt-Universität Berlin zum Einsatz. Die Wahl von Gradio als UI-Framework basierte auf bereits vorliegenden guten Erfahrungen aus früheren Projekten.

Der Hybrid-Ansatz (JSON + natürliche Sprache) war ebenfalls aus anderen Experimenten bekannt und wurde hier konsequent angewendet. Token-Management als Standard-Pattern wurde aus vorherigen Projekten übernommen.

5. Validierung und Erkenntnisse#

5.1 Testphase#

Das Tool wird derzeit erprobt. Erste Tests zeigen, dass es sehr gut funktioniert. Bisher wurden etwa zehn Stilprofile erstellt.

5.2 Replizierbare Stile#

Die Bandbreite erfolgreich replizierter Stile ist bemerkenswert:

Autoren-Stile: Literarische Stile wie der von Goethe können repliziert werden.

Reden-Stile: Politische Redestile funktionieren besonders gut. Sowohl Helmut Schmidt als auch Barack Obama konnten als Stile abgebildet werden.

Genres: Verschiedene Textsorten wie Interviews oder Comics lassen sich replizieren.

5.3 Der Comic-Fall#

Der Comic-Stil funktioniert besonders gut und illustriert eine praktische Anwendung. Das Tool generiert nicht nur Dialog in Comic-Sprache, sondern beschreibt auch einzelne Panels für Comics.

Diese sprachliche Grundlage funktioniert sehr gut. Die generierten Texte konnten dann über ein Diffusion Model (in anderen Tools) als grafische Comics umgesetzt werden. Das Style-Tool liefert die strukturierte textuelle Basis, die visuell weiterverarbeitet wird.

5.4 Zentrale Erkenntnis#

Die überraschendste Beobachtung: Stil ist offenbar ein kulturelles Phänomen und nicht nur ein sprachliches – kann aber dennoch repliziert werden.

Diese Erkenntnis geht über die ursprüngliche Erwartung hinaus. Stile umfassen nicht nur linguistische Muster, sondern auch kulturelle Konventionen, Kontexte und Erwartungen. Die Tatsache, dass LLMs diese kulturelle Dimension offenbar erfassen und reproduzieren können, ist bemerkenswert.

Die Möglichkeiten erscheinen sehr beeindruckend. Bisher scheint es, als wären sie sehr weitreichend.

6. Methodische Erkenntnisse#

6.1 Spezifikationsqualität als Effizienz-Hebel#

Die zentrale übertragbare Erkenntnis: Je hochwertiger der Spezifikationsprozess und die Spezifikation, desto besser lässt sich die Idee umsetzen. Architekturerfahrungen sind dabei sehr wichtig.

Die 90-Minuten-Entwicklung war nur möglich durch:

  • Intensive Klärung vor der Implementierung
  • Vollständige Spezifikation aller Funktionen und Schnittstellen
  • Konsequente Anwendung von KISS-Prinzipien bereits in der Spezifikationsphase
  • Übertragung bewährter Patterns aus früheren Projekten

6.2 Bewährte technische Patterns#

Mehrere Techniken haben sich bewährt:

Token-Management: Die Implementierung von Token-Counting und proaktiven Warnungen ist mittlerweile Standard bei allen Tools. Diese Technik wurde nach früheren Projekten konsequent übernommen.

JSON-Strukturierung: Die automatische Konvertierung natürlichsprachlicher LLM-Outputs in strukturiertes JSON funktionierte von Beginn an gut. Diese Technik war aus anderen Tool-Entwicklungen bereits bekannt.

Hybrid-Ansatz: Die Mischung aus sprachlichen Anweisungen an das LLM und strukturierten Angaben über JSON hat sich in der Vergangenheit als günstig erwiesen. Dieser Ansatz wird als elegant empfunden.

6.3 Der Diff-basierte Ansatz#

Die Diff-Analyse zur Feinabstimmung funktioniert ganz gut, muss aber noch näher erkundet werden. Der Ansatz ist interessant, weil er reale Arbeitsmuster abbildet: Menschen passen KI-Outputs häufig manuell an. Die Systematisierung dieser Anpassungen in Transformationsregeln könnte praktischen Wert haben.

6.4 Projektgröße und Beherrschbarkeit#

Das Projekt war mit seinen Dimensionen klein und sehr gut beherrschbar:

  • Gesamtumfang: 4000 Zeilen
  • Python-Code: 2000 Zeilen in nur 6 Dateien
  • Rest: Prompts und Konfigurationen
  • Hauptanwendung: 1200 Zeilen

Diese Größe ermöglichte vollständige Übersicht und schnelle Entwicklung. Die bewusste Begrenzung durch KISS-Prinzipien trug dazu bei.

7. Übertragbare Prinzipien#

Aus diesem Experiment lassen sich mehrere Prinzipien für LLM-gestützte Entwicklung ableiten:

1. Spezifikation vor Implementierung: Investiere Zeit in vollständige Klärung aller Aspekte vor dem Coding. Dialog und Diskussion sind wertvoller als frühes Coding.

2. Architekturerfahrung bleibt wichtig: LLMs können spezifizierte Architekturen umsetzen, aber die Architektur selbst erfordert menschliches Urteil und Projekterfahrung.

3. KISS in der Spezifikationsphase: Komplexität muss früh begrenzt werden. Explizite Simplicity-Constraints verhindern Overengineering effektiver als späteres Refactoring.

4. Bewährte Patterns übertragen: Erfolgreiche technische Ansätze aus früheren Projekten sollten konsequent wiederverwendet werden (Token-Management, Hybrid-Ansatz, JSON-Strukturierung).

5. Kleine, beherrschbare Projekte: Die Begrenzung auf etwa 2000 Zeilen Python-Code erhöht Übersichtlichkeit und Entwicklungsgeschwindigkeit.

6. Experimentelle Ansätze explorieren: Neue Ideen wie Diff-basierte Verfeinerung dürfen ausprobiert werden, auch wenn sie noch nicht vollständig ausgereift sind.

8. Fazit#

Das Style-Tool demonstriert, dass LLM-gestützte Entwicklung bei methodisch fundierter Herangehensweise hocheffizient sein kann. 90 Minuten für ein vollständiges, funktionales Tool sind bei hochwertiger Spezifikation realistisch.

Die inhaltliche Erkenntnis – dass Stil ein kulturelles Phänomen ist und LLMs diese Dimension offenbar erfassen können – ist bemerkenswert. Die bisherigen Testergebnisse zeigen eine beeindruckende Bandbreite replizierbarer Stile, von literarischen Autoren über Redner bis zu Genres wie Comics.

Der Diff-basierte Feinabstimmungs-Ansatz ist innovativ und bildet reale Arbeitsprozesse ab. Er muss noch näher erforscht werden, zeigt aber Potenzial.

Für die Praxis der LLM-gestützten Entwicklung ist die zentrale Botschaft: Spezifikationsqualität ist der entscheidende Effizienz-Hebel. Die Kombination aus klarer Architektur, KISS-Prinzipien und Übertragung bewährter Patterns ermöglicht extrem schnelle Umsetzungen.