Podręcznik uczestnika z objaśnieniami, przykładami i ćwiczeniami do samodzielnej nauki do Modułu 4

3. Wywołanie lokalnego modelu LLM z Pythona

Najprostszy krok generacji to jedno żądanie i jedna odpowiedź. Zanim dodasz wyszukiwanie, trzeba umieć określić pełne wejście modelu, rozpoznać błąd wywołania i zachować wynik, którego później nie pomylisz z inną próbą.

1. Umowa funkcji wywołującej model

def generate_with_ollama(
    prompt: str,
    model_name: str = LLM_MODEL,
    temperature: float = DEFAULT_TEMPERATURE,
) -> str:
    ...

To sygnatura do przeczytania, nie kompletna funkcja do uruchomienia. Parametr prompt zawiera zadanie i dostępne dane, model_name wskazuje lokalny model, a temperature jest ustawieniem generacji. Wynik ma być tekstem. Obiekt odpowiedzi API może mieć dodatkowo informacje o liczbie tokenów i sposobie zakończenia; aplikacja zachowuje je oddzielnie w diagnostyce.

Ollama udostępnia lokalny interfejs do wywołań modeli. W prezentacji zobaczysz wariant z klientem Python, a pakiet M4 korzysta z HTTP API przez bibliotekę standardową. To dwa sposoby komunikacji z tą samą usługą. Przebieg nadal trzeba opisać pełnym żądaniem: nazwą modelu, wiadomościami i opcjami, nie tylko ostatnim pytaniem widocznym na ekranie.

2. Instrukcja a materiał źródłowy

Porównaj trzy żądania dla pytania „Co należy zrobić po zmianie konfiguracji?”. Samo pytanie może wywołać ogólne rady. Dopisanie „odpowiedz w dwóch punktach” ogranicza format, lecz nie dostarcza lokalnej procedury. Dopiero dołączenie odpowiedniego fragmentu daje modelowi podstawę do podania nazwy usługi i dokładnych poleceń.

Próba Wiadomość użytkownika Co można sprawdzić
P1 Samo pytanie o zmianę konfiguracji. Czy model ujawni brak lokalnego źródła zamiast dopowiadać szczegóły.
P2 To samo pytanie oraz prośba o dwa punkty. Zgodność formatu; nadal brak dokumentacji.
P3 Pytanie, reguła odpowiedzi ze źródeł i konkretny fragment instrukcji. Zgodność twierdzeń z przekazanym tekstem.

Każda próba w pakiecie rozpoczyna nową rozmowę bez wcześniejszej historii. Inaczej wariant pozornie „bez dokumentu” mógłby korzystać z dokumentu przesłanego przed chwilą. Nie porównuj prób, jeśli nie wiesz, jakie wiadomości otrzymał model.

3. Parametry i zakończenie odpowiedzi

Temperatura wpływa na sposób wyboru kolejnych tokenów, ale nie jest suwakiem prawdziwości. Niska wartość nie zapewnia zgodności ze źródłem, a pojedyncza odpowiedź przy wysokiej wartości nie dowodzi większej jakości ani większej różnorodności. Do oceny zmienności potrzebujesz wielu prób przy jasno określonych warunkach.

W gotowym pakiecie przyjęto temperaturę 0.1, seed=42, num_predict=384 i num_ctx=4096. To ustawienia ćwiczenia. num_predict ogranicza generowaną odpowiedź, a num_ctx określa skonfigurowany rozmiar kontekstu. Stały seed pomaga porównywać warunki, lecz nie daje bezwarunkowej gwarancji identycznego tekstu przy innym środowisku.

Sygnał Jak go interpretować
Pusty prompt Niepoprawne wejście: popraw zadanie przed wywołaniem.
Brak usługi lub modelu Problem środowiska; nie jest to odmowa oparta na źródłach.
done_reason="stop" Generacja zakończyła się bez wskazania limitu długości; treść nadal wymaga oceny.
done_reason="length" Możliwe ucięcie przez limit. Zachowaj wynik jako niepełny.

4. Własne wywołanie i odtworzenie

W trybie ollama powstaje nowe wywołanie. W trybie checkpoint aplikacja odnajduje wcześniej zapisane identyczne żądanie i odtwarza odpowiedź. Zmiana pytania, promptu lub opcji może oznaczać brak odpowiedniego wpisu. Program nie powinien wtedy wymyślać odpowiedzi ani bez informacji przełączać sposobu pracy.

W zapisie odtworzenia original_elapsed_s jest czasem pierwotnego wywołania. Nie przedstawiaj go jako czasu generacji wykonanej teraz. Ten sam tekst odtworzony dziesięć razy nie jest dziesięcioma niezależnymi obserwacjami jakości modelu.

Ćwiczenie 2. Oceń żądanie i odpowiedź

Praca samodzielna offline

Poniższe odpowiedzi i informacje diagnostyczne są przygotowanymi przykładami, a nie zapisami pomiaru.

  1. W P1 model pisze: „Uruchom ponownie usługę i sprawdź logi”. Nie otrzymał źródła. W P2 pisze: „1. Zrestartuj system. 2. Sprawdź działanie”. Oceń oddzielnie format i podstawę obu odpowiedzi.
  2. P3 zwraca „Po zmianie pliku uruchom ponownie usługę, a następnie…” oraz done_reason=length. Wyjaśnij, dlaczego nie wolno uznać tej próby za kompletną procedurę.
  3. Masz porównać temperatury 0.0 i 0.8. Wypisz cztery elementy, które powinny pozostać stałe, i dwa, które trzeba zapisać w wyniku.
  4. Odtworzony rekord ma mode=checkpoint, original_elapsed_s=4.2 i current_elapsed_s=0.01. Która wartość opisuje pierwotne wywołanie, a czego nie wolno wnioskować z drugiej?
Sprawdź rozumienie

Czy odróżniasz błąd wykonania, ograniczenie długości i brak podstaw merytorycznych?

Przejście do pakietu ćwiczeniowego

Jeżeli pracujesz również na komputerze, wykorzystaj kartę R2 oraz notebook M12_M4_R2_wywolanie_llm_start.ipynb.

Porównaj pięć zapisanych prób: trzy prompty i dwie dodatkowe temperatury. W logu zachowaj pełne żądania i odpowiedzi. W dołączonym checkpoincie próba bez kontekstu jest ucięta, co oznaczono w diagnostyce; nie traktuj jej jako pełnej wypowiedzi.

ENHANCER+ · Politechnika Warszawska · podręcznik do samodzielnej nauki offline