Промты для ИИ-агентов: полное руководство по написанию инструкций

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

В этой статье разберём, из каких блоков состоит рабочий системный промт, как описывать инструменты и ограничения, и какие ошибки чаще всего приводят к непредсказуемому поведению агента. Материал подойдёт тем, кто настраивает агентов на базе GPT-4, Claude, Gemini или open-source моделей через фреймворки вроде LangChain и AutoGen.

Чем промт для агента отличается от обычного запроса

Обычный промт — разовый: вы спросили, модель ответила, диалог закончился. Агентный промт работает иначе. Это системная инструкция, которая действует на протяжении всей жизни агента и определяет, как он воспринимает каждое входящее сообщение, когда вызывает внешние инструменты и в какой момент останавливается.

Ключевое отличие — наличие контура обратной связи. Агент получает результат выполнения действия (например, ответ API или содержимое файла), анализирует его и решает, что делать дальше. Промт должен описывать не только «что делать», но и как реагировать на результаты и ошибки.

Структура системного промта агента

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

  • 🎭 Роль и контекст — кто агент, для кого работает, в какой предметной области.
  • 🎯 Цель — измеримый результат, которого агент должен достигать в каждой сессии.
  • 🔧 Инструменты — перечень доступных функций и правила их вызова.
  • 🚧 Ограничения — что запрещено: темы, действия, формат ответов.
  • 📋 Формат вывода — структура ответа: JSON, markdown, таблица или свободный текст.

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

Как описывать инструменты и правила их вызова

Если агенту доступны функции — поиск по базе, отправка письма, выполнение кода, — недостаточно просто перечислить их названия. Необходимо описать когда каждый инструмент вызывается, какие аргументы принимает и что делать при ошибке выполнения.

Пример фрагмента системного промта для агента-помощника с доступом к поиску:

Инструмент: search_knowledge_base(query)

Когда вызывать: только если ответа нет в контексте диалога.

Аргументы: query — строка поиска на русском языке, до 10 слов.

При ошибке или пустом результате: честно сообщи, что информация

не найдена, и предложи уточнить запрос. Не выдумывай факты.

Обратите внимание на последнюю строку. Явный запрет на выдумывание при пустом результате — один из самых эффективных приёмов против галлюцинаций агента. Без него модель нередко «додумывает» ответ, чтобы не оставлять пользователя без реакции.

📊 Для каких задач вы используете (или планируете) ИИ-агентов?
Поддержка клиентов
Анализ данных и отчёты
Автоматизация рутины
Генерация контента

Ограничения и защита от нежелательного поведения

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

Формулируйте ограничения позитивно и конкретно. Конструкция «отвечай только на вопросы о продуктах компании; на остальные темы вежливо сообщай, что это вне твоей компетенции» работает надёжнее, чем абстрактное «не отвлекайся от темы».

⚠️ Внимание: не полагайтесь на промт как на единственный барьер безопасности. Если агент имеет доступ к реальным действиям — оплате, удалению данных, отправке сообщений от вашего имени, — критичные операции должны требовать подтверждения человека на уровне кода, а не только инструкции в промте. Текстовый запрет модель может обойти при неудачной формулировке запроса пользователя.

Примеры промтов для типовых агентов

Разные задачи требуют разного акцента в инструкциях. Сравним три распространённых сценария:

Тип агентаФокус промтаКлючевое ограничение
Поддержка клиентовТон общения, база знаний, эскалацияНе обещать сроки и компенсации без данных
Аналитик данныхФормат отчёта, источники, проверка чиселНе интерпретировать данные без запроса
Ассистент по кодуСтиль кода, тестирование, область измененийНе менять файлы вне указанной задачи
Контент-генераторСтиль, структура, фактчекингПомечать непроверенные утверждения

Минимальный рабочий шаблон, с которого можно начать и который затем расширяется под задачу:

Ты — агент [роль] для [аудитория/компания].

Твоя задача: [конкретная измеримая цель].

Доступные инструменты: [список с правилами вызова].

Правила: [3-5 ключевых ограничений].

Если не уверен в ответе — скажи об этом прямо и задай

уточняющий вопрос. Не придумывай факты, числа и ссылки.

Формат ответа: [структура].

Заметьте: шаблон короткий. Длинный промт не равен качественному — после определённого объёма добавление новых инструкций начинает снижать выполнение уже существующих, потому что требования конкурируют за внимание модели.

Тестирование и итеративная доработка промта

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

☑️ Проверка промта перед запуском

Выполнено: 0 / 5

Меняйте промт по одному элементу за итерацию. Если переписать всё сразу, невозможно понять, какое изменение дало эффект. Ведите версии промтов — даже простая нумерация в названии файла избавит от ситуации, когда рабочая версия безвозвратно потеряна.

Почему агент «забывает» инструкции в длинном диалоге

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

Типичные ошибки при написании промтов для агентов

Разберём просчёты, которые встречаются чаще всего. Возможная причина нестабильного поведения вашего агента — одна из них.

  • 🌀 Противоречивые инструкции — «будь краток» и «отвечай максимально подробно» в одном промте заставляют модель выбирать случайным образом.
  • 📚 Инструкция вместо примера — для сложного формата вывода один образец ответа работает лучше, чем абзац описания.
  • 🔓 Отсутствие поведения по умолчанию — не описано, что делать при неоднозначности, и агент импровизирует.
  • 🗣️ Человеческие формулировки — «постарайся», «желательно» воспринимаются моделью слабее, чем императивы.
⚠️ Внимание: не копируйте чужие «волшебные промты» из интернета без адаптации. Инструкция, написанная под одну модель и одну задачу, может ухудшить работу другой. Проверяйте любой заимствованный промт на своих тестовых сценариях.

Часто задаваемые вопросы

Какой длины должен быть системный промт для агента?

Жёсткого ограничения нет, но практика показывает: компактный промт из чётких блоков обычно работает стабильнее многостраничного. Если инструкция разрастается, часть логики стоит перенести в код оркестратора или в описания инструментов, а не держать всё в одном тексте.

Нужно ли писать промт на английском языке?

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

Как заставить агента всегда отвечать в формате JSON?

Опишите схему в промте и приложите пример корректного ответа. Дополнительно многие API моделей поддерживают режим структурированного вывода (function calling, JSON mode) — он надёжнее текстовой инструкции, поскольку ограничение применяется на уровне генерации, а не только промта.

Почему агент игнорирует часть инструкций?

Частые причины: противоречия между правилами, слишком длинный промт, размывание инструкций в длинной истории диалога или конфликт с пользовательским запросом. Диагностика: сократите промт до ключевых правил и проверьте, какое из них перестало выполняться при добавлении остальных.

Можно ли использовать один промт для разных моделей?

Базовая структура обычно переносится, но формулировки стоит проверять на каждой модели отдельно. Модели различаются по стилю следования инструкциям: одни лучше реагируют на строгие императивы, другие — на контекстные объяснения. Прогоняйте тестовый набор сценариев при смене модели.