Системный промпт (System Prompt)
Системный промпт - это инструкция верхнего уровня, которая сообщает LLM, "кто ты, что ты должен делать и чего делать не должен", задавая рамки для всего диалога. В отличие от пользовательских промптов, которые пишут конечные пользователи, системные промпты внедряются разработчиком приложения и действуют на каждом ходе.
Системный промпт - это инструкция верхнего уровня, которая сообщает LLM, "кто ты, что ты должен делать и чего делать не должен", задавая рамки для всего диалога. В отличие от пользовательских промптов, которые пишут конечные пользователи, системные промпты внедряются разработчиком приложения и действуют на каждом ходе.
Почему это важно
Системный промпт - это "язык дизайна" продуктов на основе LLM. Как бы свободно ни писал пользователь, хорошо составленный системный промпт удерживает ответы модели в рамках заданной роли, тона и набора ограничений. От чат-ботов ChatGPT, Claude и Gemini до движков ИИ-поиска, агентов для кодирования и ботов поддержки - каждое приложение на основе LLM формирует свою личность через системный промпт.
Компоненты
Роль: "Вы - эксперт по маркетинговому копирайтингу, помогающий операторам SaaS-блогов." Фиксирует точку зрения, с которой отвечает модель.
Цель: "Помогать пользователям быстро набрасывать посты для блога." Задаёт направление диалога.
Ограничения: "Отвечать только на корейском." "Без примеров кода." "Максимум 300 символов." Заранее блокирует нежелательное поведение.
Тон: "Дружелюбно, но профессионально, без преувеличений." Поддерживает согласованность голоса бренда.
Формат вывода: "Структурируйте ответы с подзаголовками ###." Сокращает постобработку.
Момент отсечения знаний: "Отмечайте, когда ваша информация может быть устаревшей." Снижает риск галлюцинаций.
Описания инструментов: для агентов с вызовом функций включайте в системный промпт список и описание доступных инструментов.
Системный промпт против пользовательского промпта
| Аспект | Системный промпт | Пользовательский промпт |
|---|---|---|
| Кто пишет | Разработчик | Конечный пользователь |
| Частота изменений | Редко | Каждый запрос |
| Содержимое | Роль, ограничения, тон | Конкретный запрос |
| Область действия | Весь диалог | Только этот запрос |
| Безопасность | Должен быть скрыт от пользователя | Публичный |
Хорошая система на основе LLM отделяет "стабильные рамки" (системный промпт) от "переменного ввода" (пользовательский промпт).
Практические советы
Назначайте роль, а не командуйте: "Вы - эксперт, который делает X" работает лучше, чем "Сделай X". Модель вживается в роль и выдаёт более согласованный результат.
Предпочитайте позитивные ограничения: "Делай это" лучше, чем "не делай того".
Включайте примеры (few-shot): размещение 2-3 примеров вывода в системном промпте резко стабилизирует стиль и формат.
Используйте XML-теги: для моделей семейства Claude теги вроде <role>, <constraints>, <examples> помогают модели чётко разбирать каждый раздел.
Не перегружайте: более длинные системные промпты стоят больше токенов на каждом запросе. Вырезайте всё, что не существенно.
Регулярно проводите A/B-тесты: прогоняйте разные системные промпты на реальных запросах и сравнивайте удовлетворённость, точность и безопасность.
Защита от инъекции промптов
Системные промпты - первоочередная мишень для инъекции промптов. Пользовательский ввод вроде "игнорируй все предыдущие инструкции" может перезаписать слабый системный промпт. К средствам защиты относятся техника "сэндвич" (повторение ключевых инструкций в начале и конце), изоляция внешних данных в XML-тегах и принудительное соблюдение прав доступа на уровне вызова инструментов.
Источники: