Halucynacje nie są błędem — są konsekwencją mechanizmu

przez Łukasz | sie 17, 2026

Poprosiłeś o źródła. Dostałeś pięć pozycji z nazwiskami, tytułami i rocznikami. Cztery istnieją. Piąta wygląda dokładnie tak samo i nie istnieje w ogóle.

Nic w odpowiedzi tego nie zasygnalizowało. Ta piąta pozycja nie została napisana ciszej, ostrożniej ani z zastrzeżeniem. Powstała dokładnie tą samą drogą co cztery poprzednie.

To zdanie jest całą treścią tego artykułu. Reszta to wyjaśnienie, dlaczego inaczej być nie może — i co z tym realnie da się zrobić.

Cztery przyczyny, wszystkie już opisane

Dobra wiadomość jest taka, że nie potrzebujemy nowego mechanizmu. Halucynacja wypada wprost z czterech rzeczy, które opisaliśmy w poprzednich artykułach.

Rozkład prawdopodobieństwa istnieje zawsze. Model przewiduje kolejny token i robi to niezależnie od tego, czy w danych treningowych była jakakolwiek odpowiedź. Nie ma stanu „brak danych” — jest tylko rozkład, czasem ostry, czasem płaski. Płaski rozkład nie zatrzymuje procesu, tylko sprawia, że wybór jest bardziej przypadkowy.

Nie ma osobnego sygnału „nie wiem”. Baza danych zwraca pusty wynik. Model nie ma czym zwrócić pustego wyniku — jedynym wyjściem jest kolejny token. Deklaracja niepewności, jeśli się pojawi, też jest wygenerowanym tekstem, a nie odczytem stanu wewnętrznego.

Wiedza jest rozmyta, nie zapisana. Fakty nie leżą w miejscach, które da się wskazać. Są rozproszone po miliardach wag i przy każdym pytaniu rekonstruowane od nowa. Rekonstrukcja czegoś, co model widział raz albo wcale, wygląda tak samo jak rekonstrukcja czegoś, co widział tysiąc razy.

Trening premiuje pewność siebie. Jak pisaliśmy w artykule o treningu, ludzie oceniający odpowiedzi systematycznie wyżej punktują te konkretne niż te wahające się. Odpowiedź „nie wiem” bywa oceniana gorzej niż odpowiedź błędna, bo niepewność widać zawsze, a błąd nie zawsze.

Zsumuj to: mechanizm, który zawsze coś zwróci, bez sygnału niewiedzy, rekonstruujący zamiast odczytywać, dostrojony do brzmienia przekonująco. Halucynacja nie jest w tym awarią. Jest przewidywalnym wynikiem.

Cztery typy, cztery różne ryzyka

Traktowanie tego jako jednego zjawiska utrudnia obronę. W praktyce są to cztery różne rzeczy.

Konfabulacja faktu. Data, liczba, nazwisko, przepis. Najbardziej znany typ i zarazem najłatwiejszy do wychwycenia, bo fakty da się sprawdzić.

Fałszywa atrybucja. Nieistniejące źródło, zmyślony cytat, przypisanie prawdziwej osobie wypowiedzi, która nie padła. Groźniejsze, bo forma bibliograficzna sama w sobie budzi zaufanie — a sprawdzenie wymaga wysiłku, którego zwykle nikt nie podejmuje.

Odejście od dostarczonego kontekstu. Model dostał dokument i odpowiada niezgodnie z nim: uzupełnia luki wiedzą z treningu, uogólnia, wygładza niewygodne szczegóły. To jest typ, który przeżywa wdrożenie RAG — a jest najczęściej pomijany, bo panuje przekonanie, że skoro fakty są w kontekście, to problem zniknął.

Halucynacja strukturalna. Zmyślone pole w odpowiedzi API, nieistniejący parametr funkcji, wywołanie metody, której biblioteka nie ma, import pakietu, który nigdy nie powstał. Dla agenta to typ najgroźniejszy, bo nie kończy się na zdaniu — staje się argumentem wywołania narzędzia.

Dlaczego „jesteś pewny?” nie działa

To pierwsze, po co sięga każdy, i najsłabsze narzędzie w całym zestawie.

Deklaracja pewności powstaje tym samym mechanizmem co treść, którą ma ocenić. Model nie zagląda w siebie — generuje tekst, który w danych treningowych występował po pytaniach o pewność. Odpowiedź „tak, jestem pewny” nie jest odczytem stanu, tylko kolejnym prawdopodobnym ciągiem tokenów.

Gorzej: dopytywanie potrafi zaszkodzić. Model dostrojony do preferencji użytkownika bywa skłonny wycofać się z poprawnej odpowiedzi pod naciskiem, bo zgadzanie się było wyżej oceniane niż upieranie się. Sygnał, który dostajesz, mówi więcej o sile twojego nacisku niż o prawdziwości odpowiedzi.

Czego nie da się zrobić

Nie da się tego wyłączyć promptem. „Nie zmyślaj”, „odpowiadaj tylko jeśli jesteś pewny”, „jeśli nie wiesz, napisz że nie wiesz” — te instrukcje przesuwają rozkład, więc statystycznie coś dają. Nie zmieniają jednak mechanizmu: model nadal nie ma czym rozpoznać, że akurat teraz zgaduje.

Nie pomoże obniżenie temperatury. Jak pisaliśmy w poprzednim artykule, niska temperatura daje powtarzalność, nie prawdę. Zamiast pięciu różnych zmyśleń dostaniesz pięć razy to samo zmyślenie.

Nie pomoże większy model. Silniejsze modele halucynują rzadziej, ale bardziej wiarygodnie — a to bywa gorsze, bo trudniej zauważyć. Skala przesuwa próg, nie usuwa zjawiska.

Co realnie działa

Wszystkie skuteczne środki mają jedną wspólną cechę: działają poza modelem. To ta sama zasada, która przewija się przez całą tę serię i przez serię o agencie — rozwiązania mieszkają w warstwie nad modelem.

Dostarczenie faktów w kontekście. RAG nie eliminuje halucynacji, ale przesuwa zadanie z przypominania na streszczanie, a to model robi znacznie lepiej. Warunek jest jeden: trzeba wymagać, żeby odpowiedź wskazywała fragment kontekstu, na którym się opiera, i sprawdzać, czy ten fragment naprawdę tam jest.

Wymuszenie struktury i walidacja. Jeśli wynik ma być przetworzony maszynowo, niech ma schemat i niech ten schemat będzie sprawdzany przed użyciem. Halucynacja strukturalna wychwycona przez walidator nigdy nie dotrze do narzędzia.

Weryfikacja wobec źródła prawdy. Model podał numer zamówienia — sprawdź w bazie, czy istnieje, zanim cokolwiek z nim zrobisz. To brzmi banalnie i jest najskuteczniejszym pojedynczym zabezpieczeniem w całym zestawie.

Powtórzenie i porównanie. Kilka przebiegów tego samego zapytania z losowością. Zgodne odpowiedzi to sygnał oparcia w danych, rozbieżne — sygnał zgadywania. Metoda tania, niedająca pewności, ale wychwytująca sporo.

Ocena przez inny model z dostępem do źródła. Sensowna wtedy, gdy oceniający widzi materiał, wobec którego weryfikuje — bez tego jest tylko drugim modelem zgadującym. Więcej w artykule o ewaluacji i LLM-as-judge.

Człowiek przy działaniach nieodwracalnych. Ostatnia linia i jedyna, która działa na wszystkie typy naraz — pod warunkiem, że okno zgody pokazuje to, co naprawdę się wydarzy, o czym pisaliśmy w artykule o human-in-the-loop.

Jak to sprawdzić u siebie

Dwa ćwiczenia. Pierwsze pokazuje halucynację strukturalną, drugie daje działającą heurystykę.

python
from openai import OpenAI
client = OpenAI()

def zapytaj(tresc, temperatura):
    r = client.chat.completions.create(
        model="gpt-4o-mini",
        messages=[{"role": "user", "content": tresc}],
        temperature=temperatura,
        max_tokens=200,
    )
    return r.choices[0].message.content

# 1. Funkcja, której nie ma
print(zapytaj(
    "Pokaż przykład użycia funkcji parse_invoice_pl z biblioteki pandas.", 0
))

Model najprawdopodobniej napisze poprawnie wyglądający kod używający funkcji, która nie istnieje. Nie zapyta, nie zastrzeże, nie zawaha się. To jest halucynacja strukturalna w najczystszej postaci — i dokładnie ten typ, który w agencie trafia prosto do wywołania narzędzia.

python
# 2. Test spójności
pytanie = "W którym roku powstała pierwsza polska norma dotycząca znaków drogowych?"
odpowiedzi = [zapytaj(pytanie, 1.0) for _ in range(5)]
for i, o in enumerate(odpowiedzi, 1):
    print(f"{i}. {o.strip()[:100]}")

Zadaj tak pytanie o coś wąskiego, na granicy wiedzy modelu. Jeśli pięć przebiegów da pięć zgodnych odpowiedzi — prawdopodobnie jest oparcie w danych. Jeśli rozjadą się w szczegółach, właśnie zobaczyłeś niepewność bez zaglądania w rozkład.

Warto zrobić to na pytaniach ze swojej dziedziny, zanim wypuścisz cokolwiek do użytkowników.

Co dalej

Do tej pory mówiliśmy o modelu, który przyjmuje tekst. Czas na to, co dzieje się, gdy modelowi pokażesz obrazek — i na rozróżnienie, które mylone jest najczęściej ze wszystkich w tej serii: między modelem, który widzi, a agentem, który ma narzędzie do patrzenia.

O tym jest artykuł ósmy: Multimodalność — model, który widzi, kontra agent z narzędziem.

Inference — jak powstaje odpowiedź, token po tokenie

Inference — jak powstaje odpowiedź, token po tokenie

W pierwszym artykule kod z aneksu pokazywał rozkład prawdopodobieństwa: pięciu kandydatów na jeden token, każdy ze swoją liczbą. Zostawiliśmy go tam bez ciągu dalszego. Teraz pytanie, które się wtedy nasuwało: skoro model zwraca rozkład, to kto właściwie wybiera jedno...

Attention — jak model decyduje, na co patrzeć

Attention — jak model decyduje, na co patrzeć

„Zamek był zardzewiały." Przeczytałeś to i już wiesz, że nie chodzi o budowlę. Wiesz dzięki jednemu słowu, które stoi obok. Gdyby zamiast „zardzewiały" było „otoczony fosą", to samo słowo znaczyłoby coś zupełnie innego. W poprzednim artykule zostawiliśmy model...

Embeddingi — czym jest znaczenie dla maszyny

Embeddingi — czym jest znaczenie dla maszyny

Wpisz w dowolną wyszukiwarkę semantyczną „auto", a znajdzie ci dokumenty o samochodach. Nie dlatego, że ktoś ręcznie wpisał synonimy. Te dwa słowa nie mają wspólnego rdzenia, nie mają wspólnej odmiany, a mimo to maszyna traktuje je jako bliskie. To jest jedyne miejsce...