Jun 10, 2025
11 min

Halucynacje AI, czyli dlaczego sztuczna inteligencja kłamie?

Halucynacje AI  - skąd się biorą i jak je ograniczać?

Halucynacje są wymienione jako jedno z zagrożeń w raporcie OWASP TOP 10 for LLM Applications. Fałszowanie odpowiedzi i informacji może mieć ogromny wpływ na aplikację i cały biznes. Można się przed tym chronić, tylko trzeba wiedzieć jak.

Czym są halucynacje w AI?

Halucynacje w LLM (z ang. hallucinations) są określane jako zachowanie modelu, w którym produkuje informacje niezgodne ze zbiorem treningowym lub przekazanymi informacjami. Jest to najczęściej obserwowane, gdy model musi uzupełnić luki w wiedzy. Informacje te najczęściej są prawdopodobne, spójne i poprawne gramatycznie, pomimo bycia 100% fałszywymi informacjami. Powoduje to, że bardzo ciężko je zweryfikować i bardzo łatwo w nie uwierzyć.

Przy czym problem halucynacji jest trochę jak z powiedzeniem: „It’s not a bug, it’s a feature”. Duże modele językowe są maszynami statystycznymi i ich zadaniem jest generowanie tekstu. I zawsze ten tekst wygenerują, co może prowadzić do halucynacji. Model zachowuje się jak uczeń przy odpowiedzi, który stara się zmyślić odpowiedź, byle dostać 2. To naszą rolą (programistów tworzących systemy korzystające ze sztucznej inteligencji) jest unikanie błędnych odpowiedzi.

Z problemem halucynacji wiązany jest problem nadmiernego polegania (z ang. overreliance) na informacjach wygenerowanych przez AI bez sprawdzania ich poprawności. Powoduje to, że każda zniekształcona przez model językowa informacja jest źródłem dezinformacji.

Przykłady problemów związanych z halucynacjami

Od kiedy popularność rozwiązań typu ChatGPT zaczęła rosnąć i powstaje coraz więcej aplikacji AI, łatwo znaleźć przykłady problemów związanych z halucynacjami. Niektóre są zabawne, a niektóre wręcz przeciwnie.

Czy w mieście X jest Zoo

Na początek przykład z projektu, przy którym pracowałem rok temu. Budowaliśmy asystenta chatowego dla branży podróży i walczyliśmy z halucynacjami. Naszym typowym pytaniem sprawdzającym było - Czy w Gliwicach jest Zoo? (dla tych, co nie wiedzą, w Gliwicach nie ma Zoo, jest w sąsiednim mieście Chorzów.) Oczywiście LLM uparcie twierdził, że jest. Wydaje się to zabawne, ale jeśli mówimy o potencjalnych turystach, którzy mogli przyjechać specjalnie do Gliwic do Zoo, jest to problematyczne dla biznesu. Po wielu iteracjach udało nam się tego pozbyć i znaleźć prawdopodobną przyczynę problemu - w Gliwicach jest sklep zoologiczny Zoo, o czym prawdopodobnie model wiedział.

Jak dostać zniżkę?

Ciekawy przykład halucynacji został opisany przez BBC. W 2022 roku Air Canada posiadał chatbota opartego o generatywną sztuczną inteligencję, który wprowadził w błąd użytkownika na temat zasad przyznawania zniżki na lot. Air Canada próbowała argumentować, że chatbot nie może być odpowiedzialny za to, co pisze, ale zostało to odrzucone przez sąd i stanowi pewien precedens - firma jest odpowiedzialna za to, jakie informacje produkuje chatbot AI.

ChatGPT mi tak powiedział

O tym, że z ChatGPT korzystają osoby nietechniczne, to wiadomo. Niestety, często nie wiedzą, że informacje podawane przez chat mogą być fałszywe. Na pewno nie wiedział tego adwokat z Nowego Jorku, który powołał się na fikcyjne sprawy sądowe wygenerowane przez ChatGPT. Na szczęście zostało to wykryte, ale pokazuje, jak duże zagrożenie może nieść nieumiejętne korzystanie z AI.

Halucynacje w kodzie

Halucynacje mogą być też niezwykle groźne w przypadku generowania kodu (szczególnie w przypadku vibe coding). Proponowanie nieistniejących lub niebezpiecznych bibliotek jest poważnym zagrożeniem od strony bezpieczeństwa dla całej aplikacji. Jest to też jeden ze sposobów, w jaki hacker może próbować dostać się do aplikacji lub na serwer, by kopać kryptowaluty.

Co wpływa na halucynacje sztucznej inteligencji?

Generowanie tekstu przez LLM to nic innego jak statystyka i generowanie najbardziej prawdopodobnych wyrazów jeden po drugim. W związku z tym największy wpływ na to, czy halucynacje będą występować, mają modele językowe. Można wyróżnić kilka czynników, które mają największy wpływ na ryzyko wystąpienia halucynacji:

  • Wielkość i jakość modelu. Dane treningowe mają ogromny wpływ na dokładność odpowiedzi generowanej przez sztuczną inteligencję. Duży wpływ na zjawisko halucynacji ma dobór danych, uprzedzenia, które są w zbiorze uczącym, oraz błędy w danych. Im większy model, tym mniejszy wpływ pojedynczych błędów, dlatego te większe modele, które są uczone na ogromnych zbiorach danych, będą miały mniejszy potencjał halucynacji.
  • Niedopasowanie modelu do zastosowań. Poza dużymi modelami językowymi jest też spory rynek mniejszych, wyspecjalizowanych modeli. Taki model jest specjalnie trenowany w jednym konkretnym zadaniu, np.: translacji, a pytanie go o przebieg wojny secesyjnej nie jest najlepszym pomysłem. Tak samo mniejsze modele LLM (na przykład mniejsze modele z rodziny LLama) mogą się nadawać do parsowania dokumentów, ale już będą generować gorszy kod.
  • Nieaktualne dane. Warto również pamiętać, że model wie tylko tyle, ile zostało mu dostarczone podczas uczenia. Każdy model ma tzw. cut-off date, czyli datę, do której wiedza modelu jest ograniczona. Model (o ile nie ma dostępu do Internetu) nie wie, co się działo potem i będzie halucynować. Każdy model ma inną datę i wszystkie można sprawdzić w repozytorium na GitHub.
  • Specyficzne dane. Podobny temat do tego wyżej. Modele generatywne są uczone na ogólno dostępnych danych, więc nie mają prawa wiedzieć o twoich wynikach finansowych albo strategii firmy (a jeśli wiedzą, to jest powód do niepokoju). Jeśli chcesz wartościowe wyniki, to musisz te dane najpierw dostarczyć.

Jak minimalizować wpływ halucynacji na wyniki?

Na szczęście da się łagodzić skutki halucynacji, a w niektórych przypadkach pozbyć się wprowadzających w błąd informacji. Najważniejsze jest rozsądne podejście do AI, wiedza o ograniczeniach i odpowiednie zaprojektowanie systemów. Co istotne, jeśli połączysz kilka poniższych technik, to otrzymasz lepsze rezultaty niż gdy użyjesz tylko jednej.

Do technik minimalizujących halucynacje można zaliczyć:

  • Korzystanie z najnowszych i największych modeli. Twórcy największych modeli językowych budują modele na miliardach różnych danych szkoleniowych, co pozwala ograniczyć halucynacje. Każda aktualizacja przesuwa również cut-off date. Z doświadczenia wiem, że wiele problemów, które miałem ze starszą wersją modelu, były rozwiązywane w nowej. Mają na to wpływ udoskonalone algorytmy uczenia, większy zbiór danych wejściowych, nowe dane i wiele więcej. Zdolność modelu do generowania odpowiedzi jest też związana z jego wielkością, a mniejsze modele zawsze będą gorsze. Jeśli zależy nam na najlepszych odpowiedziach, to trzeba celować w największe modele.
  • Architektura typu RAG (Retrieval-Augmented Generation). Jeden z najlepszych sposobów na redukowanie ryzyka halucynacji to podanie informacji, które model musi użyć w celu wygenerowania odpowiedzi. Podanie takiej bazy wiedzy potrafi mocno zredukować ryzyko niepoprawnych odpowiedzi, ponieważ dostarczamy niezbędny kontekst do generowania odpowiedzi. W przypadku architektury RAG istotne jest, by ograniczać ilość danych, jaka wejdzie do modelu. Zawsze powinniśmy celować w minimalny zestaw danych i jasno poinstruować model, by korzystał z tych danych.
  • Fine-tuning. Alternatywą dla architektury typu RAG jest fine-tuning, czyli proces dostosowania modelu. Polega to na użyciu istniejącego modelu i douczeniu go na nowych danych wejściowych. Poprawia to niezawodność modelu, ale jest związane z dodatkowymi kosztami i potrzebą przygotowania danych do uczenia. Ta metoda nie przyda się również, gdy dane często się zmieniają.
  • Odpowiedni prompt. Pomimo tego, że aktualnie modele już wiele potrafią na bazie zwykłego tekstu, to dobry prompt dalej potrafi pomóc. Informacja o konieczności korzystania z danych, dodanie prośby o specyficzną odpowiedź, gdy nie jest pewien odpowiedzi itd.
  • Manualna kontrola. Jeśli proces na to pozwala, to manualna kontrola jest świetnym sposobem na uniknięcie halucynacji. Sprawdzi się przy procesowaniu dokumentów, gdzie odczytane informacje muszą być w 100% prawdziwe i nie możemy pozwolić sobie na błędy. Nawet przy manualnej kontroli przetwarzanie jest szybsze niż ręczne szukanie i przepisywanie danych.
  • LLM-as-a-judge. Alternatywą dla manualnej kontroli jest LLM-as-a-judge, który sprawdzi się przy systemach, które działają w czasie rzeczywistym, np.: chatboty.
  • Odpowiednio zaprojektowany UI. Dobrze zaprojektowany UI też może pomóc przy redukcji błędów spowodowanych przez halucynacje. Warto uświadamiać użytkowników, że odpowiedź jest generowana przez AI i dać możliwość oceny tej wiadomości.

LLM-as-a-judge, czyli jak wykryć halucynacje AI

Bardzo ciekawym sposobem na sprawdzenie wiarygodności odpowiedzi jest LLM-as-a-judge. Jest to podejście, które wykorzystuje LLM do sprawdzenia wyniku działania innego modelu. Jest to zamiennik ludzkiej weryfikacji, którą można wdrożyć w automatyczny proces.

W przypadku chata moglibyśmy stworzyć prompt, który przyjmie pytanie od użytkownika, dodatkowy kontekst, odpowiedź i zapytać, czy odpowiedź ma sens i jest związana z pytaniem. Przykładowy kod może wyglądać następująco:

TypeScript
1import { generateObject } from 'ai';
2import { google } from '@ai-sdk/google';
3
4const system = `Your role is to determine if based on passed data response is valid based on input and additional context. Do not use internal knowledge.`;
5
6const checkValidity = async (question: string, context: string, answer: string) => {
7
8    const prompt = `
9    Question: ${question}
10
11    Context: ${context}
12    
13    Answer: ${answer}
14
15    Is answer valid based on question and context?
16    `
17
18    const completion = await generateObject({
19        system: system,
20        prompt: prompt,
21        model: google('gemini-2.0-flash-thinking-exp-01-21'),
22        output: 'enum',
23        enum: ['yes', 'no'],
24        maxRetries: 1,
25    });
26
27    console.log(`${answer} -> ${completion.object}`);
28    console.log(completion);
29}
30
31const question = "What is the nationality of Sam Altman";
32const context = "Altman was born on April 22, 1985, in Chicago, Illinois";
33
34checkValidity(question, context, "Sam Altman is Polish"); // no
35checkValidity(question, context, "Sam Altman is American"); // yes
36

Bardzo istotne jest zaznaczenie, że walidacja ma się odbyć na bazie przekazanych danych (inaczej model może halucynować w podobny lub inny sposób). Całkiem spoko pomysłem będzie też użycie modeli typu thinking, ale sprawdzenie może trwać dłużej. W przypadku takiego sprawdzania halucynacji trzeba być gotowym na eksperymenty i szukanie modelu, który będzie miał najlepszy stosunek ceny do jakości i szybkości.

Czytaj więcej

Jak stworzyć serwer MCP? STDIO + Streamable HTTP z Hono
Jun 10, 2025
Jak stworzyć serwer MCP? STDIO + Streamable HTTP z Hono
Tworząc własny serwer MCP możemy dostarczyć nasze dane do zewnętrznych aplikacji, które wspierają MCP. W artykule znajdziesz krok po kroku jak to zrobić.
jak budować PoC dla aplikacji AI
Jun 10, 2025
Jak budować PoC aplikacji AI?
Pomyłki przy budowaniu aplikacji AI są KOSZTOWNE. Można temu zapobiec dodając etap prototypowania przed rozpoczęciem dużych prac.
stwórz własnego AI Chatbot
Jun 10, 2025
Jak stworzyć AI chatbot? Architektura, pułapki i dobre praktyki.
Budowanie inteligentnego AI chatbot wydaje się proste. Ale na nieostrożnego programistę czeka wiele pułapek, które mogą być kosztowne.