Некорректно составленный системный промпт — самая частая причина, по которой DeepSeek отвечает размыто, игнорирует формат ответа или «забывает» роль уже на третьем сообщении диалога. Если модель вдруг начинает писать простыни текста вместо коротких ответов или теряет заданный стиль, первым делом нужно проверить именно поле system, а не переписывать пользовательский запрос.
В этой статье разберём, что такое системный промпт в контексте DeepSeek, где его указывать в чате и через API, из каких блоков он должен состоять и какие ошибки чаще всего ломают поведение модели. Материал подойдёт как для обычного веб-чата, так и для работы через API с моделями семейства DeepSeek-V3 и DeepSeek-R1.
Что такое системный промпт и зачем он нужен
Системный промпт (system prompt) — это скрытая инструкция, которая задаёт модели роль, стиль, ограничения и формат ответов до начала диалога с пользователем. В отличие от обычного сообщения, она имеет более высокий приоритет: модель старается следовать ей на протяжении всей сессии, даже когда пользователь просит о чём-то противоречащем.
Без системного промпта DeepSeek работает в режиме универсального ассистента: отвечает развёрнуто, добавляет дисклеймеры, сам решает, какой формат уместен. Это удобно для разовых вопросов, но мешает, когда нужен предсказуемый результат — например, строгий JSON, ответы только на русском или роль технического ревьюера кода.
Где указывать системный промпт в DeepSeek
Способ зависит от того, как вы работаете с моделью. В официальном веб-чате DeepSeek отдельного поля для системной инструкции может не быть — в этом случае роль и правила задаются первым сообщением диалога, и его лучше закрепить формулировкой вроде «Далее в этом диалоге действуй по этим правилам». Через API всё проще и надёжнее: системный промпт передаётся отдельным сообщением с ролью system.
Типовой запрос к API выглядит так (структура совместима с форматом OpenAI):
messages = [
{"role": "system", "content": "Ты — технический писатель. Отвечай кратко, на русском, без воды."},
{"role": "user", "content": "Объясни, что такое контекстное окно."}
]
Если вы используете сторонние клиенты или оболочки для работы с DeepSeek, ищите в настройках поле System prompt или System message. Его расположение зависит от конкретного приложения, поэтому сверяйтесь с документацией выбранного клиента.
⚠️ Внимание: в моделях рассуждающего типа (DeepSeek-R1) длинные и перегруженные системные промпты могут снижать качество ответов — модель тратит часть «размышлений» на интерпретацию инструкций. Держите системный промпт коротким и проверяйте поведение на тестовых запросах.
Структура хорошего системного промпта
Рабочий системный промпт собирается из нескольких логических блоков. Не обязательно использовать все — берите те, что решают вашу задачу.
- 🎭 Роль — кем является модель: «опытный Python-разработчик», «редактор деловых текстов», «преподаватель математики».
- 🎯 Задача — что именно нужно делать: анализировать код, исправлять стиль, объяснять тему новичку.
- 📐 Формат ответа — длина, структура, язык, использование списков, таблиц или кода.
- 🚫 Ограничения — чего делать нельзя: не выдумывать факты, не давать медицинских советов, не выходить за рамки темы.
- 💬 Тон и стиль — формальный или разговорный, с примерами или без, обращение на «ты» или «вы».
Порядок блоков не критичен, но логично начинать с роли и заканчивать ограничениями — так инструкция читается как связный регламент, а не набор разрозненных требований.
Готовые примеры системных промптов
Ниже — несколько шаблонов, которые можно взять за основу и адаптировать под свою задачу. Они намеренно сделаны компактными: короткие инструкции работают стабильнее.
Ты — senior-разработчик и код-ревьюер. Анализируй присланный код:
указывай ошибки, уязвимости и проблемы читаемости. Отвечай структурой:
1) критичные проблемы, 2) рекомендации, 3) улучшенный фрагмент кода.
Не переписывай код целиком без необходимости.
Ты — ассистент для изучения английского. Общайся на английском уровня B1,
исправляй ошибки пользователя после каждого его сообщения и кратко
объясняй правило на русском. Не переходи на русский в основной части диалога.
Обратите внимание: в обоих примерах есть роль, формат и хотя бы одно ограничение. Этого достаточно, чтобы поведение модели стало предсказуемым.
Типичные ошибки и как их исправить
Даже опытные пользователи регулярно допускают одни и те же промахи. Вот что чаще всего ломает поведение модели:
- ❌ Размытые формулировки — «отвечай хорошо и качественно» не даёт модели никакой опоры. Заменяйте на измеримые требования: «не более 5 предложений», «только факты с пояснением».
- ❌ Противоречия внутри промпта — «отвечай кратко» и «приводи развёрнутые примеры» в одном тексте заставляют модель выбирать, и выбор непредсказуем.
- ❌ Слишком много ролей — «ты программист, юрист, врач и маркетолог» размывает фокус. Одна сессия — одна основная роль.
- ❌ Инструкции в середине диалога — правила, отправленные пятнадцатым сообщением, работают хуже, чем заданные с самого начала.
Если модель «слетает» с роли в длинном диалоге, возможная причина — переполнение контекста: ранние сообщения вытесняются, и системная инструкция теряет вес. В таком случае кратко напомните ключевые правила в новом сообщении или начните диалог заново с обновлённым промптом.
☑️ Проверка системного промпта перед запуском
Сравнение подходов: чат, API и reasoning-модели
| Критерий | Веб-чат | API (роль system) | DeepSeek-R1 |
|---|---|---|---|
| Где задавать | Первым сообщением диалога | Отдельное сообщение system | Отдельное сообщение system |
| Устойчивость инструкции | Средняя, зависит от длины диалога | Высокая | Высокая при коротком промпте |
| Оптимальная длина промпта | 3-7 предложений | 3-10 предложений | Минимальная, 2-5 предложений |
| Контроль формата ответа | Ограниченный | Полный, включая JSON-режим | Полный, но требует тестов |
Как видно, API даёт максимальный контроль, а для рассуждающих моделей лучше работает принцип «меньше — значит лучше». Подробности о поддерживаемых параметрах и режимах всегда проверяйте в актуальной официальной документации DeepSeek, так как возможности API со временем меняются.
Почему DeepSeek иногда игнорирует системный промпт
Наиболее вероятные причины — конфликт инструкций внутри самого промпта, слишком длинный диалог с вытеснением раннего контекста, либо требования, противоречащие встроенным ограничениям безопасности модели. Проверьте промпт на противоречия, сократите его и начните новый диалог — в большинстве случаев это решает проблему.
Как тестировать и улучшать промпт
Готовый промпт стоит проверить на 3-5 типовых запросах из вашей реальной задачи. Смотрите не только на содержание ответов, но и на формат: соблюдена ли структура, язык, длина, не появляются ли лишние дисклеймеры.
Меняйте промпт итеративно — по одной правке за раз. Если переписать всё сразу, будет непонятно, какая именно правка улучшила результат. Полезно сохранять версии промптов с пометками, что изменилось, чтобы при необходимости откатиться к рабочему варианту.
⚠️ Внимание: не добавляйте в системный промпт конфиденциальные данные — пароли, ключи API, персональные данные клиентов. Текст инструкции передаётся на серверы провайдера модели и может попасть в логи вашего приложения.
Часто задаваемые вопросы
Работает ли системный промпт в бесплатном веб-чате DeepSeek?
Отдельного поля system в веб-чате, как правило, нет. Задавайте роль и правила первым сообщением диалога — модель будет им следовать, хотя устойчивость ниже, чем через API.
Какой длины должен быть системный промпт?
Универсальной нормы нет, но практика показывает: 3-10 чётких предложений работают лучше, чем страница текста. Для reasoning-моделей вроде DeepSeek-R1 промпт стоит сокращать до минимума.
Почему модель забывает роль в длинном диалоге?
Возможная причина — ограничение контекстного окна: старые сообщения вытесняются новыми. Начните новый диалог или кратко напомните ключевые правила в свежем сообщении.
Можно ли заставить DeepSeek отвечать строго в формате JSON?
Да, укажите в системном промпте требование возвращать только валидный JSON без пояснений. Через API дополнительно проверьте, поддерживается ли специальный режим структурированного вывода — актуальные возможности смотрите в официальной документации.
Нужно ли писать системный промпт на английском?
Не обязательно. DeepSeek хорошо понимает инструкции на русском. Английский имеет смысл использовать, если весь рабочий контекст (код, документация, термины) англоязычный.