Von der Spezifikation zum Code: TalkToDocuments#
In einer fortlaufenden Serie zur Exploration von LLM-gestütztem Coding werden methodische Erkenntnisse aus verschiedenen Entwicklungsprojekten dokumentiert. Das jüngste Experiment: Ein lokales Tool zur direkten Interaktion mit Dokumenten unter Nutzung von Large Language Models mit 256K Token Kontext.
Das experimentelle Ziel#
Nach der lokalen Inbetriebnahme eines LLM mit größerem Kontextfenster stellte sich die Frage: Wie weit lässt sich dieser Kontext praktisch nutzen? Wie konsistent bleiben Antworten bei steigender Token-Anzahl? Das entwickelte Tool sollte diese Fragen beantworten: Mehrere Dokumente bis zur Kontextgrenze verarbeiten, ohne klassisches Chunking oder Vektor-Datenbanken, dabei den verfügbaren Platz optimal nutzen.
Was das Tool leistet#
Die Anwendung verarbeitet bis zu 10 Dokumente gleichzeitig in verschiedenen Formaten (PDF, Word, Excel, PowerPoint, Text, HTML, CSV). Nach intelligentem Content-Cleaning, Deduplizierung und Markdown-Formatierung werden die Dokumente direkt im LLM-Kontext gehalten. Ein einfaches Referenzsystem mit [P1], [P2]-Markierungen ermöglicht Quellenangaben. Die Verarbeitung erfolgt lokal, Antwortzeiten liegen im Bereich weniger Sekunden.
Angaben zum Projekt#
Ca. 90 der Entwicklungszeit Minuten flossen in die interaktive Erstellung einer detaillierten Spezifikation mit dem LLM, 60 Minuten in die Code-Generierung, der Rest in Dokumentation und Deployment. Das Ergebnis: 3100 Zeilen Code in 16 Python-Dateien, entwickelt über insgesamt drei Tage in drei Hauptiterationen.
Die meisten Module liefen direkt beim ersten Durchlauf. Der Grund: Die Investition in Spezifikationsqualität zahlte sich in fehlerfreier Implementierung aus.
Spezifikation als wichtiger Erfolgsfaktor#
Eine funktionierende LLM-Spezifikation leistet mehr als funktionale Anforderungen zu dokumentieren. Sie macht den Zusammenhang zwischen Funktion, Architektur und technischer Implementierung explizit. Dieser Ansatz hielt Zusammenhänge nachvollziehbar und verbesserte die Implementierbarkeit erheblich.
Die Qualität der Spezifikation entwickelte sich über mehrere Projekte hinweg kontinuierlich weiter. Mit zunehmender Klarheit und Detailtiefe sank die Fehlerrate in der Umsetzung.
KISS (Keep It Small and Simple) als aktive Steuerungsaufgabe#
LLMs tendieren zu aufwendigen Lösungen, die vermutlich in ihren Trainingsdaten enthalten sind, aber nicht immer sauber repliziert werden können. Dies erforderte aktives Gegensteuern während der Spezifikationserstellung.
Die Implementierung verzichtet auf komplizierte Referenzsyteme und nutzt ein simples [P1], [P2]-Referenzsystem statt komplexer Metadaten-Strukturen, direkte Kontext-Übergabe oder andere Retrieval-Mechanismen. Die Angemessenheit vorgeschlagener Ansätze wurde kontinuierlich hinterfragt.
Strukturierung für LLM-Wartbarkeit#
Die Modularisierung folgte einer klaren Regel: Keine Datei über 1000 Zeilen. Die größte Datei (Hauptanwendung) umfasst 800 Zeilen, gefolgt vom Word-Exporter mit 400 Zeilen und dem LLM-Interface mit 300 Zeilen. Diese Grenze ergab sich aus der praktischen Erfahrung, dass LLMs größere Komplexität noch nicht zuverlässig überblicken.
Die Aufteilung erfolgte nach klaren Aufgabenbereichen: Extractors, Optimizers, LLM-Integration und UI als separate Module. Jeder Bereich blieb einzeln bearbeitbar.
Möglichkeiten und überraschende Stärken#
Größere Komplexität musste in diesem Projekt in handhabbare Teile zerlegt werden. LLMs können diese Dekomposition noch nicht selbst leisten. Die Konsistenz der Antworten erwies sich auch bei höheren Token-Zahlen als sehr gut. Das Tool funktioniert nicht nur zuverlässig, sondern auch schnell. Erste Tests durch verschiedene Nutzende lieferten gute Rückmeldungen, produktiver Einsatz ist nach der Erprobungsphase vorgesehen.
Womöglich übertragbare Patterns#
Mehrere Aspekte könnten für andere Projekte relevant sein: Die Integration von Tiktoken zur Token-Zählung und Visualisierung, die Modularisierung nach Aufgabenbereichen mit klaren Größenlimits, der Fokus auf Spezifikationsqualität vor Implementierung, die aktive Steuerung gegen Over-Engineering.
Eine Erkenntnis für zukünftige Projekte: Zeit in Spezifikation zu investieren erwies sich nicht als Verzögerung, sondern als Beschleunigung der Gesamtentwicklung.
Dies ist Teil einer Dokumentationsserie über methodische Erkenntnisse aus LLM-gestützten Entwicklungsprojekten. Der Fokus liegt auf womöglich übertragbaren Patterns und Limitierungen, nicht auf den entwickelten Tools selbst.