TL;DR
Исследователи заставили ИИ работать авиадиспетчером и сравнили пять версий промпта — от простой роли ("ты диспетчер, отвечай по правилам ФАУ") до подробного свода запретов и примеров ошибок. Самый простой промпт победил все остальные, а самый перегруженный правилами — просел на треть по точности. При этом один полноценный пример диалога (few-shot), вставленный в промпт, стабильно улучшал результат у почти всех моделей.
Проблема в том, что когда модели дают слишком много ограничений и предупреждений ("не выдумывай", "вот примеры ошибок, не делай так"), она начинает бояться конкретики. Вместо точной команды (частота, курс, разрешение) модель сваливается в безопасные общие фразы — то есть перестаёт быть полезной именно там, где нужна точность. А если модель хоть раз ошиблась в длинном диалоге, эта ошибка попадает в историю переписки и следующие ответы наследуют и усугубляют её — модель зацикливается на одном неверном паттерне.
Метод восстановления простой: если в длинном диалоге подменить историю на правильную (а не на собственные, возможно ошибочные, реплики модели), качество ответов восстанавливается мгновенно — даже у самого перегруженного правилами промпта.
Схема метода
ШАГ 1: Минимальный промпт — роль + стиль ответа, без десятков правил → системный промпт
ШАГ 2: Один полный пример диалога (тема другая, стиль тот же) → вставляется в тот же промпт как образец
ШАГ 3: В длинном диалоге — если модель ошиблась, поправь именно её реплику в истории перед следующим сообщением → предотвращает накопление ошибки
Шаги 1 и 2 — один промпт, один запрос. Шаг 3 — требует ручного контроля истории в течение всего диалога (несколько сообщений подряд).
Пример применения
Задача: Основатель онлиноколл-центра для маркетплейса хочет прогнать через ИИ весь скрипт разговора с недовольным клиентом — от жалобы на размер до оформления возврата — а не проверять ответы по одному вопросу.
Промпт:
Ты — оператор поддержки маркетплейса одежды. Отвечай клиенту вежливо и по делу,
всегда указывай номер заказа и следующий шаг для клиента.
Вот пример похожего диалога с другим клиентом (тема другая, но стиль ответов сохраняй):
Клиент: Здравствуйте, заказ №4521, пришла не та расцветка.
Оператор: Здравствуйте! Уточните, пожалуйста, устроит ли вас обмен на нужную расцветку
или оформим возврат средств? По заказу №4521 обмен занимает 3-5 дней.
Клиент: Хочу возврат.
Оператор: Оформила возврат по заказу №4521. Деньги вернутся на карту в течение 7 дней,
трек-номер для отправки товара обратно — пришлю на почту в течение часа.
Дальше я присылаю сообщения от клиента по одному. Отвечай в этом же стиле,
учитывая всю историю переписки выше.
Результат: Модель начнёт отвечать конкретно — с номерами заказов и чёткими шагами, а не общими фразами вроде "спасибо за обращение, мы разберёмся". Если в диалоге на пятом сообщении модель ошибётся (например, перепутает номер заказа), эта ошибка "прилипнет" к следующим ответам, если её не исправить в истории вручную. Достаточно подправить её реплику текстом — и следующие ответы вернутся в нужное русло.
Почему это работает
Слабость модели: когда ей дают много явных запретов и предостережений, она пытается не нарушить ни одно правило — и ради этого жертвует конкретностью, уходя в обтекаемые общие фразы. Это происходит именно тогда, когда нужна точная команда, а не вежливая отговорка.
Сильная сторона модели: она отлично копирует паттерн из одного полного примера — стиль, длину фраз, порядок информации в ответе. Ей не нужно объяснять словами все правила, если есть один хороший образец.
Метод использует эту сильную сторону вместо слабой: один пример диалога заменяет десять страниц правил. А для длинных разговоров — модель условливается на собственной истории, включая свои ошибки. Если подсунуть правильную историю вместо накопленных ошибок модели, она "забывает" свой неверный паттерн и возвращается к корректным ответам.
Рычаги управления: - Количество правил в промпте → урезай до минимума, оставляй только то, что действительно нужно для стиля - Наличие примера диалога (few-shot) → добавь один полный пример, тема может отличаться — важен стиль, а не содержание - Ведение истории в долгом диалоге → правь прошлые реплики модели вручную, если она ошиблась, не жди, что следующий вопрос сам всё исправит
Шаблон промпта
Ты выступаешь в роли {роль} и общаешься с {собеседник}.
Стиль ответов:
- {правило_1, только необходимое}
- {правило_2}
Вот пример похожего диалога для ориентира по стилю (тема может отличаться):
{полный_пример_диалога}
Дальше я буду присылать сообщения от {собеседник} по одному.
Отвечай в этом же стиле, учитывая всю историю переписки выше.
{роль} — кого симулирует модель (оператор поддержки, юрист, HR на интервью). {собеседник} — с кем идёт диалог. {правило_1/2} — минимум стилевых требований, без избыточных запретов. {полный_пример_диалога} — один цельный образец разговора, желательно на другую тему, но в том же формате.
🚀 Быстрый старт — вставь в чат:
Вот шаблон промпта для симуляции длинного диалога. Адаптируй под мою задачу: {твоя задача}.
Задавай вопросы, чтобы заполнить поля.
[вставить шаблон выше]
LLM спросит, какую роль играть, какой стиль ответов нужен и есть ли у тебя пример похожего разговора — потому что без примера метод теряет главное преимущество (few-shot вместо кучи правил).
Ограничения
⚠️ Форма не гарантирует содержание: модель хорошо копирует стиль и формат ответа эксперта, но может ошибиться в самом факте (неверный номер заказа, неверная частота, неверная сумма). Внешне ответ выглядит профессионально — проверяй суть отдельно.
⚠️ Ошибки в истории накапливаются: если не поправить неверный ответ модели в истории диалога, она зацикливается на этом паттерне и повторяет одну и ту же отговорку вместо конкретного ответа на следующих шагах.
⚠️ Пример учит стилю, не фактам: few-shot пример подсказывает КАК отвечать, но не ЧТО отвечать в новой, незнакомой ситуации — модель всё равно может выдумать факт.
Как исследовали
Исследователи взяли настоящую запись разговора пилота с диспетчером во время экскурсионного полёта над Сан-Франциско и вручную расшифровали её как эталон (36 реплик). Девять моделей — от компактных открытых до топовых закрытых — по очереди "играли диспетчера", отвечая на реплики пилота одну за другой, с накоплением истории диалога, как в реальной работе.
Промпт варьировали в пяти уровнях жёсткости (от роли без правил до строгого свода запретов), а также проверяли — помогает ли один пример диалога с другого, несвязанного полёта, и что если подменить историю диалога на правильную вместо собственных ответов модели. Всего прогнали 540 полных разговоров и почти 20 тысяч отдельных реплик, оценивая их и автоматическими метриками, и другой моделью-судьёй, и человеком-экспертом для проверки судьи.
Результат удивил: жёсткие правила не помогали, а вредили — модель начинала выдавать пустые "Roger" вместо конкретных команд именно там, где правил было больше всего. А подмена истории на правильную спасала даже самый испорченный правилами промпт — значит, деградация в диалоге вызвана именно накоплением собственных ошибок модели, а не качеством промпта самого по себе.
