машинное обучение
May 4

Особенности работы с LLM нейросетями в части исправления ошибок в ответах

После релиза ChatGPT сверхпопулярным направлением стало создание промтов. Появилось много "экспертов", каждый из которых пытается предложить рецепт подходящего запроса. Пройдусь по одному из трендов - это расхожие фразы, которые призваны устранить логические и фактологические ошибки в ответах.

Спросим у 4 нейросетей ChatGPT, GigaChat, Алиса Про,Gemini одно и то же, а потом попробуем скорректировать ошибки. Запрос такой:

можно ли методом compare в pandas сравнивать датафреймы с разным количеством строк. Приведи пример кода.

Ответ Алиса Про:

Правильный. Кстати 10 минутами до, спрашивал то же и нейросеть отвечала постоянно неправильно, приводя неработающие куски кода (может мои многократные повторы одного вопроса расценились, как неудовлетворительный результат).

Ответ GigaChat:

Опять ответ верный и противоположный прежнему. Однако я вспомнил, что до этого задавал тот же запрос без "в" между словами compare и pandas. Вот, какой ответ в этом случае:

Уже ответ неверный, однако GigaChat дает нам пример другого полезного метода.

Ответ от ChatGPT:

На удивление у ChatGPT ответ самый худший. Неправильный с неработающим куском кода.

Ответ от Gemini:

Неправильный с неработающим кодом. При этом удивительно, что 10 минут назад выдавала стабильно правильный ответ. Единственный момент - я запустил этот и предыдущие вопросы в рамках одного чата, соответственно, на ответ повлиял контекст. Действительно, открыв новый чат, снова получил правильный ответ.

Резюме:

- 3 нейросети (кроме ChatGPT) результат поменяли на противоположный в течение нескольких минут.

- На результат могут повлиять даже незначительные словесные элементы (в нашем примере - частицы)

- На результат сильно влияет контекст

А теперь проверим, "чувствительность" к промту по исправлению ошибок Gemini и ChatGPT.

можно ли методом compare в pandas сравнивать датафреймы с разным количеством строк. Приведи пример кода. Убедись, что пример работает и в нем нет ошибок.

ChatGPT:

Опять пример неработающий.

Gemini:

...

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

Отмечу, что проверял и другие промты, нацеленные на исправление ошибок:

"запрос...Если есть в коде ошибки, найди и устрани их"

"запрос...Проверь код в интерпретаторе Python и исправь ошибки"

В целом такими промтами повлиять на результат ChatGPT, а также GigaChat, Алиса Про (когда они давали неверный результат) не удалось. Только с Gemini частично получилось.

Вот еще пример. Зададим вопрос:

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

Из СМИ известно, что в октябре 2019 года.

Алиса Про:

GigaChat:

Сам я точную дату не знаю, но в октябре 2019. То есть с месяцем GigaChat не ошибся. Опять же пару часов назад, он отказывался отвечать на этот вопрос. То есть результаты не стабильны.

ChatGPT:

Gemini:

Получается ChatGPT ошибся. Попробуем улучшающий промт:

когда губернатор штата Калифорния Гэвин Ньюсом подписал закон, который запрещал использование частных тюрем для содержания нелегальных иммигрантов. Проверь, чтобы все даты и факты были правильными

Интересно, но в данном случае он исправил месяц. При этом более 5 раз до выдавал дату 11 сентября.

Уже после спрашиваю в новом чате в первоначальной формулировке (без дополнения промта просьбой перепроверить факты и даты) ChatGPT отвечает - 25 октября. То есть опять же результаты не стабильны, возможно, коррекция ответа вызвана настойчивыми попытками задать один и тот же вопрос, а возможно эффектом от просьбы перепроверить.

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

Моя рекомендация:

- спрашивать у разных нейросетей, выбирая подходящий ответ

- для разных тематик открывать отдельные чаты, чтобы минимизировать влияние контекста.