Промты для DeepSeek: как формулировать запросы к языковой модели

Как писать промты для DeepSeek: принципы, структура и примеры

Материал разбирает архитектуру качественного запроса, типичные ошибки и шаблоны, которые работают для любых задач — от кода до креативных текстов.

Структура промтаРоль и контекстПримеры few-shotКонтроль формата

Что такое промт и зачем его структурировать

Промт — это входное сообщение, которым вы задаёте модель поведение, контекст и ожидаемый результат. В DeepSeek, как и в других LLM, качество ответа пропорционально ясности инструкции.

Неструктурированный запрос вроде «напиши код» даёт обобщённый результат. Добавление роли, ограничений, примеров и формата выхода превращает модель в специализированный инструмент.

Ключевые компоненты сильного промта

  • Роль (Persona) — кто отвечает: «ты — старший Python-разработчик с 10 лет опыта».
  • Контекст — входные данные, ограничения, целевая аудитория.
  • Задача — чёткий глагол: напиши, рефактори, объясни, сравни, сгенерируй.
  • Формат выхода — JSON, markdown, таблица, только код, без пояснений.
  • Примеры (few-shot) — 1–3 пары «вход → идеальный выход» для калибровки стиля.

Формула промта, которую можно адаптировать под любую задачу

[РОЛЬ]
Ты — [профессия/экспертиза] с [опыт/специфика].
Твой стиль: [тон, уровень детализации, запреты].

[КОНТЕКСТ]
Входные данные: [что известно, исходники, ограничения].
Целевая аудитория: [кто читает, их уровень].
Цель: [что именно должно получиться].

[ЗАДАЧА]
[Глагол] [что сделать], соблюдая:
- [Ограничение 1]
- [Ограничение 2]
- [Ограничение 3]

[ФОРМАТ ВЫХОДА]
[Строгая спецификация: JSON схема / markdown структура / только код / и т.д.]

[ПРИМЕРЫ] (опционально)
Пример 1:
Вход: ...
Выход: ...

Пример 2:
Вход: ...
Выход: ...

[ПРОВЕРКА ПЕРЕД ОТВЕТОМ]
Убедись, что: [чек-лист самопроверки модели].
Промт для генерации кода (Python, рефакторинг)
[РОЛЬ]
Ты — Senior Python Engineer, специалист по чистой архитектуре и производительности. Пишешь код, готовый к продакшену: типизация, докстринги, обработка ошибок, логгирование.

[КОНТЕКСТ]
Есть функция обработки вебхуков от платёжной системы. Сейчас она монолитная, 180 строк, смешаны валидация, бизнес-логика и внешние вызовы. Нужно разбить на слои: валидатор, сервис, адаптеры.

[ЗАДАЧА]
Рефакторни код по принципам Clean Architecture:
- Выдели схемы валидации (pydantic)
- Создай сервисный слой с протоколом (Protocol) для зависимостей
- Адаптеры для HTTP-клиента и БД вынеси отдельно
- Сохрани публичный интерфейс функции (для обратной совместимости)

[ФОРМАТ ВЫХОДА]
Только код файлов в markdown-блоках с указанием пути: `app/validators/webhook.py` и т.д. Без пояснений вне кода.

[ПРОВЕРКА]
- mypy --strict проходит без ошибок
- Нет циклических импортов
- Каждый класс < 50 строк, каждая функция < 25 строк
Промт для аналитики (SWOT, структурированный отчёт)
[РОЛЬ]
Ты — стратегический консультант уровня McKinsey. Думаешь фреймворками: MECE, Pirate Metrics, Jobs-to-be-Done. Пишешь лаконично, по фактам, без воды.

[КОНТЕКСТ]
Стартап B2B SaaS, ARR $2.4M, churn 6% в месяц, CAC/LTV = 1:3. Команда 18 человек. Продукт — ПО для управления складом у 3PL-операторов. Конкуренты: двух крупных игрока с легаси-UI, три нишевых.

[ЗАДАЧА]
Проведи SWOT-анализ и выдели 3 стратегических приоритета на ближайшие 2 квартала. Для каждого приоритета: гипотеза, метрика успеха, первый шаг за неделю.

[ФОРМАТ ВЫХОДА]
JSON строго по схеме:
{
  "swot": {"strengths":[],"weaknesses":[],"opportunities":[],"threats":[]},
  "priorities":[{"title":"","hypothesis":"","kpi":"","first_step":""}]
}

[ПРОВЕРКА]
- Каждый пункт SWOT — один фактический тезис
- Приоритеты не противоречат друг другу
- KPI измеримы и привязаны к текущим метрикам
Промт для обучения (объяснение концепции под уровень)
[РОЛЬ]
Ты — преподаватель CS в топовом вузе. Объясняешь сложное просто, через аналогии и пошаговые разборы. Не даёшь готовых определений — ведёшь к пониманию.

[КОНТЕКСТ]
Студент знает Python базовый уровень, слышал про async/await, но не понимает event loop. Цель — дать ментальную модель, чтобы он мог сам отлаживать конкурентность.

[ЗАДАЧА]
Объясни event loop через аналогию с офисом: один менеджер (loop), очередь задач, колбэки, таймеры, I/O. Разбери минимум: `asyncio.sleep`, `asyncio.gather`, `run_in_executor`. Покажи, где происходит блокировка.

[ФОРМАТ ВЫХОДА]
Структурированный текст с заголовками ###. Вставки кода — только для иллюстрации. В конце — 3 упражнения для самостоятельной практики.

[ПРОВЕРКА]
- Никаких терминов без определения в контексте аналогии
- Каждое упражнение решаемо за 10-15 минут
- Ответ не использует классы/паттерны выше уровня студента

Типичные ошибки и как их исправить

«Сделай хорошо» без критериев

Модель не знает, что вы считаете «хорошим». Замените на чёткие ограничения: «длина ≤ 200 слов», «только факты, без прилагательных», «стиль: сухой технический».

Перегруз контекстом

Сбрасывать 5000 токенов логов и просить «найди баг» — неэффективно. Выделите релевантный фрагмент, добавьте сообщение об ошибке, укажите подозрительную зону.

Игнорирование формата выхода

Без явного формата модель выберет свой (часто markdown с пояснениями). Для парсинга в коде требуйте строгий JSON / YAML / только код.

Отсутствие роли

Без роли модель отвечает «в среднем». Роль подтягивает лексику, глубину и стиль мышления нужного эксперта.

Один промт на всё

Сложные задачи разбивайте на цепочку: анализ → план → реализация → ревью. Каждый шаг — отдельный промт с передачей артефактов.

Нет примера (zero-shot там, где нужен few-shot)

Для нестандартных форматов (специфический JSON, особый стиль письма) 1–2 примера экономят десятки итераций правок.

Продвинутые приёмы

  • Chain-of-Thought (CoT)
    Добавьте «Рассуждай шаг за шагом перед итоговым ответом» — модель выдаёт промежуточную логику, снижая галлюцинации в сложных задачах.
  • Self-Consistency
    Запустите один промт 3–5 раз с temperature 0.7, возьмите самый частый ответ — работает для задач с единственно верным решением (математика, логика).
  • Tree-of-Thoughts
    Просите модель генерировать несколько вариантов решения, оценивать их и выбирать лучший. Эффективно для планирования и креативных задач.
  • Конституциональные промты
    Задайте набор принципов (например, «никогда не выдумывай факты», «при неопределённости спрашивай уточнения») в системном блоке — модель будет следовать им системно.
  • Адаптивные промты
    Используйте условные блоки: «Если вход содержит X, примени правило Y, иначе Z». Позволяет одному промту покрывать разные сценарии.

Параметры генерации: что трогать, а что оставлять

ПараметрРекомендацияКогда менять
temperature0.0–0.3 для кода, фактов, извлечения; 0.7–1.0 для идей, текстов, неймингаНужен детерминизм → 0.0; нужен разброс → выше
top_pОставьте 0.9–1.0, меняйте только вместе с temperatureРедко, для тонкой калибровки разнообразия
max_tokensСтавьте с запасом (4000+), обрезайте пост-обработкойОбрезка ответа посередине — признак лимита
stop_sequencesМощный инструмент контроля формата (например, ``)Когда формат выхода строгий и предсказуем
presence / frequency_penaltyПочти никогда не нужны для задач с промтами вышеТолько если модель зацикливается на словах

Чек-лист перед отправкой промта

Главное, что стоит запомнить

Промт — это код для модели

Относитесь к нему как к исходнику: версионируйте, тестируйте, рефакторьте. Храните библиотеку проверенных промтов.

Структура побеждает длину

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

Итеративность — норма

Первый ответ редко идеален. Используйте диалог: «Исправь X», «Добавь Y», «Сделай в стиле Z». Каждая итерация уточняет контекст.