Промт-инжиниринг для DeepSeek: принципы, структуры и примеры для сложных задач

Гайд по работе с LLM

Как формулировать запросы к DeepSeek, чтобы получать точный код, аналитику и тексты

Разбираем архитектуру промтов, цепочки рассуждений (CoT), few-shot примеры и параметры генерации — без воды, с готовыми шаблонами под задачу.

Архитектура модели

DeepSeek-V3 / R1

Смесь экспертов (MoE) 671B параметров, 37B активных. R1 добавлен RL-этап для рассуждений (Chain-of-Thought).

Контекст

128K токенов

Позволяет загружать большие кодовые базы, документацию или книги целиком в один диалог.

Скорость

Оптимизированная инференс

MLA (Multi-head Latent Attention) и FP8 дают высокую пропускную способность при низких затратах.

Четыре столпа работающего промта

1

Роль и персона

Задайте модель поведения: «Ты — старший разработчик на Rust», «Ты — редактор научпоп». Это активирует соответствующие кластеры весов.

2

Контекст и входные данные

Прикрепляйте файлы, вставляйте логи, схемы БД, стилевые гайды. Модель не угадывает — она рассуждает на базе переданного.

3

Чёткая инструкция и формат

«Выведи JSON по схеме», «Структура: проблема → гипотеза → тест → вывод». Жёсткие ограничения снижают галлюцинации.

4

Примеры (Few-shot)

2–5 пар «ввод → идеальный вывод» калибруют стиль, терминологию и глубину рассуждений лучше любых прилагательных.

Режим «DeepThink» (R1): когда включать

DeepSeek-R1 генерирует скрытую цепочку рассуждений (<think>...</think>) перед финальным ответом. Это дорого по токенам и времени, но критично для:

  • Многошаговые алгоритмические задачи (LeetCode Hard, архитектура систем).
  • Математика, доказательства, символьная логика.
  • Рефакторинг с сохранением инвариантов.
  • Планирование проектов с зависимостями.

Совет: для простых задач (перевод, суммаризация, шаблонный код) отключайте R1 — стандартный V3 отвечает быстрее и дешевле.

Шаблон активации CoT
<system>
Ты — эксперт по {домен}.
Решай задачу пошагово, скрывая рассуждения в тегах <think>.
Финальный ответ — только в <answer>.
</system>

<user>
{задача}
Входные данные: {данные}
Ограничения: {ограничения}
Формат выхода: {JSON / Markdown / код}
</user>

Параметры генерации: что двигает качество

ПараметрДиапазонРекомендация по задачам
temperature0.0 – 1.50.0–0.2: код, извлечение фактов, JSON.
0.6–1.0: креативный текст, брейншторм, диалоги.
top_p0.1 – 1.0Оставьте 0.95–1.0. Снижайте до 0.5 только если модель «галлюцинирует» редкие токены.
max_tokens1 – 8192+Ставьте с запасом 20–30% от ожидаемого ответа. Для R1 учитывайте скрытые токены <think>.
presence_penalty-2.0 – 2.00.5–1.0: длинные статьи, перечисления без повторов.
0: код, строгие форматы.
frequency_penalty-2.0 – 2.00.2–0.5: борьба с «зацикленностью» в длинных генерациях.

Готовые паттерны под частые кейсы

Code Review & Refactor
# System
Ты — Staff Engineer. Проведи код-ревью: найди баги, уязвимости, code smells, нарушения SOLID/DRY. Предложи конкретные правки в unified diff.

# User
<context>
{файл_или_модуль}
</context>
Фокус: {performance / security / readability / all}
Вывод: Markdown с секциями Critical / Major / Minor / Nitpick + diff-блоки.
Data Analysis & SQL
# System
Ты — Data Analyst. Пишешь эффективный SQL (ClickHouse / Postgres / BigQuery). Объясняй план запроса (EXPLAIN), индексы, партиционирование.

# User
Схема: {DDL или описание таблиц}
Задача: {метрика / отчёт / аномалии}
Ограничения: без подзапросов в SELECT, использовать CTE, лимит 10 сек выполнения.
Формат: код + комментарии к логике.
Technical Writing / Docs
# System
Ты — Technical Writer (Diátaxis framework). Пишешь: Tutorial / How-to / Reference / Explanation. Стиль: активный залог, императив, короткие предложения, примеры кода.

# User
Тема: {API endpoint / концепция / инструмент}
Аудитория: {junior / senior / non-tech}
Тип документа: {how-to / reference ...}
Вход: {исходники / черновик / схема}
Вывод: готовый .md файл.
Architecture Decision Records (ADR)
# System
Ты — Solution Architect. Формируй ADR (Markdown): Status, Context, Decision, Consequences (Trade-offs), Alternatives considered.

# User
Проблема: {описание}
Ограничения: {бюджет / стек / команда / сроки}
Требуется: 3 варианта с плюсами/минусами, рекомендация с обоснованием рисков.

Типичные ловушки и как их обойти

Ловушка

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

Решение

Всегда передавайте CONTEXT.md со стеком, схемами БД, линтером, примерами существующего кода.

Ловушка

Игнорирование температуры. Дефолт 1.0 превращает генерацию JSON в лотерею с лишними запятыми и комментариями.

Решение

Жёстко фиксируйте temperature=0.1 и top_p=0.95 для любых структурированных выходов.

Ловушка

Один гигантский промт на всё. Контекст забивается, внимание размывается, качество падает к концу ответа.

Решение

Декомпозиция: цепочка узкоспециализированных промтов (планирование → код → тесты → доки), передавающих артефакты друг другу.

Продвинутые техники: от теории к практике

1Self-Consistency (Самосогласованность)

Запустите один и тот же промт с temperature=0.7 3–5 раз. Выберите ответ, который встречается чаще всего (majority vote) или объедините лучшие части. Эффективно для математики, логики, генерации тестов.

Кейс: Генерация unit-тестов для модуля. 5 прогонов → мерж уникальных кейсов → покрытие +23% за 1 минуту.

2Tree of Thoughts (Дерево мыслей)

Просите модель генерировать несколько альтернативных путей решения, оценивать каждый (плюсы/минусы/риски) и выбирать лучший. Имитирует человеческое планирование.

Промт-фрагмент: «Предложи 3 архитектурных варианта. Для каждого: сложность O(), риски миграции, стоимость владения. Оцени по шкале 1–10. Выбери лучший и обоснуй».

3ReAct / Tool Use (Действие + Рассуждение)

Если среда позволяет (API, поиск, исполнение кода), заставляйте модель чередовать: Thought → Action → Observation → Thought. DeepSeek хорошо следует этому протоколу в системном промте.

Пример: «Есть доступ к python_repl. Посчитай метрики на датасете, пока не сойдутся с эталоном ±0.5%».

4Constitutional AI / Guardrails

Добавьте в системный промт блок «Правила безопасности и качества»: «Никогда не выводи секреты», «Код должен проходить линтер», «Отвечай на русском, термины — на английском». Это дешевле пост-фильтрации.

Шаблон: «<constitution>...</constitution>» перед инструкцией пользователя.

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

Контекст > Инструкция. Лучше прикрепить 500 строк релевантного кода, чем написать 500 слов описания задачи.

Формат — это контракт. JSON Schema, TypeScript интерфейсы, примеры вывода дают детерминизм, которого не дают прилагательные.

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

Итерация побеждает идеальный промт. Первая попытка — черновик. Уточняйте: «Исправь X», «Добавь Y», «Убери Z». Диалог эффективнее монолога.