Промпт ИИ-менеджера на 5 600 знаков работает лучше, чем на 8 500. Что мы вырезали и почему
Полгода мы писали системный промпт для нашего ИИ-менеджера так, как пишут договор. Появлялся новый кейс, добавляли пункт. Появлялась новая ошибка, расширяли раздел про самопроверку.
В какой-то момент промпт раздулся до 8 560 знаков. Бот стал склеивать реплики через буфер. Игнорировать прямые просьбы клиента. Отвечать «понял, вам нужна уличная дверь с терморазрывом», а потом замолкать на полчаса.
Мы сократили промпт на 33%, до 5 664 знаков. Качество работы выросло. Расскажу, что выбросили, что добавили вместо, и почему «больше правил, лучше» работает в учебнике, но не в бизнесе.
Почему промпт распухает
Каждый раз, когда мы видели плохой ответ бота, мы шли в системный промпт и добавляли новое правило. Логика простая: бот сделал не так, надо запретить. Бот пропустил шаг, надо явно прописать.
Через несколько итераций раздел «Самопроверка перед отправкой» вырос до 13 пунктов. Раздел «Воронка из двух шагов» обзавёлся готовыми фразами в кавычках, которые надо было копировать. Появились блоки «Конечная цель воронки», «Если клиент сразу выложил все параметры», "Какие функции не вызывать«.
Мы думали, что описываем поведение. На деле заполняли контекстное окно балластом, который модель толком не использовала.
Что мы выбросили
Сильнее всего срезали раздел про самопроверку. С 13 пунктов до 5. Все правила вроде «убедись, что не повторяешь себя» и «проверь, что не выдумал цифру» оставили. Всё остальное оказалось декларацией, которая занимала место, но на действие не влияла.
Дальше пошли по списку утяжелителей:
- Воронка из двух шагов с готовыми кавычками. У бота были конкретные образцы, которые он начал копировать дословно. Получался скрипт, а нам нужен был диалог.
- «Конечная цель воронки», отдельный абзац про то, что бот должен переводить клиента в мессенджер. Это и так понятно из остальной части промпта, повторяли зачем.
- «Если клиент сразу выложил все параметры», частный случай, который покрывался общими правилами. Зачем отдельный пункт.
- «Не вызывай функции X, Y, Z в таких-то ситуациях», запреты, которые перекрывали друг друга. Заменили на одно "вызывай только если триггер совпадает«.
В сумме набралось около 2 900 знаков, которые ушли в корзину. Бот стал работать чище, потому что инструкций стало меньше, и каждая стала весомее.
Что добавили вместо
Не всё, что вырезали, выкинули совсем. Часть переписали на «правила речи», компактные пункты с триггером и одним примером:
- Каждый факт упоминаем один раз. Если клиент сказал размер, не повторяй его в каждом сообщении. Список фактов рядом, в одном абзаце.
- Запрет стартеров «Отлично / Понял / Хорошо / Да / Ок». С пересказом того, что клиент только что написал. Это эхо, которое палит бота моментально.
- Один встречный вопрос. Одна попытка. Если клиент не ответил на ваш вопрос, не перефразируй. Подожди следующее его сообщение.
- Не реагирует, не перефразируй. Тишина клиента не сигнал, что нужно объясниться. Может, он смотрит каталог.
Все четыре правила раньше были в промпте размазанным текстом. Когда мы свели их в чёткие триггеры с примерами, бот начал их видеть. Nano-модели плохо работают с декларациями вроде «избегайте повторов». С триггером «не начинай ответ со слова Понял» работают.
Отдельно переписали реакцию на вопрос клиента «вы бот?». Раньше у нас было правило «не подтверждай и не отрицай, переключайся на пользу». Бот это правило игнорировал. Заменили на пример с конкретной фразой:
Здравствуйте! По делу сейчас сориентирую по шумоизоляции двери в квартиру
Готовые слова в кавычках, которые модель должна не копировать буквально, а использовать как шаблон тона. Это сработало.
Что показали тесты
Прогнали три сценария до изменений и после.
Сценарий «холодный запрос с готовыми параметрами»: клиент пишет размеры, цвет, город, спрашивает цену. Раньше бот отвечал «Понял, нужна уличная дверь с терморазрывом и стеклопакетом, цвет RAL 8019», классическое эхо. Теперь отвечает «Здравствуйте!» одной фразой и работает дальше по уточнениям.
Сценарий «дайте телефон менеджера». Клиент прямо просит контакт человека. Раньше бот молчал полностью. Слив лида в реальном времени. Теперь выдаёт номер менеджера сразу после первого вопроса о цене.
Сценарий «вы живой человек или бот?». Раньше бот игнорировал вопрос как тему и сразу переходил к продаже. Теперь даёт короткое позитивное переключение и продолжает уточнять размеры. На повторное «А вы боты прямо неотличимые стали» передаёт менеджеру через функцию, не пытается оправдываться.
Три из трёх сценариев теперь отрабатываются как надо. На промпте на треть меньше прошлого.
Что мы поняли
Системный промпт это не договор, в котором надо закрыть все случаи. Это инструкция оператору. Чем она короче и чётче, тем выше вероятность, что её выполнят.
Каждое новое правило в промпте звучит логично, пока вы не запустите его на Nano-модели и не увидите, как бот склеивает реплики через буфер. После 5 000 знаков начинаются эффекты, которых вы не предсказывали. После 8 000 модель просто не успевает добраться до начала промпта на каждом ответе.
Если бот работает плохо, первая мысль обычно «надо добавить правило». Попробуйте обратное. Найдите три самых длинных абзаца в промпте и срежьте каждый вдвое. Дальше прогоните те же сценарии.
С большой вероятностью бот станет работать лучше.
Попробовать ИИ в деле → t.me/lidailida_demo_bot
Наш сайт → lidailida.ru