Комментарии 36
А что если галлюцинирование - это заложенная в ИИ функциональность, чтобы не сильно пугать кожаных своими возможностями? Да не, фигня какая-то.
Я конечно фигею с этого техношаманизма...
«Сам не знаю, как это всё работает, но ведь работает же». С. Мавроди.
Поражаться тут нечему. Сделано местами наивно.
«Не галлюцинируй» — это вишенка на торте. Ничего хорошего такое не даст. Чёткого определения галлюцинаций БЯМ до недавних пор не было, в датасетах это представлено плохо. Сами модели не понимают, что они делают и себя не осознают. Такое мог написать впервые знакомящийся с технологией разработчик, который про галлюцинации где-то услышал.
Галлюцинации от системного промпта зависят слабо. Невозможно их вот так просто отменить.
В целом в промпте важно не только то, что сказано, но и то, что не сказано. У меня сложилось ощущение, что лучше не просить «не сделать», а подобрать глагол без «не». Пример: «не переводи текст на уровне подстрочника» → «перевод должен звучать естественно, правильно передавай стиль оригинала». И вообще общаться с БЯМ лучше лаконично, аккуратно отмеряя каждое слово.
Возможно, что из-за присутствия глагола «галлюцинировать» случится обратный эффект, и модель будет чуточку чаще галлюцинировать.
«Выдавай правильный JSON». Иногда JSON будет ломаться. Даже если давать на входе абсолютные требования «всегда делай вот это», БЯМ могут в крайне редких случаях «вот это» и не сделать. И личный опыт утверждает, что чем больше этих абсолютных требований, тем выше вероятность, что одно из них будет случайно нарушено.
Странно, что не используется function calling самой OpenAI.
Прочие мелочи типа слова «пожалуйста» или восклицательного знака в «Ты режиссёр на съёмках кино!». Особая вежливость для БЯМ не требуется, их выравнивание уже задало им нужную роль, поэтому
please
— это впустую потраченный токен. Второй пример может увенчаться восклицательным знаком в первом предложении ответа или более возбуждённым стилем.
В целом написано типичным стилем «Ты %роль%, ты делаешь %задача%». То есть в общих чертах с соответствующей страницей поддержки OpenAI автор этих промптов был знаком, наверное. Но дальше начинаются эти странные детали.
Модель то может себя не осознаёт, но "понять" что от неё хотят, может вполне
I understand your request not to hallucinate. As an AI language model, I do not actually have the capability to hallucinate or generate completely fabricated information. My responses are based on the training data I have been provided, and I aim to provide relevant and truthful information to the best of my abilities.
When you ask me not to hallucinate, it means that you want me to avoid generating any content that is not grounded in facts or my training data. I will strive to provide responses that are factual, coherent, and directly relevant to your query, without introducing any speculative or imagined content.
My answers may change slightly in tone or emphasis, as I will be more cautious about making any claims or statements that could be considered hypothetical or unsubstantiated. I will focus on providing information that I am confident is accurate and supported by my training.
Overall, your prompt helps me understand that you are looking for a response that is firmly rooted in reality, without any flights of fancy or unverified claims. I will do my best to deliver an answer that meets those expectations.
Языковая модель не знает, как она работает. Попробуйте ещё у неё спросить, как она отвечает на промпт. Начнётся полный бред «я планирую в несколько стадий, улучшаю, а только потом даю ответ», а не правильное «ничего не планирую, просто пытаюсь предсказать следующий токен по ходу генерации».
В данном случае модель расписывает понимание, как статистически наиболее вероятно понимался глагол «галлюцинировать». При этом модель несёт откровенный бред. Просто попробуйте вчитаться:
Сначала идёт утверждение, что БЯМ — это ИИ, поэтому галлюцинировать не может вовсе.
Затем модель обещает стараться не галлюцинировать. Странно. Зачем стараться избегать какого-то поведения, если физически на него не способен?
Под конец идёт попытка объяснить, почему галлюцинации возможны, и ещё одно обещание избегать галлюцинации.
Кстати, здесь модель фактически признаёт, что галлюцинации неизбежны. Достаточно прочитать текст и задуматься о сказанном.
БЯМ говорит, что будет осторожнее с hypothetical statements. Ответы на подавляющее число вопросов выглядят как гипотетические утверждения. Что говорить о будущем, даже исторические исследования — это спекуляции и противоречивые источники.
Substantiate — это «to establish by proof or competent evidence», если верить Dictionary.com. Модель обещает быть осторожнее с заявлениями, которые можно охарактеризовать как unsubstantiated. Без интеграции с приложениями БЯМ физически не могут давать гиперссылки на источники, то есть «proof or competent evidence» невозможен.
Получается, что БЯМ противоречит сама себе — то есть уже галлюцинирует в 4 абзацах текста. Текст звучит хорошо, усыпляет ответственную за скептицизм часть мозга, поэтому вы в него не вчитывались и скопипастили мне его как доказательство.
Не надо, пожалуйста, копипастить мне (или куда угодно ещё) какие-то непонятные куски вывода ChatGPT как доказательство чего-либо. Языковая модель — не источник абсолютно никакой информации. Складно выглядящий текст не всегда является правильным.
Складно выглядящий текст не всегда является правильным
Что применимо к любому тексту, включая ваш ответ.
PS: Я просто констатирую факт, что эта фраза применима к любому тексту, не только сгенерированному LLM, но и к тексту статей, книг и в том числе и вашему комментарию. Да и к этому моему комментарию тоже. Люди тоже "галлюцинируют".
PPS: Спасибо за минус в карму. К сожалению не вижу "за что" (физически не вижу в интерфейсе). Буду благодарен, если напишите комментарием.
Любопытно, что инженеры Apple наивно просят БЯМ не галлюцинировать, будто модель делает это осознанно и вообще обладает пониманием подобных концепций и своего поведения.
Интересно было бы провести эксперимент - посчитать % галлюцинации разных моделей и посчитать на тех же вводных данных, но системным промптом "не галлюцинируй"? А если это помогает? Будет ли это являться зачатками самосознания?
Скорее всего люди, писавшие промпты, понятия не имеют как и что в этом чёрном ящике работает. Вот и имеем "не галлюцинируй" по аналогии с начинающими программистами, бережно перепечатывающими комментарии в исходном коде из учебника.
А вы уверены, что "не галлюцинируй" не помогает?
Действительно, как писал выше @avshkol
Интересно было бы провести эксперимент - посчитать % галлюцинации разных моделей и посчитать на тех же вводных данных, но системным промптом "не галлюцинируй"
Почему "не галлюцинируй" должно действовать хуже чем "Act as…" или другие подобные инструкции?
Может и так. Но мне кажется, в отличии от "Представь что ты..." (или как "Act as" переводится?), в датасетах фраза "Не галлюцинируй" встречалась не настолько часто, чтобы модель смогла её корректно интерпретировать применительно к качеству результатов своей работы.
Понятие "галлюцинации" относится к семантике языка, а языковые модели работают только с синтаксисом.
Команда "не галлюцинируй" по смыслу примерно равна "давай правильный ответ, даже когда его не знаешь". ИИ понятия не имеет о том, галлюцинирует он или нет. Определить уровень галиццинаций ИИ может только надстоящий над ним более развитый интеллект.
Как по мне, скорее "давай ответ основанный на фактах, когда не знаешь не говори ничего".
Я не говорю, что команда "не галлюцинируй" уберет все галлюцинации. Но она вполне может изменить ответ с "для улучшения пищеварения следует ежедневно употреблять битое стекло натощак" на "улучшению пищеварения возможно поможет ежедневное употребление битого стекла натощак" или даже "у меня недостаточно информации о влиянии приема битого стекла на пищеварение"
"Не галлюцинируй" — ну т.е. за два года никто так и не смог придумать, как избавить нейросети от галлюцинаций, так что теперь решили просто вежливо об этом попросить, ну а вдруг сработает?
Hidden text
Я правильно понял, что вместо использования нейронки заточенной на конкретную задачу они берут gpt и просто докидывают промпт по умолчанию? Значит железа настолько много, что париться над оптимизациями не надо (разработки/допиливания более простой нейронки под конкретную задачу), можно запускать большую модель с костылями и продавать как супер инструмент?
Для меня это звучит как high load на питоне. Написать то быстро, но работает раз в 10 медленнее.
Чтобы обучить GPT-4 тратились месяцы вычислений на кластере из 25 тысяч A100, там только на оплату счетов за электричество миллионы долларов ушли, и стоит ли после этого обучать ещё какую-то нейросеть, когда и эта прекрасно справляется, при том что хоть все эти конкретные задачи отличаются в частностях, по сути все это обработка естественного языка, под который GPT и заточен
Для меня это звучит как high load на питоне. Написать то быстро, но работает раз в 10 медленнее.
Как же надоели эти некомпетентные хейтеры. Если у вас питон (с фортрановскими и сишными библиотеками в основе) работает медленно, то дело не в питоне, а в вас. И сам код на питоне с numba обгонит ваш абы какой код на си (если вы вообще можете что-то полезное написать на си). Можете и у меня на гитхабе найти проекты на питоне, намного быстрее аналогов на си.
Если вы не понимаете почему питон глобально медленный и ставите в пример использование быстрых библиотек написанных на си, то у меня для вас плохие новости
Не стесняйтесь, расскажите нам, почему питон «медленный», хотя на деле порой обгоняет ассемблерный код, созданный gcc, с помощью простой обертки (см. numba). Но прежде чем ерунду писать, погуглите, что такое и как работают cpython и numba. Это уже не говоря про изменения в версии питона 3.13 (впрочем, в numba нужное давно есть).
Это уже не питон. Это питон на костылях, numba про это. В си тоже асмовые вставки можно делать, но никто не говорит что си равен по скорости асму. Cpython это же просто типовая реализация питона.
Я оцениваю как бекендер, это не прочислодробилки (которые в питоне унесли в сишные либы и гордятся), это про реализацию типовых протоколов. Про асинхронность и многопоточность (как там gil поживает?), про скорость базового ооп (в питоне до сих пор словари в основе всего? Или есть костыль в виде сишной либы). Когда говорят про медленность питона, то говорят про именно питон как ни странно, а не про узкоприменимые либы. А сумма <gil=нет эффективно многопоточки>+<словари в основе> кумулятивным эффектом равняется "медленный питон непригодный к хайлоаду"
Питон сейчас приемлем как скриптовый язык для всякого ml, но хайлоад в здравом уме на нем не делают. А все кто сделал страдают и огребают проблем
В яваскрипт jit компиляция давно и по умолчанию, почему для питона вы это же «костылями» называете? Очевидно, по неграмотности. Ни о каких «вставках» речь не идет, декоратор numba меняет способ выполнения кода, если «на пальцах», ровно так же, как современные браузеры это делают для яваскрипт.
как там gil поживает?
Выше я вам посоветовал погуглить, прежде чем продолжать ерунду писать. Если до вас снова не доходит, погуглите про gil в numba (опция nogil=True) и в вышеупомянутом релизе Python 3.13 (опция сборки -disable-gil).
Это все здорово, только вопрос в другом, эти все чудеса отставшего от индустрии питона - совместимы со всеми библиотеками? Или это всеже узконаправленные доработки?
В языках где это все было изначально совместимость есть по сути со всеми либами и фреймворками. Как с этим у nogil и numba?
Для нормальных языков не нужно извращаться и придумывать новый синтаксис для базовых вещей и писать каким-то особым образом для достижения базовой скорости работы. Питон nogil начал делать очень поздно и политические решения разрабов ядра о его долгом недобавлении думаю похоронили питон как язык бекенда в глазах многих.
Я не особо разбираюсь в питоне и numba, но:
JIT (Just-In-Time) компилятор – это инструмент, который компилирует код Python в машинный код «на лету», во время выполнения программы.
Просвятите, как у вас получилось так, что исполнение машинного кода от C компилятора работает медленнее, чем python, которому еще нужно на лету этот самый машинный код сгенерировать? Вы что выключили оптимизацию для C, а для python включили?
https://murillogroupmsu.com/numba-versus-c/
Я могу ответить ) Глубоко в теории компилятор компилирует код максимально оптимальный, НО при этом корректный для всех входящих данных и не пишет прям "идеальный" по оптимальности в текущем случае код, ибо мысли читать не умеет, и будущее не видит. По идее можно подсказать компилятору как именно работать в этом месте, где больше углов посрезать - сделав замеры на реальном коде и перекомпилировав, так мало кто делает (это профилировпние какраз).
А вот технология jit работает на лету, и кроме компиляции делает и профилирование и рекомпиляцию под самый частый случай, в определенных ситуациях это может сделать код быстрее сишного даже. И это какраз наверно заметнее всего в бизнес коде. Условно скипнет проверку типа если он точно не может быть другим, или проверит тип и пойдет сразу в нужный метод объекта по адресу, минуя допроверки, и вычисления адреса метода.
Но у питона и ооп неудачное в плане оптимальности исполнения на процессоре и с многопоточкой много лет проблемы (щас хз, но кажется еще по дефолту не починили).
Так что да утверждение сомнительное, но не из-за jit, а из-за питона
Забавно. Обычно с галлюцинациями борятся фразой "не отвечай на запрос, если не знаешь или не уверен в ответе", а не прямой фразой "не галлюцинируй". Как модель должна понять, о чем речь?
Не понимает оно "не галлюцинируй". Кстати и обратное тоже не особо работает. Например. мне надо написать особо упоротую сказку в духе "Гуртовщиков мыши". Можно весь промт просить ее галлюцинировать, сходить с ума, писать бред и выдумывать что попало, но если самому не написать вкратце этот сюжет сказки - на выходе будет нечто стандартное.
Про "не галлюцинируй". Это может быть задел на ближайшее будущее. Допустим в Apple знают, что разработчики ИИ активно занимаются проблемой галлюцинирования (а они занимаются), и в ближайшее время эта директива будет срабатывать.
Нет, это однозначно кривой (или не кривой) prompt engineering.
Допустим в Apple знают, что разработчики ИИ активно занимаются проблемой
галлюцинирования (а они занимаются), и в ближайшее время эта директива
будет срабатывать.
Проблемы галлюцинаций если и будут решены (как их решить, если LLM делают ровно то, что от них требуется? Уменьшить количество неправильных ответов — можно. Исключить все ошибки вовсе — маловероятно), то такие инструкции будут абсолютно лишними.
"Не галлюцинируй" - Это же в стиле законов робототехники.
Промпт от какого-нибудь свеженанятого для нового отдела AI индуса, оттого и "качество". Мне кажется, или assistant скорее that helps чем which helps? to their mail или emails, но не mails. limit the answer to а не within. Странно это как-то.
«Не галлюцинируй»: реддитор достал из macOS 15.1 Beta 1 системные промпты Apple Intelligence