Автор: abavyka
Галюцинація — це коли модель впевнено видає те, чого не існує. Вона не бреше навмисно: вона генерує найправдоподібніший текст, і якщо чогось не знає, то правдоподібно вгадує.
Як це виглядає в коді
• Неіснуючий API: await fs.promises.exists(path) — виглядає логічно, але такого методу в Node немає
• Застаріла версія бібліотеки: модель пише getServerSideProps у Next.js app router або API zod v3, а в тебе v4. Її знання старші за твій package.json
• Пакет, якого не існує: npm install з назвою, яку модель вигадала. Це ще й дірка в безпеці: зловмисники реєструють такі «вигадані» назви з малварем (slopsquatting)
• Вигадані флаги CLI і опції конфігів
• «Тести пройшли» — а їх ніхто не запускав
Чому виникає
• Модель відповідає з голови замість прочитати код чи доку
• Контекст забитий або вже стиснутий compact, і потрібні деталі загубились
• Знання моделі мають дату, а твої залежності — свої версії
Як зменшити
• Просити читати, а не вгадувати: «перед змінами прочитай src/auth і package.json, глянь, яка версія zod»
• Дозволити сказати «не знаю»: «якщо не впевнений в API — перевір типи в node_modules або доку, не вигадуй»
• Документація в коді. Агент може відкрити .d.ts у node_modules і побачити реальні сигнатури
• Для актуальної доки — WebFetch по офіційному сайту або MCP на кшталт Context7
Найкращий спосіб боротьби з галюцинаціями — не вірити на слово, а дати агенту можливість себе перевірити. Тоді він ловить свої вигадки сам, ще до тебе.
• npx tsc —noEmit — більшість вигаданих методів і полів вилітає одразу на typecheck. Саме тому TS і агенти так добре дружать
• Тести (vitest/jest). Спершу написати тест (привіт TDD), який падає на баг, і лише потім фіксити
• Лінтер (eslint)
• Реальний запуск: curl по ендпоінту для бекенду, браузер (здравствуй Claude in Chrome)
• У CLAUDE.md прописати: «після змін завжди запускай npm run typecheck && npm test»
• Не приймати «все працює» без виводу команди. Хочеш упевненості — проси показати результат
• Нові залежності в package.json перевіряй очима перед npm install
Що далі: запускати typecheck і тести можна не проханням, а автоматично.
Почитати:
• Hallucinations
• Verifying agent output
• Best practices Claude Code (розділ про верифікацію): https://code.claude.com/docs/en/best-practices
• Anthropic про context engineering: https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents