Добавить в корзинуПозвонить
Найти в Дзене
Цифровая Переплавка

🤖🔥 Как я случайно научил ChatGPT галлюцинировать на примере Rails

Последние несколько лет мы наблюдаем огромный бум технологий на базе искусственного интеллекта. LLM-модели (Large Language Models - Большие языковые модели), такие как GPT-4, Sonnet и o3, безусловно, произвели революцию в способах решения повседневных задач разработчиков. Однако иногда их ответы оказываются не просто странными, а абсолютно нереальными. Недавно Бен Гарсия рассказал забавную историю о том, как он случайно ввёл в заблуждение не один, а сразу несколько популярных LLM, включая OpenAI o3, Sonnet 3.7 и Sonnet 3.5. Однажды коллега Бена, который обычно занимается DevOps, подошёл к нему с проблемой в Rails-проекте. В его коде было что-то похожее на: User.includes(investments: -> { where(state: :draft) }) Выглядит знакомо, правда? Только вот есть одна проблема: такого синтаксиса не существует в ActiveRecord или каком-либо известном дополнении к Rails. «Откуда ты это взял?» — спросил его Бен. Оказалось, коллега просто доверился совету ChatGPT. Проверка истории диалога с ИИ показал
Оглавление

Последние несколько лет мы наблюдаем огромный бум технологий на базе искусственного интеллекта. LLM-модели (Large Language Models - Большие языковые модели), такие как GPT-4, Sonnet и o3, безусловно, произвели революцию в способах решения повседневных задач разработчиков. Однако иногда их ответы оказываются не просто странными, а абсолютно нереальными. Недавно Бен Гарсия рассказал забавную историю о том, как он случайно ввёл в заблуждение не один, а сразу несколько популярных LLM, включая OpenAI o3, Sonnet 3.7 и Sonnet 3.5.

📖 Предыстория одной странной ошибки

Однажды коллега Бена, который обычно занимается DevOps, подошёл к нему с проблемой в Rails-проекте. В его коде было что-то похожее на:

User.includes(investments: -> { where(state: :draft) })

Выглядит знакомо, правда? Только вот есть одна проблема: такого синтаксиса не существует в ActiveRecord или каком-либо известном дополнении к Rails.

«Откуда ты это взял?» — спросил его Бен. Оказалось, коллега просто доверился совету ChatGPT. Проверка истории диалога с ИИ показала, что модель уверенно и неоднократно рекомендовала использовать этот странный lambda-синтаксис для динамической предзагрузки ассоциаций.

🧠 Почему модели начинают галлюцинировать?

Расследование этой загадки привело Бена к неожиданному открытию. Оказалось, что источником этого «галлюцинированного» синтаксиса был сам Бен, написавший вопрос с похожим примером на форуме Rails несколько лет назад. Тогда он просто экспериментировал и предложил вымышленный подход:

  • 📝 «А что если использовать lambda прямо внутри includes?» (Не работает!)
  • 🔧 «Может быть, обратиться напрямую к Preloader-объекту?» (Тоже не работает без дополнительных ухищрений!)

Обе эти идеи — по сути, нерабочие фантазии. Однако написанный Беном текст случайно попал в обучающие данные для языковых моделей.

Теперь, когда кто-то спрашивает ИИ о сложном использовании ActiveRecord, модели уверенно возвращают тот самый несуществующий синтаксис, не осознавая его абсурдности.

🚩 Примеры «галлюцинаций» и что с этим делать

Давайте на секунду разберёмся, почему именно такие ошибки происходят и как их распознать:

  • 🚧 Неоправданная уверенность:
    LLM часто звучат уверенно, даже если говорят глупости. Чем глубже нишевая тема (например, Rails), тем выше шанс получить «галлюцинацию».
  • 🎲 Выдуманный синтаксис:
    Появление вымышленного кода происходит из-за попадания в датасет неправильных или экспериментальных фрагментов. ИИ начинает повторять ошибки, воспринимая их как норму.
  • 🕵️ Как проверить себя:
    Всегда сверяйте рекомендации от LLM с официальной документацией или сообществом. Не принимайте всё на веру, особенно если код выглядит «подозрительно красиво».

💡 Личное мнение и почему это важно

Я лично считаю, что эта история — отличная иллюстрация того, как важно сохранять критическое мышление при взаимодействии с ИИ. Забавно и одновременно тревожно, что простой эксперимент на форуме мог так масштабно повлиять на ответы целого поколения LLM-моделей.

Это напоминает мне знаменитую цитату из фильма «Начало» («Inception»):

«Какая самая стойкая вещь? Идея. Стоит ей однажды поселиться в голове — и избавиться от неё уже невозможно».

Именно это и произошло: некогда сказанная глупость теперь укоренилась в «головах» нейросетей и продолжает уверенно множиться.

🛠️ Технические детали, или как не попасть в ловушку

Что же делать разработчикам, чтобы избежать таких ловушек?

  • 📚 Всегда проверяйте код по официальным источникам (документация Rails, GitHub-репозиторий, официальные форумы).
  • 🛡️ Используйте ссылки на конкретные версии API или спецификации. Модели плохо отслеживают изменения и могут рекомендовать устаревший синтаксис.
  • 🧪 Проводите тесты. Даже если код «выглядит правильным», проверьте его на работоспособность в реальном проекте.

🎯 Вывод: Будьте осторожны и критичны к ответам ИИ

Эта смешная и немного пугающая история напоминает нам, что ИИ, хотя и невероятно полезен, не безупречен. Чем глубже и специфичнее запрос, тем выше вероятность, что вы получите уверенный, но абсолютно неправильный ответ.

Помните: доверяй, но проверяй. Особенно, если это касается кода, который завтра отправится в продакшн.

🔗 Полезные ссылки и оригинал истории:

✨🤔 А вы сталкивались с подобными «галлюцинациями» ИИ в своей практике? Делитесь историями и выводами в комментариях!