Odcinek kanału YouTube
Automatyzacja Olamy: Python + API (bez Open WebUI) | Homelab #8
16.11.2025Prawdziwa moc Homelaba to automatyzacja. Uczymy się komunikować z Olamą bezpośrednio przez Pythona, omijając interfejs graficzny. Generowanie JSONa i obsługa requestów.
YouTube
Film ładuje się dopiero po kliknięciu — bez ciasteczek YouTube przed odtworzeniem.
Notatki do odcinka
Streszczenie i rozwinięcie filmu — dla osób, które wolą najpierw przeskanować temat, zamiast oglądać całość.
W poprzednim odcinku buduję w Ollamie asystenta „Specjalistę”, ale sam asystent pozostaje zamknięty w Open WebUI. Jeżeli trzeba ręcznie kopiować transkrypt, wklejać go do interfejsu i odbierać wynik, trudno nazwać to pełną automatyzacją. W tym odcinku robię kolejny krok: łączę się z Ollamą bezpośrednio z Pythona.
Nie zaczynam od wygodnego wrappera. Najpierw pokazuję, co dzieje się pod spodem: jak wysłać żądanie HTTP, przekazać JSON i sparsować odpowiedź. Dopiero później przechodzę do oficjalnej biblioteki ollama, żeby porównać podejście surowe z kodem, który zajmuje kilka linijek. Pracuję na przykładzie asystenta przygotowanego wcześniej i przenoszę go z rozmowy w UI do skryptu.
Co zobaczysz
Odcinek zaczyna się od planu dwóch sposobów połączenia z API. Najpierw robię sanity check: sprawdzam, czy serwer działa i czy widzi model. To krótki, ale ważny etap, bo bez niego łatwo pomylić problem w kodzie z niedostępną usługą albo brakującym modelem.
Pierwsza metoda korzysta z biblioteki requests. Wysyłam żądanie do endpointu /api/generate i przekazuję dane w formacie JSON. Dzięki takiemu podejściu widać pełny przepływ: skrypt buduje request, Ollama odpowiada, a Python musi odczytać i sparsować wynik. To nie jest rozwiązanie ograniczone do jednego języka. Znajomość samego HTTP pozwala przenieść podobną integrację także do innych narzędzi.
Druga metoda wykorzystuje oficjalną bibliotekę ollama dla Pythona. Wrapper upraszcza komunikację i obsługę streamingu, więc kod staje się krótszy i czytelniejszy. Nie pomijam jednak poprzedniego wariantu. Surowy request pomaga zrozumieć, co biblioteka robi za nas, a oficjalny klient pokazuje, jak tę samą pracę wykonać wygodniej w codziennym skrypcie.
W notebooku Jupyter przechodzę przez oba warianty, a potem przenoszę kod do plików .py. Jest też bonus dotyczący streamingu i endpointu chat, pokazany na przykładzie Qwena. To rozszerzenie głównego przepływu, ale dobrze pokazuje, że odpowiedź nie musi być traktowana wyłącznie jako pojedynczy, niepodzielny wynik.
Kluczowe wnioski
Najważniejsza zmiana polega na przesunięciu odpowiedzialności z człowieka na skrypt. W Open WebUI trzeba samemu wykonać kolejne czynności. W Pythonie można opisać przepływ raz, a potem uruchamiać go dla kolejnych transkryptów. To właśnie odróżnia pomocnika, do którego trzeba pisać, od pracownika, którego można włączyć do procesu.
Warto poznać obie metody, bo rozwiązują różne problemy. requests odsłania mechanikę i ułatwia diagnozę: widzę endpoint, wysyłany JSON oraz moment, w którym trzeba sparsować odpowiedź. Biblioteka ollama ogranicza kod pomocniczy i daje wygodniejszy interfejs, w tym obsługę streamingu. Nie są to dwa niezależne systemy, tylko dwa poziomy pracy z tą samą usługą.
Przykładowy skrypt bierze transkrypt wideo i przygotowuje sformatowany JSON zawierający tytuł, opis oraz tagi. Taki wynik może stać się wejściem do dalszej automatyzacji publikacji contentu. W tym materiale nie chodzi więc o samo wygenerowanie tekstu, ale o zachowanie przewidywalnego formatu, który da się przekazać następnym etapom.
Sanity check jest równie praktyczny jak sam request. Zanim zacznę poprawiać parsowanie, sprawdzam stan serwera i widoczność modelu. Dzięki temu problemy z infrastrukturą nie mieszają się z błędami w notebooku. To mały krok, ale skraca drogę od nieudanego wywołania do właściwej diagnozy.
Jak to odtworzyć
Otwórz kod z repozytorium i zacznij od sprawdzenia, czy serwer Ollamy działa oraz czy widzi używany model. Następnie wykonaj request w Pythonie przez requests, wysyłając JSON do /api/generate, i ręcznie sparsuj odpowiedź. Potem zrób to samo z oficjalną biblioteką ollama. Jeśli chcesz przejść dalej, sprawdź streaming i endpoint chat na przykładzie Qwena, a następnie przenieś działający kod z notebooka do skryptu .py.
Najczęstsze pytania
Po co używać requests, skoro istnieje biblioteka ollama? Żeby zrozumieć mechanikę połączenia, format JSON i ręczne parsowanie odpowiedzi. To także uniwersalny punkt odniesienia dla innych języków.
Kiedy wybrać oficjalny wrapper? Gdy zależy mi na krótszym kodzie, wygodniejszej obsłudze i streamingu.
Co robi przykład z transkryptem? Przekazuje go do lokalnego asystenta i odbiera JSON z tytułem, opisem oraz tagami, który można wykorzystać w automatyzacji publikacji.