🤖 LLM Test – KI-Chat & CSV-Analyse mit lokalem Large Language Model

Python-basierte Desktop-Anwendung mit Ollama-Integration für KI-gestützten Chat und automatisierte Datenanalyse mit Excel-Export

PythonTkinterOllamaLlama 3.1Excel

🚀 Bereit für KI-gestützte Prozessautomatisierung?

Vereinbaren Sie ein unverbindliches Strategiegespräch

📞 02406 803 7603 ✉️ info@computerkumpel.de

📊 Business Value

Diese KI-gestützte Desktop-Anwendung kombiniert lokales LLM-Chatting mit automatisierter CSV-Datenanalyse. Ohne Cloud-Abhängigkeit werden Rohdaten in auswertbare Excel-Reports mit dynamischen Diagrammen transformiert – datenschutzkonform und offline-fähig.

🧠
Lokale KI
Llama 3.1 läuft vollständig lokal via Ollama. Keine Daten verlassen Ihren Rechner – maximale Datensouveränität und DSGVO-Konformität.
📈
Auto-Diagramme
Die KI analysiert CSV-Datenstrukturen und generiert automatisch passende Diagrammtypen (Balken, Linie, Kreis, Scatter) in einer Excel-Arbeitsmappe.
💾
Chat-Verlauf
Vollständige Chat-Historie mit Speicherung als JSON und Export als formatierte Word-DOCX-Dateien mit Markdown-Rendering.

💻 Technische Architektur

Die Anwendung nutzt ein modernes Tkinter-GUI mit integriertem Markdown-Rendering und asynchroner LLM-Kommunikation.

🐍
Python + Tkinter
Native Desktop-GUI mit eigenem Markdown-Textwidget. Responsive Oberfläche mit asynchronen API-Calls über Threading.
🦙
Ollama API
Direkte HTTP-Requests an die lokale Ollama-API (Port 11434). Volle Kontrolle über Modell-Parameter wie Temperature und Streaming.
📊
openpyxl + pandas
Datenverarbeitung mit pandas, Excel-Export mit openpyxl inkl. Summenberechnungen und positionierten Diagrammen.

📝 Echte Code-Snippets

Direkt aus dem Produktivcode – zeigt die Kommunikation mit dem lokalen LLM:

def local_llm_request(self, message):
    payload = {
        "model": "llama3.1:8b",
        "messages": [
            {"role": "system", "content": "Du bist ein hilfreicher Assistent."},
            {"role": "user", "content": message}
        ],
        "stream": False,
        "temperature": 0.7
    }
    response = requests.post(
        'http://naqyjszq76619li0.myfritz.net:11434/api/chat', 
        json=payload, timeout=None
    )
    response_data = response.json()
    if 'message' in response_data and 'content' in response_data['message']:
        return response_data['message']['content']
    return "Keine gültige Antwort vom Modell"

Automatische Diagramm-Generierung aus KI-Vorschlägen:

def create_charts(self, ws, df, diagram_suggestions):
    for chart in diagram_suggestions['charts']:
        if chart['type'] == "BarChart":
            self.add_bar_chart(ws, df, chart)
        elif chart['type'] == "LineChart":
            self.add_line_chart(ws, df, chart)
        elif chart['type'] == "PieChart":
            self.add_pie_chart(ws, df, chart)
        elif chart['type'] == "ScatterChart":
            self.add_scatter_chart(ws, df, chart)

Markdown-Widget mit eigenem Tkinter-Tag-System:

class MarkdownTextWidget(tk.Text):
    def __init__(self, master, **kwargs):
        super().__init__(master, **kwargs)
        self.tag_configure("code", foreground="blue", background="#f0f0f0")
        self.tag_configure("bold", font=("Helvetica", 10, "bold"))
        self.tag_configure("heading1", font=("Helvetica", 16, "bold"))

    def render_markdown(self, markdown_text):
        html = markdown2.markdown(markdown_text, extras=['tables', 'fenced-code-blocks'])
        self.configure(state='normal')
        self.delete('1.0', tk.END)
        self._render_html(html)
        self.configure(state='disabled')

🔧 Technologie-Stack

Python 3 Tkinter Ollama Llama 3.1 pandas openpyxl markdown2 python-docx threading

🚀 Kernfunktionen