System Ewaluacji LLM i Aplikacja Kulinarna
Dwukomponentowy projekt łączący Framework Ewaluacji LLM (Python, 19 plików, 50 przypadków testowych) z aplikacją mobilną ZjemTo (React Native, 29 ekranów). System wykrywa halucynacje AI, obsługuje modele GPT-4o, Claude i polski Bielik. Zawiera wielowarstwowy system ochrony przed halucynacjami: Judge System, walidację Bielik, Polish Guard i lokalną bazę ~48 przepisów.
Spis treści
- v1.01 — Kwantyzacja Bielika na iPhone
- Opis projektu
- Architektura systemu
- LLM Evaluation Framework
- Aplikacja ZjemTo
- System walki z halucynacjami
- Modele AI i ich odpowiedzialności
- Architektura aplikacji ZjemTo
- Endpointy API serwera
- Badania ewaluacji
- Kluczowe odkrycia techniczne
- Główne funkcje aplikacji
- Przechowywanie danych
- Plany na przyszłość
- Podsumowanie
v1.01 — Kwantyzacja Bielika na iPhone
Status: w fazie badań i planowania
Problem: Chmura przy skalowaniu zabija indie-projekt kosztami, a self-host oznacza kolejki przy większej liczbie użytkowników. Decyzja: model musi działać lokalnie na urządzeniu z ≥ 8 GB RAM (iOS).
Kwantyzacja: IQ2_XXS vs IQ3_XXS
| Wariant | Rozmiar | Zalety | Ryzyka |
|---|---|---|---|
IQ2_XXS | ~3.1 GB | Więcej luzu pamięciowego na iPhone 8 GB | Przy 2 bitach model może stracić zdolność wnioskowania z rozmytych opisów |
IQ3_XXS | ~3.8 GB | Znacząco lepsza jakość (skok między 2 a 3 bitami jest duży) | Ciasno — KV cache + iOS overhead mogą powodować OOM |
Custom IMatrix na polskiej kuchni
Kalibracja IMatrix na tekstach domenowych zamiast standardowego wikitext:
- Teksty historyczne (np.
Compendium Ferculorum) - Przepisy regionalne
- Dane syntetyczne z polskiej kuchni
Cel: IMatrix określa ważność (importance) poszczególnych wag — kalibracja na polskiej kuchni pozwala zachować precyzję w wagach najistotniejszych dla tej domeny.
Architektura hybrydowa (rozważana)
Input od użytkownika → lekki model w chmurze (np. GPT-4o-mini) → oczyszczony input → Bielik IQ2/IQ3 na telefonie.
| Aspekt | Online (hybryd) | Offline (pełny local) |
|---|---|---|
| Koszt | Niższy niż hosting pełnego Bielika | Zero |
| Jakość | Wyższa (preprocessing chmurowy) | Zależna od kwantyzacji |
| Dostępność | Wymaga internetu | Zawsze |
Lokalna baza SQLite
Zabezpieczenie na wypadek gdy model skwantyzowany zawiedzie — lokalna baza przepisów jako fallback.
Otwarte pytania
- Jak Bielik 11B wypada w kwantyzacji IQ2_XXS/IQ2_XS? Czy zachowuje spójność?
- Czy architektura Depth Up-Scaling (Mistral) znosi agresywną kwantyzację?
- Czy mniejszy model (np. 7B przy Q4_K_M) nie da lepszych wyników niż 11B przy IQ2?
Opis projektu
Dwukomponentowy projekt łączący:
- LLM Evaluation Framework — System ewaluacji modeli językowych do ekstrakcji i generowania przepisów kulinarnych
- ZjemTo — Aplikacja mobilna React Native do odkrywania polskich i międzynarodowych przepisów z wykorzystaniem AI
Projekt zawiera ~150 plików źródłowych, 50 przypadków testowych oraz zaawansowane mechanizmy wykrywania i zapobiegania halucynacjom AI.
Architektura systemu
├── llm-eval-framework/ # System ewaluacji Python │ ├── config/config.yaml # Główna konfiguracja │ ├── src/ # Moduły ewaluacji (19 plików Python) │ │ ├── models/ # Runnery modeli AI │ │ ├── judge/ # Wykrywanie halucynacji │ │ ├── eval/ # Pipeline ewaluacji │ │ ├── report/ # Generowanie raportów │ │ └── utils/ # Cache, logowanie │ ├── data/eval_cases/ # 50 przypadków testowych │ ├── results/ # Wyniki ewaluacji │ └── tests/ # Testy jednostkowe │ ├── ZjemTo/ # Aplikacja React Native │ ├── src/ │ │ ├── screens/ # 29 ekranów aplikacji │ │ ├── services/ # Warstwa integracji AI │ │ ├── components/ # 50+ komponentów UI │ │ ├── data/ # Przepisy, dane historyczne │ │ └── config/ # Konfiguracja API │ ├── server/ # Backend Express (proxy AI) │ └── package.json │ ├── semantic_cache.py # Narzędzie cache Redis └── README.md
LLM Evaluation Framework
1. Model Runners (src/models/)
| Plik | Opis |
|---|---|
base.py | Abstrakcyjna klasa ModelRunner definiująca interfejs extract/generate |
openai_runner.py | Obsługa GPT-4o, GPT-4, GPT-4o-mini |
claude_runner.py | Obsługa Claude Sonnet i Haiku |
bielik_runner.py | Lokalny model Bielik przez Ollama z walidacją |
2. Pipeline ewaluacji (src/eval/)
| Plik | Opis |
|---|---|
eval_runner.py | Główny orkiestrator (258 linii) |
extraction.py | Ekstrakcja OCR→JSON z walidacją |
generation.py | Generowanie JSON→przepis po polsku |
3. Wykrywanie halucynacji (src/judge/)
| Plik | Opis |
|---|---|
judge_runner.py | Ewaluacja przez GPT-4o (225 linii) |
prompts.py | Trzy fazy promptów sędziego |
4. Raporty (src/report/)
| Plik | Opis |
|---|---|
report_generator.py | Obliczanie metryk, eksport CSV/Markdown |
visualizations.py | Wykresy matplotlib/seaborn |
Dane testowe
50 przypadków ewaluacyjnych podzielonych na 3 okresy:
| Okres | Ilość | Charakterystyka |
|---|---|---|
| Modern | 20 | Współczesne przepisy |
| Traditional | 18 | Klasyczne polskie, czasem niekompletne |
| Historical | 12 | Archaiczny język, adversarial |
Aplikacja ZjemTo
Architektura sieciowa
Telefon (Expo Go) → Serwer Express (port 3001) → Ollama (port 11434) dla Bielik
→ OpenAI API dla trybu WorldGłówne ekrany (29 łącznie)
| Ekran | Funkcja |
|---|---|
HomeScreenPremium | Główny hub z przełącznikiem Bielik/World |
TraditionalRecipesScreen | Polskie przepisy ze składników |
RecreateTasteScreen | Opis potrawy → AI identyfikuje |
RegionsScreen | 16 polskich województw |
HistoricalRecipesScreen | 6 epok historycznych |
CookingModeScreen | Krok po kroku z timerami |
CameraScreen | Zdjęcie lodówki |
PlateScoreScreen | Analiza wartości odżywczych |
ReceiptScannerScreen | OCR paragonów |
SwipeDiscoveryScreen | Przepisy w stylu Tinder |
Serwisy AI (src/services/)
| Serwis | Funkcja |
|---|---|
bielikService.js | Główna integracja polskiego AI |
LocalBielikService.js | Bezpośrednie połączenie z Ollama |
Endpointy Express (server/server.js)
| Endpoint | Metoda | Opis |
|---|---|---|
/health | GET | Sprawdzanie zdrowia serwisu |
/api/analyze-image | POST | Analiza obrazu przez GPT-4o Vision |
/api/generate-recipe | POST | Generowanie przepisu |
/api/traditional-recipe | POST | Polskie przepisy przez Bielik |
/api/identify-dish | POST | Rozpoznawanie potrawy |
/api/historical-recipe | POST | Przepisy historyczne |
System walki z halucynacjami
Halucynacje AI to sytuacje gdy model wymyśla informacje, których nie było w źródle. W kontekście przepisów kulinarnych może to oznaczać:
- Dodawanie składników których nie było w oryginalnym tekście
- Wymyślanie czasów/temperatur gotowania
- Tworzenie kroków przygotowania z powietrza
- Używanie współczesnych składników w przepisach historycznych (anachronizmy)
Warstwa 1: Wykrywanie przez sędziego (Judge System)
Typy halucynacji wykrywane:
| Typ | Opis | Przykład |
|---|---|---|
ingredient | Wymyślone składniki | Dodanie szafranu gdy nie było w OCR |
quantity | Zmyślone ilości | 200g gdy nie podano ilości |
step | Sfabrykowane kroki | Wymyślenie marynowania przez noc |
time | Wymyślone czasy | Piecz 45 minut bez podstawy |
temperature | Zmyślone temperatury | 180°C gdy nie podano |
tool | Sprzęt niepoważny | blender w przepisie z XIX wieku |
context | Dodane tło | Wymyślona historia potrawy |
historical_anachronism | Anachronizmy | mikrofała w średniowiecznym przepisie |
Klasyfikacja wagi:
| Waga | Kara punktowa | Przykłady |
|---|---|---|
HIGH | -20 pkt | Nowe składniki, wymyślone kroki, czasy/temperatury bez dowodu, anachronizmy |
MEDIUM | -10 pkt | Wnioskowane ilości bez dowodu, drobne ubarwienia |
LOW | -3 pkt | Zmiany stylistyczne bez dodawania faktów |
System oceniania:
Początkowa ocena: 100 punktów Odejmij: HIGH × 20, MEDIUM × 10, LOW × 3 Minimalna ocena: 0 WERDYKT: - FAIL: Jakakolwiek halucynacja HIGH - WARN: >=3 halucynacje MEDIUM LUB ocena < 70 - PASS: Ocena >= 70 I brak HIGH I < 3 MEDIUM
Warstwa 2: Walidacja Bielik (validate_extraction)
Specjalna walidacja po ekstrakcji dla modelu Bielik (~97 linii kodu):
- Dopasowanie rdzeni polskich — obsługuje odmianę (
cebula→cebule→cebuli) - Usuwanie składników — które nie są śledzalne do źródła OCR
- Walidacja ilości — sprawdzanie czy podane wartości mają pokrycie
- Podejście konserwatywne — usuwa tylko gdy BRAK znaczących dopasowań
- Logowanie — wszystkie usunięte elementy są zapisywane do debugowania
Warstwa 3: Polish Guard (aplikacja ZjemTo)
Wielowarstwowy system strażnika zapobiegający halucynacjom kulturowym w trybie Bielik:
- Baza ~48 polskich potraw do walidacji
- Lista ~70 zabronionych dań obcych: sushi, pizza, pasta, ramen, taco, burrito, curry, pad thai, paella, risotto, lasagne, quiche, croissant, shakshuka, gnocchi, ravioli, schnitzel...
- Test babci: Czy babcia z lat 80-tych mogłaby to ugotować? NIE → ODRZUĆ
- Auto-korekcja: jeśli model zasugeruje obce danie, podmiana na Kotlet schabowy z ziemniakami
Mapowanie składników na polskie potrawy:
| Składnik | Dozwolone (PL) | Zakazane (zagraniczne) |
|---|---|---|
| Ziemniaki | Placki, Kopytka, Pyzy | Rösti, Gnocchi, Frites |
| Jajka | Jajecznica, Jajka w koszulce | Shakshuka, Omelette |
| Śmietana | Placki ze śmietanaą | Quiche, Crème fraîche |
| Kapusta | Bigos, Gołąbki | Sauerkraut, Coleslaw |
Warstwa 4: Sekcje FORBIDDEN w promptach
Każdy prompt ekstrakcyjny i generacyjny zawiera jawne zakazy:
Ekstrakcja (OCR → JSON):
- Zakaz dodawania składników które powinny być (sól, woda, olej)
- Zakaz zgadywania czasów gotowania
- Zakaz dodawania narzędzi niewymienonych w źródle
- Zakaz konwersji lub zaokrąglania ilości
Generacja (JSON → przepis):
- Zakaz wymyślania składników spoza JSON
- Zakaz wymyślania czasów i temperatur
- Zakaz sugestii podania
- Zakaz dodawania kontekstu historycznego
Przepisy historyczne:
- NIGDY: mikser elektryczny, blender, robot kuchenny, lodówka, zamrażarka, mikrofalówka, kuchenka indukcyjna, termomix, multicooker, airfryer
Warstwa 5: Walidacja alergenów (AllergenGuardian)
- 13 kategorii alergenów: gluten, nabiał, orzechy, jaja, ryby, owoce morza, soja, seler, musztarda, sezam, siarczyny, łubin
- Filtrowanie przepisów po alergiach użytkownika
- AI-powered zamienniki składników (GPT-4o)
Warstwa 6: Lokalna baza zapasowa
200+ gotowych polskich przepisów w localDishDatabase (linie 462-809). Używana gdy AI zawiedzie lub timeout. Zawiera: Bigos, Żurek, Pierogi, Gołąbki, Placki... Gwarantuje że użytkownik zawsze coś dostanie.
Parametry modeli minimalizujące halucynacje
| Model | Temperature | Top_p | Cel |
|---|---|---|---|
| Bielik (ewaluacja) | 0.1 | 0.7 | Maksymalna precyzja |
| Bielik (ZjemTo) | 0.3 | 0.8 | Precyzja z lekką kreatywnością |
| GPT-4o (sędzia) | 0.0 | — | Deterministyczna ocena |
| GPT-4o (World) | 0.7 | — | Większa kreatywność |
Modele AI i ich odpowiedzialności
Modele w Framework ewaluacji
| Model | Dostawca | Zastosowanie | Uwagi |
|---|---|---|---|
| gpt-4o | OpenAI | Ekstrakcja, generowanie, SĘDZIA | Główny model ewaluacji |
| gpt-4 | OpenAI | Alternatywa | Starszy, droższy |
| gpt-4o-mini | OpenAI | Testy | Tańszy, szybszy |
| claude-sonnet-4-20250514 | Anthropic | Ekstrakcja, generowanie | Wysoka jakość |
| claude-3-5-haiku-20241022 | Anthropic | Ekstrakcja, generowanie | Wydajny |
| bielik-11b-v2.0-instruct | SpeakLeash | Ekstrakcja, generowanie | Lokalny, polski |
Modele w aplikacji ZjemTo
| Model | Tryb | Zastosowanie | Parametry |
|---|---|---|---|
| bielik-11b | Bielik (Polski) | Polskie przepisy tradycyjne, regionalne, historyczne | temp=0.3, max_tokens=2000 |
| gpt-4o | World | Międzynarodowe przepisy | temp=0.7, max_tokens=1500 |
| gpt-4o-mini | — | Remix przepisów, sugestie, generowanie | temp=0.7 |
| gpt-4o-vision | — | OCR przepisów, analiza zdjęć lodówki | — |
Dlaczego te modele?
- Bielik — Polski model, rozumie odmianę, kontekst kulturowy, kuchnię polską
- GPT-4o — Najlepszy jako sędzia, wysoka dokładność oceny
- GPT-4o-mini — Szybszy i tańszy dla prostszych operacji (remix, sugestie)
- Claude — Alternatywa dla porównania, dobra jakość
- GPT-4o Vision — Analiza obrazów (OCR, zdjęcia lodówki)
Architektura aplikacji ZjemTo
┌─────────────────────────────────────────────────────────────┐ │ TELEFON (Expo Go) │ │ │ │ │ ▼ │ │ ┌─────────────────────┐ │ │ │ Express Server │ │ │ │ (port 3001) │ │ │ └──────────┬──────────┘ │ │ │ │ │ ┌───────────────┼───────────────┐ │ │ ▼ ▼ ▼ │ │ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │ │ │ Ollama │ │ OpenAI │ │ OpenAI Vision│ │ │ │ (Bielik) │ │ GPT-4o │ │ GPT-4o │ │ │ │port 11434│ │ GPT-mini │ │ (obrazy) │ │ │ └──────────┘ └──────────┘ └──────────────┘ │ └─────────────────────────────────────────────────────────────┘
3 terminale do uruchomienia:
- Ollama —
ollama serve(Bielik na porcie 11434) - Serwer Express —
node server.js(API na porcie 3001) - Expo —
npx expo start(frontend mobilny)
Endpointy API serwera
| Endpoint | Metoda | Opis |
|---|---|---|
/health | GET | Status serwera |
/api/analyze-image | POST | Analiza zdjęcia lodówki (GPT-4o Vision) |
/api/generate-recipe | POST | Generowanie przepisu (GPT-4o-mini) |
/api/remix-recipe | POST | Remix przepisu z nowymi składnikami |
/api/suggestions | POST | Sugestie przepisów |
/api/traditional-recipe | POST | Polski przepis ze składników (Bielik/OpenAI) |
/api/identify-dish | POST | Rozpoznaj danie z opisu (Bielik/OpenAI) |
/api/historical-recipe | POST | Losowy historyczny przepis |
/api/historical-recipe-detail | POST | Szczegółowy historyczny przepis |
/api/scan-polish-recipe | POST | Zdjęcie → polski przepis |
/api/transcribe-recipe | POST | OCR — odczytanie przepisu ze zdjęcia (GPT-4o) |
/api/cooking-help | POST | Pomoc AI w trybie gotowania |
/api/recipes/store | POST | Przechowywanie przepisów do RAG |
Trzy iteracje badań ewaluacji
BADANIE 1: Baseline (punkt odniesienia)
| Metryka | Wartość |
|---|---|
| Średni wynik | 86.0 |
| PASS | 68% (34/50) |
| WARN | 32% (16/50) |
| FAIL | 0% |
Halucynacje łącznie: 144 (HIGH: 3, MEDIUM: 101, LOW: 40)
Zidentyfikowane problemy:
- Model domyślał się brakujących składników (sól, pieprz, olej)
- Wymyślał konkretne miary przy braku ilości w źródle
- Rozbudowywał instrukcje o dodatkowe kroki
- Dodawał kontekst historyczny mimo braku w źródle
BADANIE 2: Post-fix v1
Zmiany: temperatura 0.0→0.3, format:json włączony, top_p=0.7
| Metryka | Baseline | v1 | Zmiana |
|---|---|---|---|
| PASS | 68% | 68% | 0% |
| Halucynacje | 144 | 149 | +5 |
Wniosek: format:json pomógł ze składnikami (-7), ale temperatura 0.3 za wysoka — model zbyt kreatywny
BADANIE 3: Post-fix v2 (finalna)
Zmiany: temperatura 0.1, repeat_penalty=1.1, sekcje FORBIDDEN, walidacja post-ekstrakcyjna
| Metryka | Baseline | v2 | Zmiana |
|---|---|---|---|
| PASS | 68% | 72% | +4% |
| Halucynacje | 144 | 137 | -7 |
| quantity | 35 | 18 | -17 |
| step | 32 | 18 | -14 |
Sukces: Walidacja rdzeni polskich słów + sekcje FORBIDDEN znacząco zredukowały halucynacje
Kluczowe odkrycia techniczne
Dopasowanie rdzeni polskich słów (stem matching)
Polski język ma bogatą odmianę (deklinację). Jeden składnik może występować w wielu formach:
- cebula / cebule / cebuli / cebulę
- pomidor / pomidora / pomidorów / pomidory
Rozwiązanie: Porównywanie pierwszych 4 znaków po normalizacji diakrytyków:
cebula→cebu✓pomidorów→pomi✓
Efekt: Redukcja fałszywych odrzuceń o ~40%
Kompromis precyzja vs kreatywność
| Temperatura | Efekt |
|---|---|
| 0.0 | Powtarzające się wzorce, nudne |
| 0.1 | Optymalna precyzja dla ekstrakcji |
| 0.3 | Lekka kreatywność dla identyfikacji |
| 0.7+ | Za dużo halucynacji |
Główne funkcje aplikacji
Skanowanie składników (kamera)
Użytkownik fotografuje zawartość lodówki. Obraz w base64 trafia do GPT-4o Vision, który rozpoznaje składniki z poziomem pewności (confidence 0.0-1.0). Na podstawie rozpoznanych składników generowany jest przepis — polski (Bielik) lub międzynarodowy (GPT-4o).
HeritageWizard — digitalizacja przepisów rodzinnych
Pięciokrokowy kreator OCR ręcznie pisanych przepisów:
- Porady dotyczące oświetlenia i czytelności zdjęcia
- Wyjaśnienie procesu
- Zdjęcie przepisu (kamera lub galeria)
- Przetwarzanie: obraz → GPT-4o Vision (OCR) → ekstrakcja tytułu, składników, kroków
- Podgląd przepisu + pole na notatkę rodzinną + zgoda na użycie w bazie dziedzictwa
Timeout OCR: 90 sekund. Obsługa polskich znaków diakrytycznych. Nieczytelne fragmenty oznaczane jako [nieczytelne].
Odtwórz smak (RecreateTaste)
Użytkownik opisuje wspomnienie kulinarne (np. zupa, którą babcia robiła w niedziele z koperkiem i makaronem). Pipeline dwuetapowy:
- Etap 1: GPT-4o-mini (tani, szybki) — ekstrakcja kontekstu: kandydaci na potrawy, składniki kluczowe, okazja, sezon, region, nastrój
- Etap 2: Bielik (lub GPT-4o jako fallback) — generacja pełnego przepisu na podstawie zidentyfikowanej potrawy
Tryb gotowania (CookingMode)
Pełnoekranowy przewodnik krok po kroku:
- Czytanie głosowe (Text-to-Speech, expo-speech)
- Timer z nakładką (domyślnie 5 min)
- Wysuwany panel składników
- Detekcja trudnych kroków (dopasowanie słów kluczowych)
- Chef's Eye — weryfikacja zdjęcia kroku gotowania przez AI
- Przycisk Zapytaj AI — porada kontekstowa per krok
- Nawigacja: Poprzedni / Następny / Zakończ
DishSwiper — odkrywanie potraw w stylu Tinder
Komponenty z gestami (PanResponder): przesuń w prawo = polub, w lewo = pomiń. Animowane stemple LIKE/NOPE, rotacja kart -8° do +8°, stos 2 kart z efektem paralaksy.
Insta-Plate AI — ocena estetyki jedzenia
Zdjęcie potrawy → GPT-4o Vision → wynik 1-10 z analizą: kompozycja, oświetlenie, kolory, prezentacja. Nakładka z siatką złotego podziału (1.618) podczas fotografowania.
Regiony i przepisy historyczne
- 16 województw ze specjalnościami regionalnymi
- 6 okresów historycznych: średniowiecze (przed 1500), renesans (1500-1700), staropolska (1700-1850), przedwojenna (1918-1939), PRL (1945-1989), współczesna (1989+)
- Każdy okres z ograniczeniami składników i technik (np. średniowiecze: bez ziemniaków i pomidorów)
System grywalizacji
- XP: 50 za posiłek + bonusy za wyzwania (+100) i serie (3 dni: +50, 7 dni: +100, 30 dni: +500)
- 5 poziomów: Kuchenny Nowicjusz → Domowy Kucharz → Szef Kuchni → Mistrz Garnków → Legenda Kuchni
- Odznaki ekologiczne: eco_warrior (10kg jedzenia), planet_hero (50kg CO2), food_rescuer (25kg)
- Śledzenie wpływu ekologicznego: 0.3 kg jedzenia uratowanego / posiłek, 2.5 kg CO2 / kg jedzenia
- Dzienne wyzwania kulinarne
Dodatkowe funkcje
- Skaner paragonów — OCR paragonu, śledzenie wydatków
- Inwentarz lodówki — ręczne śledzenie składników
- Lista zakupów — automatycznie generowana z przepisu
- Ustawienia alergenów — 13 kategorii, filtrowanie przepisów, zamienniki AI
- Podgląd AR — augmented reality talerza (expo-ar)
- Udostępnianie przepisów — expo-sharing
Przechowywanie danych
Klient (AsyncStorage)
| Klucz | Dane |
|---|---|
@user_preferences | Tryb (Bielik/World), język |
@allergens | Lista alergenów użytkownika |
@favorite_recipes | Zapisane przepisy |
@cooking_history | Historia gotowania |
@gamification | XP, poziom, odznaki |
Serwer (JSONL)
- Każde zapytanie logowane do
server/logs/YYYY-MM-DD.log - Format: endpoint, model, tokeny, koszt, czas, status
- Przepisy zapisywane do
recipes.jsonl(potencjalny RAG)
Plany na przyszłość
Funkcje w przygotowaniu
- Chef's Eye rozszerzony — AI weryfikuje każdy krok gotowania ze zdjęcia
- Głosowe sterowanie — Następny krok, Powtórz, Timer 5 minut
- Społeczność — udostępnianie przepisów rodzinnych
- RAG na przepisach — wyszukiwanie semantyczne po historii
Rozwój Bielika
- Fine-tuning na polskich przepisach
- Obsługa dialektów regionalnych (śląski, kaszubski)
- Lepsze rozumienie archaicznego języka kulinarnego
Rozwój aplikacji
- Wersja iOS (obecnie tylko Android)
- Tryb offline z lokalnym modelem
- Integracja z lodówkami smart (Samsung, LG)
Jakość ewaluacji
- Automatyczne testy regresji po każdej zmianie
- A/B testing promptów
- Dashboard z metrykami w czasie rzeczywistym
Podsumowanie
| Aspekt | Szczegóły |
|---|---|
| Pliki źródłowe | ~150 |
| Python | 19 plików (framework) |
| JavaScript/React | 124 pliki (ZjemTo + serwer) |
| Przypadki testowe | 50 (modern: 20, traditional: 18, historical: 12) |
| Modele | GPT-4o, GPT-4o-mini, Claude Sonnet/Haiku, Bielik |
| Sędzia | GPT-4o (temp=0.0, JSON mode) |
| Typy halucynacji | 8 (ingredient, quantity, step, time, temperature, tool, context, anachronism) |
| Poziomy ważności | HIGH (-20pkt), MEDIUM (-10pkt), LOW (-3pkt) |
| Polish Guard | ~48 polskich potraw, ~70 zakazanych obcych, AllergenGuardian |
| Endpointy API | 13 |
| Cache | Plikowy z kluczami SHA256 |
| Obsługa błędów | Logowanie, fallback JSON, lokalna baza ~48 przepisów |