Zurück zur Startseite

Präzise LLM-Arithmetik via Code

Der Artikel beschreibt eine Methode für präzise Berechnungen in LLM durch Generieren und Ausführen von Python-Code in einer Docker-Sandbox. Bespricht Architektur, typische Probleme und Lösungen für Aufgaben wie Stromrechnungs-Berechnung und Kostenschätzungsanalyse. Erreicht 100 % arithmetische Genauigkeit.

LLM ohne Fehler in Berechnungen: Code generieren
Advertisement 728x90

Exakte Arithmetik in LLMs: Ausführbaren Code generieren

LLMs sind nicht für präzise Berechnungen konzipiert – die Transformer-Architektur prognostiziert Token basierend auf Wahrscheinlichkeiten, nicht auf mathematischen Operationen. Eine Anfrage wie »18 × 38,76« könnte 697,68 oder sogar einen Fehler wie 680 liefern, da das Modell Muster aus den Trainingsdaten approximiert. Das ist kein Modellversagen, sondern eine systemische Beschränkung.

Lösung: Halte das LLM von direkten Berechnungen fern. Das Modell generiert einen Python-Skript für die Aufgabe, das in einer isolierten Umgebung ausgeführt wird. Python garantiert Genauigkeit: 18 * 38,76 liefert immer exakt 697,68.

Systemarchitektur

Ablauf: Benutzer → LLM → Python-Skript → Docker-Container → Ergebnis (Text + Excel).

Google AdInline article slot

Beispiel: Abrechnung von Nebenkosten (Tomsk):

  • Benutzereingabe: «CW 320, HW 229, electricity 7422, prev: CW 302, HW 222, electricity 7133».
  • LLM mit Systemprompt (Preise aus Konfiguration) generiert ein Skript.
  • Skript berechnet Verbrauch, wendet Tarife an und erstellt eine Tabelle.
  • Ausführung im Sandbox-Umfeld, Datei zurückgegeben.

Vereinfachter generierter Code:

# Zählerstände
cold_current, cold_prev = 320, 302
hot_current, hot_prev = 229, 222
elec_current, elec_prev = 7422, 7133

# Verbrauch
cold_usage = cold_current - cold_prev   # 18 m³
hot_usage = hot_current - hot_prev      # 7 m³
elec_usage = elec_current - elec_prev   # 289 kWh

# Tomsk 2025-Tarife (aus Konfig, nicht vom Modell)
tariffs = {
    'cold_water': 38.76,
    'hot_water': 142.63,
    'electricity': 4.94,
    'drainage': 27.04,
}

# Berechnung
cold_cost = cold_usage * tariffs['cold_water']       # 697.68
hot_cost = hot_usage * tariffs['hot_water']           # 998.41
elec_cost = elec_usage * tariffs['electricity']       # 1427.66
drain_cost = (cold_usage + hot_usage) * tariffs['drainage']  # 676.00

total = cold_cost + hot_cost + elec_cost + drain_cost  # 3799.75

# Excel-Datei erstellen
import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
ws.append(['Dienstleistung', 'Verbrauch', 'Tarif, ₽', 'Betrag, ₽'])
ws.append(['Kaltwasser', f'{cold_usage} m³', tariffs['cold_water'], cold_cost])
ws.append(['Warmwasser', f'{hot_usage} m³', tariffs['hot_water'], hot_cost])
ws.append(['Strom', f'{elec_usage} kWh', tariffs['electricity'], elec_cost])
ws.append(['Abwasser', f'{cold_usage + hot_usage} m³', tariffs['drainage'], drain_cost])
ws.append(['GESAMT', '', '', total])
wb.save('gemeinde.xlsx')

Die Tarife stammen aus einer externen Konfigurationsdatei, die über offizielle Quellen aktualisiert wird – keine Halluzinationen durch das Modell.

Google AdInline article slot

Auswahl des LLMs und der Sandbox

Modelle:

  • Qwen (Alibaba): Kostenlose API, zuverlässige Codeerzeugung für einfache Aufgaben.
  • DeepSeek V3: Für komplexe Szenarien (Dokumentenanalyse), unterstützt Prompt-Caching.

GPT-4/Claude sind für Skripte unter 20 Zeilen überdimensioniert.

Sandbox: Docker-Container on Demand.

Google AdInline article slot
  • Benutzerisolierung.
  • Basisbibliotheken: openpyxl, math, datetime.
  • 30-Sekunden-Timeout.
  • Pandas/numpy sind in Prompts blockiert.

Häufige Probleme und Lösungen

| Problem | Lösung |

|--------|----------|

| Tarif-Halluzination | Tarife aus Konfig in Prompt einfügen |

| Direkte Berechnung ohne Code | Validierung + erneuter Versuch mit Anweisung: »nur Code« |

| Unlesbarer Text in Excel | encoding='utf-8' verwenden, nachträgliche Validierung |

| Fehlende Importe | Bibliotheken in Image und Prompt einschränken |

| UX: falsche Tokenanzahl | Backend-basierte Zählung |

| Code-Fehler | stderr an Modell zurückgeben für iterative Korrekturen |

stderr zurückzugeben reduziert die Iterationen um das Fünffache – Modelle analysieren Tracebacks schneller und beheben Fehler effizienter.

Erweiterungen: Budgetanalyse

Für Budgetüberprüfungen (Excel-Datei, Stadt): Modell generiert 150–200 Zeilen Code.

  • Verarbeitet beliebige Strukturen.
  • Vergleicht mit Marktpreisen aus Konfig.
  • Erkennt arithmetische Fehler.
  • Generiert Berichte mit Farbcodierung (openpyxl).

Beispiel: Renovierung Bad (Tomsk) – Überpreis von 25,9 %, 8 Artikel >50 % über dem Markt, Differenzen von 1–4 Rubel.

Wichtige Erkenntnisse

  • Arithmetik ist 100 % genau: wird über Python ausgeführt.
  • Tarife stammen aus externen Daten, niemals vom Modell.
  • Sandbox ist zwingend für Sicherheit.
  • Iterationen mittels stderr beschleunigen die Fehlersuche.
  • Skalierbar: Konfiguration aktualisieren, ohne Neutrainieren.

— Editorial Team

Advertisement 728x90

Weiterlesen