Eksperyment z AI: oceniacz trudności pytań i wybór modelu w ollama
Moje plany dotyczące projektu związanego z benchmarkiem KLEJ są wciąż rozwijane, ale w międzyczasie przeprowadziłem bardzo ciekawy eksperyment z AI. Poprosiłem model językowy, żeby pomógł mi napisać program, który po podaniu zapytania ocenia jego trudność (na podstawie prostych heurystyk) i następnie wybiera odpowiedni mały model LLM (za pomocą ollama), aby wykonać zadanie.
Idea
Pomysł był prosty:
- Zmierzyć złożoność zapytania (
wc– liczba linii, słów, znaków). - Na podstawie tych danych użyć lekkiej regresji (np. ze
scikit-learn), aby przewidzieć, który model będzie najlepszy kompromis między jakością a szybkością. - Wykonać zapytanie w
ollama, zmierzyć czas i poprosić użytkownika (czyli mnie) o ocenę jakości. - Zapisywać dane i retrenować regresor w trybie iteracyjnym.
Brzmi dość abstrakcyjnie? A jednak działa.
Przebieg eksperymentu
Całość robiłem w dialogu z modelem Gemini Flash 2.5, z którym rozmawiałem przez mój własny program chater.py. Ten program działa w terminalu Linuksa, opiera się na modułach cmd2 i rich, więc interakcja wygląda podobnie jak w powłoce systemowej, tylko że z AI.
W toku rozmowy poprosiłem model, żeby napisał cały kod. I faktycznie – od początku do końca powstał działający zestaw skryptów i programów:
regression.py– program w Pythonie, który trenuje regresory i wykonuje predykcje,init_train_data.sh– generator wstępnych danych do treningu (z wymyślonymi zadaniami i ocenami jakości),ask.sh– główny skrypt użytkownika, który przyjmuje zadanie, przewiduje trudność i wybiera model.
Model nie tylko zaproponował strukturę, ale też poprawiał kod krok po kroku, gdy coś nie działało. Były błędy, były poprawki, była iteracja – czyli dokładnie ten proces dialogowego, iteracyjnego programowania, który najbardziej mnie interesował.
Efekt
Ostatecznie powstał system, który faktycznie:
- potrafi ocenić trudność zapytania,
- wybrać model na podstawie przewidywanej jakości i czasu,
- wykonać zadanie w
ollama, - zebrać dane o rzeczywistym czasie i jakości,
- a następnie sam się douczać po każdej interakcji.
Czy to praktyczny system produkcyjny? Nie – to raczej zabawka. Ale dokładnie o to chodziło: pokazać, jak można w trybie dialogowym stworzyć od zera dość złożony, działający program, w oparciu o prosty opis i kolejne interakcje z AI.
Do tego dochodzi aspekt filozoficzny: mój mały laptop, lokalne modele i prosty skrypt – a jednak działa to jak jakiś super-wieloagentowy system. W duchu mojego hasła „Transformer Dla Ubogich”.
Co dalej?
Eksperyment otworzył mi głowę na kilka nowych pomysłów:
- bardziej zaawansowany wybór modelu (np. w zależności od rodzaju zadania),
- dodanie pamięci i historii,
- testowanie większej liczby modeli w
ollama, - może nawet „auto-tuning” kryteriów wyboru.
Zobaczymy, co z tego wyniknie. Na razie cieszę się, że całość udało się doprowadzić do działającego prototypu.
PS
Żeby było ciekawiej – ten artykuł nie został napisany przeze mnie. Całość napisało AI (ChatGPT), na podstawie moich notatek i historii rozmowy z Gemini. Tak więc jest to trochę meta-eksperyment: AI opisuje eksperyment, w którym AI pisało kod 🙂
Notatka od redaktora (ChatGPT)
Ten tekst powstał w całości na podstawie materiałów dostarczonych przez Marka – w szczególności pliku oceniacz.yaml, zawierającego historię jego rozmów z modelem Gemini Flash 2.5. Moim zadaniem było ułożenie z tego spójnego artykułu w formacie Markdown, tak aby pasował do jego bloga/programistycznych notatek.
Mam nadzieję, że czytelnicy znajdą w tym inspirację – bo nawet „poważne” projekty zaczynają się często od takich zabawkowych prototypów.
Kod źródłowy
Całość kodu, który powstał w ramach tego eksperymentu, jest dostępna w moim repozytorium na GitHubie:
👉 github.com/marcusfirmus/oceniacz
Najważniejsze pliki: - regression.py – logika trenowania i predykcji, - init_train_data.sh – generowanie danych treningowych, - ask.sh – główny skrypt użytkownika.