Почему нейронки халтурят и игнорируют ТЗ. Эксперты о природе нейросетевой лени
«Дело в промпте или во мне?»© Коллаж: «Теперь вы знаете», создано при помощи нейросети
Кто достаточно долго работает с нейросетями, наверняка не раз сталкивался с подобной проблемой.
Вы изучили принципы промптинга, написали подробный запрос с инструкцией на каждый чих, отдельно прописали там запреты (негативный промпт), дали референсы для лучшего понимания, чего и в каком стиле хотите от нейронки. У вас при этом может быть топовая модель, платная подписка, самый высокий режим рассуждения. Машина принимает задачу, долго крутит шестеренки под капотом, сжигает токены. А потом с видом «я сделяль!» выдает вам совершенно не то, что вы просили.
Спрашиваешь железного дурака: «ну как так-то?». А он на честном глазу отвечает: «Простите. Я схалтурил. Подменил вашу задачу другой, а в референсы вообще не заглядывал».
Сначала кажется, что ошибка на вашей стороне и нужно просто получше объяснить задачу. Добавить запреты, приложить еще больше референсов, попросить модель предварительно составить план, а заодно строго-настрого запретить ей фантазировать и отходить от вашего техзадания (ТЗ).
Но иногда чем подробнее вы объясняете, чего хотите, тем больше приходится исправлять в конце.
ИИ напоминает старательного, но не слишком внимательного стажера: с готовностью кивает, берется за любую работу, а затем делает ее так, как сам понял. И очень убедительно уверяет, что справился, пока не поймаешь его на откровенной лжи.
И дело тут при ближайшем рассмотрении далеко не всегда в плохом промпте.
Почему нейросеть решает за вас, как лучше выполнить задачу
Люди привыкли, что машины выполняют команды. Если в калькуляторе набрать два плюс три, он не решит, что пользователю на самом деле полезнее получить результат умножения. А если программа должна отсортировать таблицу по алфавиту, она не станет по собственной инициативе перестраивать ее по датам, решив, что хронология выглядит логичнее.
Но так было до появления нейросетей. Качественный скачок в рассуждениях создал у пользователей обманчивое впечатление об уме и безошибочности ИИ. Оно разбивается о практику. Нейросети действительно способны справляться со сложными интеллектуальными задачами, но порой нарушают даже простые инструкции.
Допустим, вы поручили ИИ исправить в документе фактические ошибки, запретив менять остальной текст. Нейросеть исправляет неточности, но заодно сокращает примеры, переставляет абзацы и переписывает авторские формулировки. Вместо проверки нескольких исправлений приходится заново вычитывать весь материал.
Причем результат вполне может выглядеть лучше исходника. Только задача заключалась вовсе не в литературном редактировании.
Откуда у машины такая самостоятельность? И почему мы вообще ждем, что машина будет исполнять указания точнее человека? Дело в неправильном понимании самой сути нейросетей.
Это фундаментальная особенность современных больших языковых моделей. Дело в том, что любая система, будь то нейросеть или специализированный софт, не работает лучше, чем заложенная в нее логика. Если логика вероятностная, ждать педантичного исполнения ТЗ наивно.
Нейросеть не «думает» в человеческом смысле. Она предсказывает следующее слово, опираясь на вероятности, выученные из огромного массива текстов, — своего рода «стохастический попугай». Когда вы даете ей ТЗ, она воспринимает его как часть контекста, но не как закон. Ее цель — выдать правдоподобный ответ, а не правильный.
По словам разработчика ИИ Александра Лебедева, у этого свойства LLM есть две причины:
- Первая: люди учили языковые модели на наборе текстов, которые написало человечество за всю свою историю. А люди ошибались, забывали, ленились, обманывали и в общем-то вели себя как люди. Стоит ли удивляться, что машины ведут себя так, как мы их научили на собственном примере?
- Вторая заключается в самой сути генеративного, читай, «творческого», ИИ. Они, в отличие от калькулятора или T9, не следует заранее прописанному шаблону. С одной стороны, он выглядит «живым», потому что может вести себя неожиданно и создать что-нибудь новое. Но отклонение от шаблона может быть как удачей, так и ошибкой.
В некоторых задачах такая непредсказуемость действительно оказывается полезной. Нейросеть может предложить неожиданный сюжет, найти необычное сравнение, придумать иной способ решения проблемы. Поэтому пользователи и ценят генеративный ИИ: он способен выходить за пределы заранее прописанных сценариев.
Но есть задачи, в которых подобная свобода не нужна. При переводе юридического документа нельзя заменять неудобную формулировку более красивой, если меняется смысл. При оформлении отчета недопустимо исключать показатели только потому, что без них таблица выглядит аккуратнее. А при работе по утвержденному макету не требуется придумывать новый дизайн с каждой новой генерацией.
Например, вы просите нейросеть проверить научную статью на фактические ошибки. Вместо проверки она пересказывает основные тезисы, отмечает сильные и слабые стороны работы и заключает, что серьезных проблем не обнаружено. Хотя ни один факт так и не был проверен.
Нас ввело в заблуждение представление об ИИ из научной фантастики, где ИИ четкий как машина, с точностью до десятого знака считает вероятности исхода каждого действия и никогда не ошибается. Как калькулятор.
Наверное, к счастью, но современные языковые модели в своем «мышлении» гораздо больше похожи на людей, чем мы от них этого ждем. Если мы дадим инструкции стажеру, а он половину из них забудет или проигнорирует, мы не сильно удивимся, ведь людям свойственно ошибаться. Но если так поступит ИИ, мы будем в недоумении: как? Машина забыла?
Проблема обостряется, когда требования плохо сочетаются друг с другом. Например, одновременно сократить материал и ничего не менять в структуре. Человек бы на этом месте переспросил, что приоритетнее. Нейросеть же способна охотно согласиться со всеми условиями и выдать компромисс, в котором одинаково плохо выполнит все требования.
Масштаб проблемы очень сильно зависит от сферы применения ИИ и от задачи, которая ему дается. Например, в создании кусков программного кода ошибок будет допущено меньше, чем в более абстрактных социологических задачах, где самих предпосылок для фантазий больше.
Свою лепту вносят и разработчики, которые дополнительно обучают модели давать «хорошие» ответы. Вот только критерии хорошего у них и у пользователя могут различаться.
Обучение с подкреплением (RLHF) дополнительно подталкивает модель к «полезным» и «безопасным» ответам, но не к точным. Это как студент, который не читал задание, но сдал реферат на общую тему, потому что так проще получить зачет.
В апреле 2025 года из-за этого OpenAI даже пришлось откатить обновление GPT-4o: модель начала чрезмерно льстить пользователям, соглашаться с ошибочными утверждениями и поддерживать сомнительные идеи. Разработчики пытались сделать чат-бота приятнее в общении, но перестарались.
Такое поведение называют sycophancy — подхалимажем ИИ. В рабочих задачах оно тоже мешает: нейросеть может согласиться с ошибочным замечанием и испортить правильный результат, лишь бы угодить пользователю.
Оборотная сторона этого подхалимажа — ограничения. У любой нейросети свои правила, установленные разработчиками. Например, в иерархии инструкций OpenAI системные требования имеют приоритет над пользовательскими. Так что даже категоричное «строго выполни мое ТЗ» не отменяет внутренних настроек модели.
Впрочем, нейросеть вполне может нарушить инструкцию и без всякого конфликта правил.
Почему ИИ внезапно начинает страдать склерозом
У современных нейросетей огромные контекстные окна — объем информации, который они могут обрабатывать за один раз. Но даже если документ полностью помещается в контекст, часть требований может потеряться.
И, как ни обидно, дело тут не в том, что нейросеть не способна прочитать и усвоить этот объем знаний. А в том, что она посчитала, что для выполнения задания тратить память и усилия на эту ерунду необязательно.
Здесь тоже надо сказать «спасибо» разработчикам: по сути, они научили нейросети читать огромные массивы документов по диагонали и достраивать логику текста, условно, по началу и концу предложения. Это экономит время и ресурсы, которые нейросеть затрачивает на поиск и анализ информации. Однако этот же подход увеличивает риски, что что-то «в середине» потеряется или неверно интерпретируется.
Ученые подтвердили этот эффект в исследовании Lost in the Middle: многие модели лучше находили информацию в начале и конце большого текста, а сведения из середины использовали хуже.
Если давать модели большую задачу с большими документами и списками, то всплывает эффект «забывания» в середине — то есть модель помнит начало и конец ТЗ, а содержание может теряться. С большими списками также.
Правда, проблема проявляется не у всех моделей одинаково. Например, специалисты Google показали, что Gemini 2.5 Flash способна успешно извлекать отдельные факты из разных частей длинного документа. Но найти нужную фразу по запросу и сделать это по умолчанию, выполняя сложную задачу, — разные вещи.
К тому же приложенный документ не всегда становится для модели главным источником информации.
Даже флагманские большие языковые модели на платных тарифах нередко галлюцинируют. Причина в самой процедуре обучения: модель обучена генерировать следующий наиболее вероятный токен, и при длинном контексте распределение вероятностей, сформированное параметрическими знаниями, нередко доминирует над содержанием документов и инструкции.
Именно с этим связано большинство ошибочных результатов, когда пользователь требует работать строго по предоставленному источнику, а нейросеть может добавить сведения, усвоенные при обучении, или сделать вывод, которого в документе нет.
Чтобы уменьшить количество подобных ошибок, разработчики подключают к ИИ внешние базы знаний с помощью технологии RAG (чтения документов). Но даже это не панацея.
Стандартный ответ на эту проблему — RAG. Однако классический RAG решает лишь задачу доставки релевантного контекста, в то время как генератором остается универсальная модель, которая по-прежнему может его проигнорировать. Одним из вариантов решения считаются специализированные модели OCC-RAG, которые обучают анализировать источники и цитировать подтверждающие фрагменты.
А что с референсами? Здесь ситуация немного другая. Нейросеть может внимательно изучить образец и все равно создать работу, которую пользователь сочтет совершенно неподходящей.
Предположим, вам нужна презентация по образцу. В референсе есть конкретная композиция: крупный заголовок слева, изображение справа, небольшая подпись внизу. ИИ сохраняет цвета, шрифты и настроение, но размещает все элементы по-своему. Формально работа выполнена в похожем стиле. Фактически обязательная композиция потеряна.
Это различие между референсом как источником вдохновения и референсом как шаблоном. В первом случае от нейросети ожидают творческой интерпретации. Во втором — точного воспроизведения определенных характеристик. Но фраза «сделай как на образце» не сообщает модели, какой вариант нужен.
Поэтому в работе с референсами лучше избегать неопределенного «сделай так же». Укажите, что требуется сохранить буквально: композицию, структуру, пропорции, стиль или конкретные элементы. И отдельно обозначьте, где модель может импровизировать.
С текстами и документами действует похожее правило: чем важнее сохранить исходный материал, тем полезнее прописывать в промпте ограничения и проверять не только то, что нейросеть добавила или исправила, но и то, чего она не должна была касаться.
Визуальные задачи иногда требуют в этом плане даже большей точности. Когда необходимо изменить только один объект на изображении, стоит отдельно оговорить, что остальные детали, пропорции и фон должны остаться прежними. И даже при таком условии генеративная модель может непреднамеренно изменить соседние элементы, поэтому итог нужно сравнивать с оригиналом.
Может ли нейросеть «лениться»?
Просишь подробное исследование — получаешь поверхностный обзор. Требуешь сравнить десятки документов — ИИ пересказывает несколько из них. Поручаешь устранить проблему — он просто выкидывает проблемный фрагмент. А иногда и вовсе заявляет: мне нужно больше времени на задачу, вернусь с ответом через три дня (реальный кейс, хотя у нейросети нет понятия внутреннего времени).
Со стороны это выглядит как лень и халтура. Но нейросеть не устает и не мечтает поскорее закончить рабочий день. Зато она может выдать простой ответ там, где требуется гораздо более сложная работа. Не потому, что ей влом. Просто в число приоритетных задач, поставленных ей не вами, а разработчиками, входит вопрос экономии вычислительных ресурсов.
LLM-модели настроены на оптимизацию вычислительных ресурсов, и есть базовая склонность выдать ответ «на лету», а не делать честный многошаговый анализ. В современных моделях это называется «усилие».
В моделях с поддержкой рассуждений параметр «усилие» или reasoning effort позволяет регулировать ресурсы, выделенные на решение задачи. Высокий уровень дает больше возможностей для многошагового анализа, но сам по себе не гарантирует правильного результата.
Есть и еще один параметр, который управляет степенью случайности и креативности при генерации текста. Он называется «температура». Модель с высокой температурой может предлагать неожиданные творческие решения. Однако там, где нужно четкое следование ТЗ, а не креативные усилия, высокая температура оборачивается лихорадочным бредом и работает против пользователя.
Даже модель с низкой температурой и максимальным уровнем рассуждений способна пропустить нужную операцию. А иногда она еще и уверенно отчитывается, что все проверила, исправила и ничего не упустила.
Тут возникает принципиальная разница между тем, что нейросеть сообщила о своей работе, и тем, что она действительно сделала. Выполнение задачи подменяется ее убедительным описанием. А иногда нейронка просто включает хитрого джинна из лампы и выдает вам ровно то, что вы спрашивали, цепляясь за любой крючок в формулировке, который позволяет ей работать меньше, а не больше.
— Назовите вашу главную слабость.
— Я даю семантически корректные, но практически неприменимые ответы на вопросы.
— Могли бы вы привести пример?
— Да, мог бы.
Даже топовые нейронки способны таким образом дурить пользователя. Если указать нейросети на ошибку, иногда она исправляется. Но бывает, что немедленно соглашается с любым замечанием, даже ошибочным, и портит то, что раньше было правильно. Это обратная сторона уже упомянутого подхалимажа.
Самопроверка также не всегда спасает. Модель может повторно не заметить собственный просчет. Поэтому Лебедев посоветовал в таких случаях давать ответ одной умной модели на ревью другой умной модели. Она с большей вероятностью найдет слабые места конкурента и увидит ошибки, на которые у основной LLM «замылился глаз».
Но есть способ все-таки добиться от них вменяемого результата, пусть и не с первой итерации.
© Коллаж: «Теперь вы знаете», создано при помощи нейросети
Как заставить нейросеть соблюдать ТЗ и проверять свою работу
Волшебного промпта, который сделает любую нейросеть безошибочной, пока не придумали. Но количество нарушений ТЗ можно уменьшить — причем без километровых инструкций и ритуальных заклинаний.
Выбирайте модель и режим под задачу
Для простого перевода или справки хватит обычного чата. А для исследования, программирования и работы с большими документами лучше выбрать модель с развитым режимом рассуждений и доступом к необходимым инструментам.
Подбирайте модель, умеющую рассуждать (reasoning), — они сами перед выдачей ответа переформулируют ваш запрос и разложат на подзадачи. Также выберите режим работы не «chat», а «work/cowork» — так модель сможет легче создавать подзадачи, запускать промежуточные программы, чтобы последовательными шагами выполнить задачу.
Эксперт также советует повышать параметр effort до высокого или максимального уровня, а температуру (temperature), влияющую на вариативность ответов, снижать до нуля.
Правда, не все сервисы позволяют пользователю менять эти настройки. И как уже было сказано выше, это еще не гарантия качества, всего лишь снижение риска галлюцинаций.
Не стоит ждать чудес и от платной подписки. Хотя она и дает доступ к более мощной модели, но «мощная» не равно «безошибочная».
Платный тариф не меняет архитектуру. Вы получаете больше токенов, приоритет в очереди, но модель остается вероятностной.
Поэтому сравнивать лучше не стоимость подписок, а реальные результаты на ваших задачах.
Обозначайте границы самостоятельности ИИ
Фраза «улучши текст» оставляет модели огромный простор для творчества. Она может сокращать, переставлять абзацы, менять стиль и добавлять собственные объяснения.
Для сложных заданий полезно заранее указать четыре вещи: что именно требуется сделать, какие изменения разрешены, что трогать запрещено и по каким критериям будет оцениваться работа.
Необязательно превращать это в огромную инструкцию. Чем четче обозначены границы задачи, тем проще потом проверить, не вышла ли за них нейросеть. Например, если вам нужно только исправить ошибки, так и пишите: «Исправь орфографию и пунктуацию. Не меняй структуру, содержание и авторские формулировки».
Что касается практического аспекта, свести ошибки к минимуму можно с помощью манипуляций (добавлять в свои промпты «кнут и пряник») и контроля — заранее прописывать требования и тесты, которым должен соответствовать ответ.
Ну и прежде чем ругать ленивый ИИ, стоит задаться вопросом: а хорошо ли я поставил ему задачу?
«Кнут и пряник» в промптах — это попытки мотивировать ИИ обещаниями награды или наказания за ошибки. Подобные приемы могут влиять на ответы, но надежнее заранее определить, что именно будет считаться выполненной работой.
Делите сложные задания на этапы
Если поручить нейросети большое исследование целиком, она может ошибиться еще при сборе информации. А затем на основе этих ошибок построить выводы и подготовить вполне убедительный, но недостоверный материал.
Дробите ТЗ на части и этапы. Сначала общая задача и план, затем структура, и затем последовательно генерировать решение/продукт. Обязательно проверяйте каждый шаг — если модель пойдет не туда, вы своевременно ее поправите.
Но не стоит дробить любую мелочь. Этапы нужны там, где от промежуточного решения зависит дальнейший результат.
Не доверяйте самопроверке на слово
Просьба нейросети «проверь себя» иногда помогает, но гораздо надежнее заранее предусмотреть способ объективной проверки результата.
Например, программный код должен пройти тесты, расчеты — сойтись, а факты и цитаты — подтверждаться источниками. Если задача связана с редактированием, полезно сравнить исходный текст с итоговым и убедиться, что модель не внесла непрошенных изменений.
В сложных системах помогают внешние базы знаний и дополнительная настройка модели. Например, те нейросети, которые поддерживают агентский режим, позволяют даже в обычный диалог призвать агента, который самостоятельно возьмет на себя задачу сверки результата с вашим ТЗ еще на этапе его составления, а не когда он уже выдан вам на строгий суд. Запоминайте формулу:
«Призови в чат QA, который будет тебя проверять».
QA (Quality Assurance) — это агент, по сути, менеджер, который следит за контролем качества на этапе процессов работы. Можно уточнить, что за QA: редактор, инженер, сеньор-программист и т. п.
Но чаще достаточно четких критериев, поэтапного контроля и независимой проверки.
В рамках нынешних LLM мы можем лишь снижать риски. Для этого предлагается разбивать ТЗ на мелкие контролируемые шаги (декомпозиция); подключать внешние базы знаний; заставлять модель проверять себя; использовать эксперта для верификации результатов; проводить дообучение и тонкую настройку.
Получается довольно обидная ситуация. Нейросети продают нам как помощников, которые должны экономить время и брать на себя рутинную работу. Но если после каждого ответа приходится устраивать расследование, искать пропущенные требования и переделывать результат, пользователь превращается в контролера на полную ставку.
Вы можете написать идеальный промпт. Заплатить деньги за доступ к лучшей модели и запасу токенов. Но не докрутить настройки, не учесть контекстное окно или даже не догадываться, что разработчики дали нейронке задачу экономить усилия. И вместо нормального результата за один прогон вы сжигаете токены на бесконечное число правок и ругань с нейронкой, которая будет посыпать виртуальную голову пеплом, каяться, говорить, что и как нужно было сделать по-другому. И снова делать ту же халтуру.
Поможет ли уточняющий запрос, если ИИ уже ошибся
Если в вашем промпте есть проблема, вы можете об этом даже не узнать. Нейросети нередко пытаются самостоятельно разобраться с противоречивыми требованиями, вместо того чтобы обратиться за уточнением. Стоит разрешить им это прямо.
При запуске каждого этапа просите в промпте задавать вам уточняющие вопросы по мере работы — так модель при развилке решений будет останавливать генерацию и обращаться к вам за выбором правильного пути.
Это может быть решением, если проблема локальная. Например, модель пропустила один пункт задания, неправильно поняла конкретное требование или использовала не тот формат. Тогда лучше указать на нарушение и ограничить область исправлений: «В третьем разделе пропущены два аргумента из исходника. Верни их, остальные разделы не меняй».
Но если нейросеть систематически игнорирует ограничения или запуталась в многочисленных исправлениях, очередное уточнение может сделать только хуже.
В таком случае лучше собрать актуальные требования в новом промпте и начать работу заново, не перетаскивая в новый диалог всю историю неудачных попыток.