GEO

Системный промпт (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-тегах и принудительное соблюдение прав доступа на уровне вызова инструментов.

Источники: