Powrót do strony głównej

Dokładna arytmetyka LLM poprzez kod

Artykuł opisuje metodę dokładnych obliczeń w LLM poprzez generowanie i wykonywanie kodu Python w piaskownicy Docker. Omawiana architektura, typowe problemy i rozwiązania dla zadań takich jak obliczanie opłat komunalnych i analiza kosztorysów. Osiąga się 100% dokładność arytmetyczną.

LLM bez błędów w obliczeniach: generujemy kod
Advertisement 728x90

Dokładna arytmetyka w LLM: generowanie wykonywalnego kodu

LLM nie są przeznaczone do precyzyjnych obliczeń: architektura Transformer przewiduje tokeny na podstawie prawdopodobieństw, a nie wykonuje działań matematycznych. Zapytanie o mnożenie 18 × 38,76 może dać wynik 697,68 lub błąd typu 680 z powodu przybliżeń wzorców z danych treningowych. To systemowe ograniczenie, a nie degeneracja modelu.

Rozwiązanie: wykluczyć LLM z obliczeń. Model generuje skrypt w Pythonie dla zadania — kod jest uruchamiany w izolowanej środowisku. Python zapewnia dokładność: 18 * 38,76 zawsze daje 697,68.

Architektura systemu

Przepływ przetwarzania: użytkownik → LLM → skrypt Pythona → kontener Docker → wynik (tekst + Excel).

Google AdInline article slot

Przykład obliczenia rachunków za komunalne (Tomsk):

  • Użytkownik: «Woda zimna 320, woda ciepła 229, prąd 7422, poprzednie: WZ 302, WC 222, prąd 7133».
  • LLM z systemowym promptem (stawkę z konfiguracji) generuje skrypt.
  • Skrypt oblicza zużycie, stosuje stawki, tworzy tabelę.
  • Uruchomienie w piaskownicy, zwracanie pliku.

Uproszczony wygenerowany kod:

# Pokazania liczników
cold_current, cold_prev = 320, 302
hot_current, hot_prev = 229, 222
elec_current, elec_prev = 7422, 7133

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

# Stawki Tomsk 2025 (z konfiguracji, nie z modelu)
tariffs = {
    'cold_water': 38.76,
    'hot_water': 142.63,
    'electricity': 4.94,
    'drainage': 27.04,
}

# Obliczenia
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

# Tworzenie pliku Excel
import openpyxl
wb = openpyxl.Workbook()
ws = wb.active
ws.append(['Usługa', 'Zużycie', 'Stawka, ₽', 'Koszt, ₽'])
ws.append(['Woda zimna', f'{cold_usage} m³', tariffs['cold_water'], cold_cost])
ws.append(['Woda ciepła', f'{hot_usage} m³', tariffs['hot_water'], hot_cost])
ws.append(['Prąd', f'{elec_usage} kWh', tariffs['electricity'], elec_cost])
ws.append(['Odprowadzanie', f'{cold_usage + hot_usage} m³', tariffs['drainage'], drain_cost])
ws.append(['RAZEM', '', '', total])
wb.save('komunalne.xlsx')

Stawki są wstrzykiwane z zewnętrznego pliku konfiguracyjnego aktualizowanego z oficjalnych źródeł. Model nie wymyśla wartości.

Google AdInline article slot

Wybór LLM i piaskownicy

Modele:

  • Qwen (Alibaba): darmowy API, stabilna generacja kodu dla prostych zadań.
  • DeepSeek V3: do złożonych scenariuszy (analiza dokumentów), z cache’em promptów.

GPT-4/Claude są nadmiarowe dla generowania skryptów do 20 linii.

Piaskownica: kontener Docker na żądanie.

Google AdInline article slot
  • Izolacja użytkowników.
  • Podstawowe biblioteki: openpyxl, math, datetime.
  • Limit czasu 30 sekund.
  • Zakaz pandas/numpy w promptach.

Częste problemy i rozwiązania

| Problem | Rozwiązanie |

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

| Halucynacje stawek | Stawki z konfiguracji w prompcie |

| Bezpośrednie obliczenia bez kodu | Walidacja + ponowne z instrukcją «tylko kod» |

| Zajęte znaki w Excelu | encoding='utf-8', walidacja po procesie |

| Brakujące importy | Ograniczenie bibliotek w obrazie i prompcie |

| UX: błędny licznik tokenów | Liczenie po stronie backendu |

| Błędy w kodzie | Zwracanie stderr modelu do iteracyjnej korekty |

Zwracanie stderr w odpowiedzi zmniejsza liczbę iteracji o 5 razy: model analizuje traceback i poprawia kod.

Rozszerzenia: analiza kosztorysów

Do sprawdzania kosztorysów (plik Excel, miasto): model generuje 150–200 linii kodu.

  • Parsowanie dowolnej struktury.
  • Porównanie z cenami rynkowymi z konfiguracji.
  • Wykrywanie błędów arytmetycznych.
  • Raport z kolorową wizualizacją (openpyxl).

Przykład: kosztorys remontu łazienki (Tomsk) — nadwyżka 25,9%, 8 pozycji >50%, różnice 1–4 zł.

Co jest ważne

  • Arytmetyka 100% dokładna: wykonuje się w Pythonie.
  • Stawki z danych zewnętrznych, nie z modelu.
  • Piaskownica obowiązkowa dla bezpieczeństwa.
  • Iteracje z stderr przyspieszają debugowanie.
  • Skalowalne: aktualizacja konfiguracji bez ponownego uczenia.

— Editorial Team

Advertisement 728x90

Czytaj dalej