Przejdź do treści
Kod Zero Kamil Krawiec
Menu

Odcinek kanału YouTube

Zmień Asystenta w SPECJALISTĘ - Potęga Modelfile | Homelab #7

2.11.2025

Twój model jest zbyt ogólny? Zobacz, jak tworzyć dedykowanych agentów za pomocą Modelfile. Rozwiązujemy problemy 'Lost in the middle' i context overflow.

LLM Prompt Engineering Ollama Homelab

YouTube

Film ładuje się dopiero po kliknięciu — bez ciasteczek YouTube przed odtworzeniem.

Otwórz na YouTube →

Notatki do odcinka

Streszczenie i rozwinięcie filmu — dla osób, które wolą najpierw przeskanować temat, zamiast oglądać całość.

Czy lokalny model może przestać być ogólnym czatem i stać się narzędziem do jednego, konkretnego zadania? W tym odcinku buduję takiego asystenta w Ollamie. Punktem wyjścia jest model, który pomaga przy transkrypcjach i rozdziałach czasowych, ale nie zawsze rozumie, czego od niego oczekuję. Zamiast dokładać kolejne instrukcje do każdej rozmowy, sprawdzam, jak przygotować trwałą konfigurację.

Pokazuję połączenie Open WebUI, Modelfile i Dockera. Ważnym tematem jest nie tylko sam prompt, ale też kontekst: transkrypt zabiera dużo miejsca, a lokalny model ma ograniczone okno kontekstowe. Dlatego analizuję konkretne porażki asystenta i szukam sposobu na podział pracy, zanim pomyślę o automatyzacji przez API.

Co zobaczysz

Najpierw porządkuję trzy miejsca, w których można ustawić system prompt w Open WebUI. W Controls da się szybko zmienić zachowanie bieżącej rozmowy. Ustawienia konta pozwalają zdefiniować prompt domyślny, a panel modelu służy do konfiguracji przypisanej konkretnemu modelowi. Ta hierarchia ma znaczenie, bo różne poziomy ustawień mogą wpływać na siebie. Opisuję ją na przykładach i pokazuję kolejność Controls → Account → Model.

Potem przechodzę do Modelfile, czyli pliku, w którym można wskazać bazę przez FROM, zapisać instrukcję w bloku SYSTEM i ustawić parametry odpowiedzi. Omawiam temperature, top_p oraz repeat_penalty. Nie traktuję ich jako magicznych przełączników jakości. To elementy konfiguracji, które trzeba dobierać do zadania. W materiale zwracam też uwagę, żeby zmieniać albo temperature, albo top_p, a nie oba naraz.

Następny krok to zbudowanie asystenta w środowisku Docker. Pokazuję trzyczęściowy przepływ: docker cp, następnie ollama rm || true, a na końcu ollama create -f. Dzięki temu Modelfile trafia do właściwego miejsca, stara wersja nie blokuje odtworzenia, a nowy asystent powstaje z zapisanej konfiguracji.

Kluczowe wnioski

Najważniejszy problem nie polega na tym, że model „nie zna” instrukcji. Czasem instrukcja znajduje się w kontekście razem z tak dużą ilością tekstu, że model traci jej praktyczne znaczenie. Przy zbyt długim wejściu pojawia się context window overflow. Omawiam też zjawisko „lost in the middle”: model może zachować początek i koniec, a gorzej wykorzystać informacje umieszczone pośrodku.

Widać to na przykładzie asystenta do generowania timestamps. Początkowo nazywa mnie „prelegentem”, a przy długich transkryptach pojawia się problem z tym, że nie mam większego kontekstu, bo sam transkrypt zajmuje znaczną część dostępnego miejsca. To nie jest argument za bezrefleksyjnym zwiększaniem ustawień. Najpierw trzeba ograniczyć ilość tekstu, który model musi przetwarzać naraz.

Dlatego tokeny traktuję jak zasób, który trzeba oszczędzać. Pomaga czyszczenie materiału, dzielenie go na części i rozdzielanie zadań. Zamiast prosić jeden prompt o wszystko, można przygotować plan, w którym kolejne etapy mają mniejszy zakres odpowiedzialności. Do liczenia tokenów można użyć OpenAI Tokenizer, zanim prompt lub transkrypt zostanie wysłany.

Modelfile daje trwałość konfiguracji, ale nie rozwiązuje każdego problemu samodzielnie. Jeżeli asystent ma później pobierać pliki, dzielić transkrypcję i pracować bez ręcznego kopiowania, kolejnym krokiem jest watcher połączony z API. Ten odcinek kończy się właśnie na tym planie: najpierw stabilny specjalista, potem automatyzacja.

Jak to odtworzyć

Zacznij od sprawdzenia hierarchii system promptu w Open WebUI. Następnie przygotuj Modelfile z FROM, blokiem SYSTEM i parametrami temperature, top_p oraz repeat_penalty. W środowisku Docker skopiuj plik przez docker cp, usuń poprzedni model poleceniem ollama rm || true, a potem utwórz konfigurację przez ollama create -f. Przed wysłaniem długiego promptu lub transkryptu policz tokeny i rozważ podział zadania.

Najczęstsze pytania

Czy sam system prompt wystarczy, żeby model zawsze pamiętał instrukcję? Nie. Przy dużym kontekście instrukcja może zostać gorzej wykorzystana, zwłaszcza gdy ważne informacje giną w środku tekstu.

Czy trzeba od razu zmieniać wszystkie parametry? Nie. W materiale pada zalecenie, by zmieniać albo temperature, albo top_p, nie oba naraz.

Co zrobić, gdy transkrypt nie mieści się w kontekście? Najpierw ograniczyć i podzielić dane, a potem rozdzielić zadanie na mniejsze etapy. Dopiero kolejnym krokiem jest automatyzacja przez API.

Materiały

← Wróć do listy