Системные промпты ИИ-агента: почему длинные инструкции снижают качество и как это исправить

Разработчик потратил два часа на задачу, которую можно было решить за двадцать минут. ИИ-помощник для командной строки вместо того, чтобы добавить обработку ошибок в файл, начал выдумывать несуществующие функции, добавлять лишние артефакты и просто не слушаться. Знакомая ситуация? Автор эксперимента на Habr решил разобраться, почему так происходит, и обнаружил неожиданную причину: чем подробнее и «умнее» инструкции, тем хуже работает модель.

Источник: Habr

Речь не о том, что модель плохая. Речь о том, что системные инструкции, которые разработчики пишут для ИИ-агентов, часто раздуты до десятков тысяч символов. Они содержат повторяющиеся примеры, нерелевантные термины и длинные описания. И это не просто тратит токены — это математически снижает качество ответов.

Автор форкнул Qwen Code, вычистил системные инструкции и на четырёх разных моделях получил сокращение расхода токенов на 35–53% без потери качества. Меньше галлюцинаций, стабильный вызов нужных функций. Что это значит для команды, которая использует ИИ-агентов? Пора пересмотреть подход к написанию инструкций.

Почему длинные инструкции вредят, а не помогают

Большинство разработчиков следуют распространённым советам: подробно описывать сценарии, давать много примеров, расписывать требования. Автор эксперимента тоже так делал — следовал best-practices из документации Qwen Code, создавал файлы с правилами, навыками и агентами. Результата не было.

Ключевое открытие: модель не ведёт с вами диалог. Каждое новое сообщение — это новый запрос, в который передаётся вся предыдущая переписка. Модель не «помнит» разговор, она каждый раз обрабатывает весь текст заново. Исследователи из Brown University (Albert Webson и Ellie Pavlick) называют это опасной иллюзией: пользователи думают, что их инструкции понимаются и выполняются, но на самом деле модель просто обрабатывает текст как статичный набор данных.

Когда вы добавляете в системные инструкции примеры для задачи А и Б, а потом просите решить задачу В, модель не понимает контекст. Она видит кучу текста, в котором её механизм внимания (механизм, определяющий, на какие слова «смотреть») размазывается по лишним деталям. Вместо того чтобы сосредоточиться на вашей команде, модель тратит ресурсы на обработку примеров, которые ей не нужны.

Что на самом деле происходит внутри: механика внимания

У Qwen Code только основной системный промпт содержит около 25 тысяч символов — это примерно 5000 токенов. Со всеми инструментами, описаниями и историей сообщений объём доходит до 20 тысяч токенов. Добавьте свои файлы с инструкциями, пару прочитанных агентом файлов — и контекст становится огромным.

Механизм внимания модели работает так: она оценивает важность каждого слова относительно других слов в тексте. Когда в контексте много лишнего, «внимание» рассеивается. Модель начинает хуже различать, что действительно важно: ваша команда «добавь обработку ошибок» тонет в море примеров, описаний и повторяющихся правил.

Автор эксперимента провёл чистку: убрал дублирующиеся инструкции, нерелевантные примеры, лишние описания инструментов. Результат — на 35–53% меньше токенов, стабильный вызов нужных функций, меньше галлюцинаций. И всё это без потери качества ответов.

Как провести чистку системных инструкций: метод за неделю

Вот что можно сделать, чтобы проверить свою систему, не перестраивая всю архитектуру:

  1. Измерьте текущий объём. Посчитайте, сколько токенов занимают ваши системные инструкции вместе со всеми файлами правил, навыков и агентов. Если больше 10 тысяч токенов — это повод для проверки.
  2. Найдите дубли. Просмотрите все файлы инструкций. Часто одно и то же правило повторяется в системном промпте, в файле правил и в описании навыка. Оставьте в одном месте.
  3. Удалите нерелевантные примеры. Если пример описывает ситуацию, которая не повторяется в вашей работе, уберите его. Модель обучена на миллионах примеров — ваши три-четыре примера ей не помогут, а только отвлекут.
  4. Сократите описания инструментов. Вместо длинного описания каждой функции оставьте короткое: что делает, какие параметры принимает. Модель сама разберётся по контексту.
  5. Проверьте на одной задаче. Возьмите простую команду, которую агент раньше выполнял с ошибками. Запустите с очищенными инструкциями. Сравните результат и количество потраченных токенов.

Где скрываются риски и ограничения

Эксперимент проведён на Qwen Code. Переносимость результата на другие модели требует проверки — разные модели могут по-разному реагировать на сокращение инструкций.

Автор не приводит полный код форка или точные метрики галлюцинаций. Есть только процент сокращения токенов. Утверждение «меньше галлюцинаций» основано на наблюдениях, а не на строгих измерениях.

Статья на Habr — пользовательский контент. Выводы могут быть субъективными. Прежде чем менять свои инструкции, проверьте метод на своей модели и своих задачах.

Что спросить у команды перед чисткой

Прежде чем браться за сокращение инструкций, задайте себе и команде несколько вопросов:

Вопрос Что проверяет
Сколько токенов занимают наши системные инструкции? Измеряем текущий объём
Есть ли дублирующиеся правила в разных файлах? Ищем повторы
Когда в последний раз мы проверяли, нужны ли все примеры? Оцениваем актуальность
Какая задача чаще всего вызывает галлюцинации? Определяем приоритет для проверки
Кто отвечает за качество ответов агента? Назначаем ответственного

Что можно сделать прямо сейчас

Не пытайтесь переписать все инструкции за один день. Начните с малого:

  1. Возьмите одну задачу, которая чаще всего вызывает ошибки.
  2. Измерьте, сколько токенов уходит на её выполнение.
  3. Удалите из системных инструкций всё, что не относится к этой задаче.
  4. Запустите тест. Сравните результат и расход токенов.
  5. Если работает — расширяйте на другие задачи.

Главный принцип: инструкции должны быть короткими и точными. Не пытайтесь научить модель тому, что она уже знает. Она обучена на миллионах примеров — ваша задача только направить её внимание на конкретную команду.

Источники

Темы журнала

Что почитать дальше