Datenvisualisierung mit KI: Wenn der Computer Code schreibt, statt selbst zu rechnen#
In dieser Serie berichten wir über praktische Experimente mit Künstlicher Intelligenz in der Softwareentwicklung.
Diesmal geht es um ein Tool zur automatischen Datenvisualisierung in Form von Charts. Das Besondere: Die KI rechnet nicht selbst, sondern schreibt Python-Code, der dann die Charts erzeugt.
Was war die Idee?#
KI-Modelle können oft nur schlecht mit Zahlen umgehen und produzieren häufig Rechenfehler.
Wir wollten herausfinden, ob es einen besseren Weg gibt. Die Idee: Die KI soll keinen direkten Kontakt zu den Zahlen haben. Stattdessen schreibt sie Python-Code (z. B. mit Pandas, Plotly, NumPy), der dann in einer sicheren Umgebung ausgeführt wird.
Das Ziel war ganz pragmatisch: Ein Tool entwickeln, das bei der Auswahl passender Diagramme schnell hilft und einfache Visualisierungen weitgehend automatisch erstellt. Die KI sollte verstehen, was die Nutzenden möchten, und dann den entsprechenden Code generieren.
Was kann das Tool?#
Wir haben einen „Interactive Chart Generator" entwickelt. Das Tool kann:
Verschiedene Dateiformate verarbeiten: Es akzeptiert CSV- und Excel-Dateien, auch solche mit mehreren Tabellen-Blättern (Multi-Sheet-Unterstützung)
Interaktive Grafiken erstellen: Mit der Plotly-Bibliothek werden professionelle, interaktive Diagramme erstellt (z. B. Balkendiagramme, Zeitreihen, Scatterplots)
Natürliche Sprache verstehen: Man schreibt einfach „Erstelle Balkendiagramme für alle Sheets" oder „Färbe die Balken grün für positive Werte", und das Tool versteht, was gemeint ist
Mit lokalen KI-Modellen arbeiten: Das System nutzt lokale KI-Modelle über eine OpenAI-kompatible Schnittstelle – die Daten bleiben also auf dem eigenen Server
Das Tool hat eine einfache Web-Oberfläche (basierend auf Gradio), sodass keine Programmierkenntnisse nötig sind.
Wie wurde es entwickelt?#
Die Entwicklung erfolgte in drei Hauptphasen, mit KI-Unterstützung:
Version 1 – Erster Versuch (instabil)
Wir starteten mit zwei KI-Agenten: einem Chat-Agenten für die Kommunikation und einem Chart-Agenten für die Grafik-Erstellung. Das Problem: Das System konnte nicht zuverlässig unterscheiden, wann Nutzende nur diskutieren möchten und wann Grafiken erstellen oder verändert werden sollen. Die Fehlerquote war zu hoch.
Version 2 – Intent-Erkennung hinzugefügt
Wir führten einen dritten Agenten ein: den IntentService. Dieser analysiert jede Nutzeranfrage und klassifiziert sie in Kategorien (z. B. „Modifikation einer bestehenden Grafik", „Einzelne Grafik erstellen", „Mehrere Grafiken erstellen", „Nur Analyse der Daten", “Diskussion passender Visualisierungen”).
Dieser Ansatz verbesserte die Genauigkeit erheblich.
Version 3 – Dreistufiger Workflow (finale Version)
Wir entwickelten einen klaren Dreischritt: Intent → Plan → Execute
- Intent-Erkennung: Was ist die Absicht der Nutzenden? (z. B. „Alle Sheets visualisieren")
- Planung: Der
PlanServiceerstellt einen detaillierten Ausführungsplan mit konkreten Spezifikationen für jede Grafik - Ausführung: Der
ExecutionServiceführt den Plan aus, mit automatischer Fehlerkorrektur wenn etwas schiefgeht
Entwicklungszeit: (ca. 60 Minuten pro Version)
- Spezifikationen schreiben: Detaillierte Beschreibung der Architektur, des UI-Designs und der Funktionen
- Implementierung: Die KI programmiert basierend auf der Spezifikation
- Anpassungen und Tests: Fehler beheben und verbessern
- Docker-Deployment (30 Minuten): Das Tool für andere nutzbar machen
- Gesamtzeit: Etwa 3-4 Stunden für alle drei Versionen zusammen
Ergebnis: Ein System mit ca. 8.500 Zeilen Code verteilt auf 27 Python-Dateien.
Warum lief es so gut?#
Der Schlüssel war die Kombination aus KI-Intelligenz und bewährten Code-Mustern.
Reine Code-Generierung durch die KI war zu instabil. Wir haben deshalb eine umfangreiche Bibliothek mit 44 Code-Patterns entwickelt. Die KI wählt nicht mehr frei, sondern aus bewährten Mustern (z. B. PATTERN_SIMPLE_BAR für einfache Balkendiagramme, PATTERN_TIME_SERIES_GROUPED für gruppierte Zeitreihen).
Diese Bibliothek umfasst:
- 23 funktionierende Implementierungsmuster für verschiedene Diagrammtypen
- 7 Anti-Patterns: Dinge, die die KI vermeiden soll, weil sie instabil sind
- 9 Modifikationsmuster für Anpassungen wie Farben oder Beschriftungen
- 5 semantische Muster für intelligente Auswahl basierend auf Datentypen
Die KI interpretiert, was Nutzende möchten, wählt das passende Muster aus und passt es an die konkreten Daten an. Dieser Hybrid-Ansatz funktioniert deutlich besser als reine Code-Generierung.
Wichtige Erkenntnisse#
1. Gute Planung schlägt schnelles Programmieren
Wir haben für jede Version erst eine ausführliche Spezifikation geschrieben (ca. 60 Minuten), bevor die KI mit der Programmierung begann.
Das ist viel besser als „Micro-Prompting" – also der KI immer wieder kleine Anweisungen zu geben. Bei Micro-Prompting wird der Code fragmentiert und inkonsistent. Mit einer klaren Spezifikation bleibt alles strukturiert und wartbar.
Die Spezifikationen enthielten: technische Architektur (welche Komponenten gibt es?), UI-Design (wie sieht die Oberfläche aus?), Interaktionen zwischen Komponenten (wer kommuniziert mit wem?) und funktionale Ziele (was soll am Ende rauskommen?).
2. Phasentrennung macht komplexe Systeme beherrschbar
Die Trennung in Intent → Plan → Execute hat sich bewährt:
- Die Intent-Erkennung unterscheidet klar zwischen Diskussion und Aktion
- Die Planungsphase erstellt eine strukturierte Ausführungsstrategie
- Die Ausführung kann Fehler isoliert behandeln
So bleibt jede Phase testbar und verständlich. Wenn etwas schiefgeht, wissen wir genau, in welcher Phase der Fehler liegt.
3. KI-Steuerung ist besser als feste Regeln
Wir haben beide Ansätze getestet: regel-basierte Heuristiken (z. B. „Wenn das Wort ‘alle’ vorkommt, erstelle mehrere Grafiken") und KI-gesteuerte Verarbeitung.
Die KI ist überlegen, weil sie besser generalisiert. Heuristiken funktionieren nur für sehr spezifische Formulierungen. Die KI versteht auch „Zeige mir Diagramme für sämtliche Tabellen-Blätter" oder „Ich brauche eine Übersicht aller Sheets" – ohne dass wir jede Variante programmieren müssen.
Was können andere davon lernen?#
Aus diesem Projekt lassen sich mehrere Prinzipien ableiten:
Code-Indirektion für numerische Aufgaben: Wenn die KI mit Zahlen arbeiten soll, lass sie Code schreiben statt selbst zu rechnen. Das ist zuverlässiger (z. B. bei Datenanalyse, Berechnungen, Visualisierungen)
Pattern-Bibliotheken stabilisieren Code-Generierung: Gib der KI bewährte Muster vor, statt sie frei generieren zu lassen. Das reduziert Fehler erheblich und macht die Ergebnisse vorhersehbarer
Spezifikationsgetrieben statt micro-iterativ entwickeln: Investiere Zeit in eine gute Spezifikation (60-90 Minuten), bevor die KI programmiert. Das spart Zeit bei der Fehlerkorrektur und führt zu besserem Code
Multi-Agenten-Systeme für komplexe Aufgaben: Teile komplexe Probleme in spezialisierte Agenten auf (z. B. Intent-Erkennung, Planung, Ausführung). Jeder Agent hat eine klare Verantwortung
Fehlerkorrektur mit Kontext: Wenn Code fehlschlägt, gib der KI die Fehlermeldung zurück und lass sie den Code korrigieren. Unsere
fix_code()Methode reduzierte Fehler spürbarLokale KI-Modelle sind nutzbar: Man braucht nicht immer die größten Cloud-Modelle. Lokale Modelle können mit den richtigen Hilfsmitteln (wie Pattern-Bibliotheken) gute Ergebnisse liefern
Fazit#
✔ Code-Generierung ist ein vielversprechender Weg, um KI-Schwächen bei numerischen Aufgaben zu umgehen – die KI schreibt den Code, der Computer führt ihn aus
✔ Gute Planung und klare Spezifikationen sind wichtiger als schnelles Iterieren – Zeit in die Vorbereitung zu investieren zahlt sich aus
✔ Pattern-Bibliotheken machen KI-generierte Lösungen stabiler und vorhersehbarer – der Hybrid-Ansatz aus KI-Intelligenz und bewährten Mustern funktioniert besser als reine Generierung
Status: Das Tool befindet sich derzeit in der Erprobungsphase mit einem breiteren Nutzerkreis. Erste Tests mit verschiedenen Excel-Dateien (inklusive komplexer Multi-Sheet-Strukturen) verliefen erfolgreich. Weiteres Feedback wird zeigen, wo noch Verbesserungen nötig sind.
Dies ist Teil einer Reihe über Erfahrungen mit KI-gestützter Softwareentwicklung. Der Fokus liegt darauf, was man aus solchen Projekten lernen kann – nicht nur auf den fertigen Tools.