Как стать автором
Обновить

Что делать с «галлюцинациями» GPT

Время на прочтение3 мин
Количество просмотров3.7K

Как я решил проблему т.н. "галлюцинаций" большой языковой модели в своем сервисе с помощью двойных зеркальных вопросов.

Кто виноват

Рассказов о так называемых "галлюцинациях" нейросети сейчас полно. И какой сейчас год она не знает, и килограмм гвоздей у нее тяжелее килограмма пуха и как сформировать культю головы бодро рассказывает...

Здесь будет уместен универсальный совет сохранять спокойствие. Это всегда хорошо, а в случае с внезапно свалившейся на нашу голову новой технологией, тем более. Проблемы с большинством сообщений о "галлюцинациях" языковой модели даже не в том, что в настоящий момент они уже скорее всего не соответствуют действительности (например, ничего из приведенного выше списка вы уже не воспроизведете). Проблема в том, что сейчас почти все сообщения такого рода начинаются с "я тут попробовал..." В этом нет ничего плохого, так как мы имеем дело с новейшей технологией. Но все же между "я попробовал" и реальной работой существует большой зазор. Современные языковые модели так устроены, что если задаться целью их "сломать", то вас почти наверняка ожидает успех. "Пробовать" означает экспериментировать, искать экстремумы. Это почти исследовательская работа. А просто работа означает тихо, спокойно получать то, что вам нужно. Находясь при этом вдали от этих самых экстремумов и совершенно не задумываясь о том, как бы это все можно было сломать. Если взглянуть на проблему под этим углом, то окажется, что это для нереальных проблем сложно искать решения, а для реальных все значительно проще.

У меня есть сервис, который с помощью языковой модели от OpenAI преобразует вопрос на естественном языке в текст SQL запроса. Далее этот SQL запрос отрабатывает, полученные данные предоставляются пользователю. Подключение к процессу нейросети скрыто "под капотом". Пользователь просто вводит свой вопрос и получает ответ из своей же базы данных

Вопросы можно задавать любые и в любом виде. Также можно уточнять вопросы в режиме чата. Рассмотрим следующий пример

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

Так как у нас нет никаких ограничений на входе, то этот же вопрос пользователь может задать и по другому. Например, недолго думая, вот так

Как видите, результат отличается от предыдущего, который считаем правильным. Получив такую расплывчатую и неоднозначную формулировку, нейросеть не отказалась решать нашу задачу. Она взяла и придумала какое-то свое решение. Вот это самое "придумала свое" и считается чем-то нехорошим. Но давайте задумаемся, а куда мы хотим попасть? В теплый, ламповый мир приложений, разработчики которых лучше нас знают, что нам на самом деле нужно. Они все за нас решили. Дали нам два (или двадцать два, не суть) пункта меню. И жизнь наша проста и незамысловата? Но мы и так уже здесь. Если же мы придерживаемся концепции, что решать что нам нужно можем только мы сами, тогда с неизбежностью нам самим придется как-то определять, получили ли мы то, что хотели или нет.

Что делать

Для пользователя, который не владеет SQL, ситуация выглядит, как патовая. В самом деле, он может потому и обратился к сервису, что не знает SQL. А теперь ему нужно прочитать текст SQL запроса и решить - то ли это, что он хотел или не то.

Решение есть и дает его та же самая языковая модель. Она ведь может работать и в "другую сторону". Вы можете не знать SQL, но вы можете попросить языковую модель объяснить словами, что именно делает этот SQL запрос.

При нажатии на кнопку, в нейросеть отправляется запрос: "Объясни словами SQL запрос" и далее текст запроса.

Таким образом мы можем проверить насколько соответствует нашим ожиданиям то, что мы получили от языковой модели. Для сравнения приведу такое же объяснение для предыдущего примера:

Что в итоге

В общем случае, для "сферического коня" решения проблемы "галлюцинаций" больших языковых моделей, наверное, не существует. Но в конкретных рабочих ситуациях такое решение есть. Двойные зеркальные вопросы, когда вы сначала просите нейросеть решить проблему, а потом просите ее же объяснить решение в практическом применении дают очень хороший результат.

Теги:
Хабы:
Всего голосов 11: ↑5 и ↓60
Комментарии7

Публикации

Истории

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
10 – 11 октября
HR IT & Team Lead конференция «Битва за IT-таланты»
МоскваОнлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн