Промты для DeepSeek: структура, шаблоны и 15+ примеров под задачу

DeepSeek / Промт-инжиниринг

Промты для DeepSeek: от структуры к результату

Готовые шаблоны для кода, текстов, анализа и рассуждений. Разбираем анатомию промта, показываем ошибки и даём копируемые примеры под реальные задачи.

Системные роли Chain-of-thought Few-shot примеры XML-разметка

Почему DeepSeek требует своего подхода

DeepSeek-R1 и V3 обучались на данных с явной структурой рассуждений. Модель ожидает увидеть чёткую логику в промте: роль, контекст, формат вывода, критерии качества. Если вы пишете «напиши код» — получите средний результат. Если зададите архитектуру решения — получите продакшн-готовый код.

Ключевое отличие: DeepSeek лучше всего работает с XML-подобной разметкой и явным разделением на блоки <instructions>, <context>, <output_format>. Это не обязательно, но даёт прирост качества 15–30 % на сложных задачах.

<system>
Ты — старший инженер. Пишешь чистый, типизированный код.
</system>
<task>
Рефактор класса UserService: убрать God Object, внедрить DI.
</task>
<constraints>
— TypeScript, strict mode
— SOLID, никаких any
— Покрыть тестами критичные пути
</constraints>
<output>
Файлы: user-service.ts, user-repository.ts, user-service.spec.ts
</output>

Пример структуры, которую DeepSeek «понимает» нативно

Анатомия рабочего промта: 5 блоков

Роль (System)

Кто отвечает: эксперт, аудитория, тон. Задаёт границы компетенции.

Контекст

Входные данные, ограничения, предыстория. Чем больше релевантного — тем точнее ответ.

Задача

Чёткий глагол действия + ожидаемый результат. Один промт — одна атомарная задача.

Формат вывода

JSON, Markdown, таблица, код, список. Укажите схему, названия полей, экранирование.

Критерии качества

Чек-лист для самооценки модели: «проверь типы», «нет лишних зависимостей», «длина < 200 слов».

Категории промтов: выбери свою задачу

Код и рефакторинг

  • Генерация модулей / API / схем БД
  • Рефакторинг под паттерны (SOLID, DI)
  • Покрытие тестами (unit, integration)
  • Поиск багов и уязвимостей
  • Миграция стека / языков

Анализ и структурирование

  • Резюмирование длинных текстов / логов
  • Извлечение сущностей и связей
  • Сравнение документов / версий
  • Фактчекинг и поиск противоречий
  • Построение майнд-мап и схем

Тексты и контент

  • Статьи, посты,ニュースletter под ТЗ
  • Адаптация под тон бренда (Voice & Tone)
  • SEO-оптимизация без переспама
  • Перевод с сохранением контекста
  • Сценарии для видео / подкастов

Сложное рассуждение (CoT)

  • Многошаговые логические задачи
  • Планирование проектов / спринтов
  • Принятие решений по критериям
  • Математика, алгоритмы, архитектура
  • Диагностика проблем (root cause)

Готовые шаблоны: копируй и адаптируй

Код Генерация типизированного модуля с тестами
TypeScript / Node.js
<system>
Ты — старший TypeScript-инженер. Пишешь production-ready код:
- strict mode, никаких any, explicit return types
- SOLID, чистая архитектура, dependency injection
- JSDoc для публичных API
- Обработка ошибок через Result<T, E> pattern
</system>

<context>
Проект: E-commerce на NestJS + Prisma + PostgreSQL.
Сущности: Order, OrderItem, Product, User.
Текущая проблема: OrderService — God Object (450 строк),
бизнес-логика смешана с доступом к БД.
</context>

<task>
Разбей OrderService на:
1. OrderRepository — только Prisma-вызовы
2. OrderDomainService — чистая бизнес-логика
3. OrderApplicationService — оркестрация, DTO, события
4. OrderController — HTTP-слой
Покрой тестами критичные пути (Jest).
</task>

<constraints>
- Файлы: order-repository.ts, order-domain.service.ts,
  order-application.service.ts, order.controller.ts
- Интерфейс Repository в отдельном файле для мокирования
- События через EventEmitter2
- Транзакции: Prisma $transaction
- Тесты: unit для domain, integration для application
</constraints>

<output_format>
Верни ТОЛЬКО код файлов в блоке:
\`\`\`typescript
// file: src/orders/order-repository.ts
...
\`\`\`
Никаких объяснений вне кода.
</output_format>

<quality_checklist>
- [ ] Никаких any, все типы явные
- [ ] Каждый класс < 100 строк
- [ ] Domain не импортирует Prisma / NestJS
- [ ] Тесты покрывают happy path + edge cases
- [ ] Экспорт через barrel-файл index.ts
</quality_checklist>
Анализ Структурирование неструктурированных логов в инциденты
DevOps / SRE
<system>
Ты — SRE-инженер. Анализируешь логи Kubernetes / приложений.
Выдаёшь структурированный JSON-инцидент для PagerDuty.
</system>

<input_logs>
{{PASTE_RAW_LOGS_HERE}}
</input_logs>

<task>
1. Найди все ERROR / FATAL / WARN за последние 15 мин
2. Сгруппируй по correlation_id / trace_id
3. Для каждой группы определи:
   - root_cause (гипотеза)
   - affected_services (список)
   - severity (P1/P2/P3)
   - suggested_runbook (ссылка или шаги)
4. Игнорируй known-issues по списку ниже
</task>

<known_issues>
- "connection pool exhausted" → P3, автоскейл
- "certificate expire < 30d" → P2, cert-manager
</known_issues>

<output_format>
{
  "incidents": [
    {
      "id": "INC-{{timestamp}}-{{hash}}",
      "severity": "P1|P2|P3",
      "title": "строка <= 80 символов",
      "root_cause": "кратко",
      "services": ["svc-a", "svc-b"],
      "runbook": "https://runbooks.company/...",
      "log_samples": ["первые 3 строки"]
    }
  ]
}
</output_format>
Контент Статья под SEO-бриф с Tone of Voice бренда
Marketing / SEO
<system>
Ты — контент-стратег и SEO-копирайтер.
Пишешь для людей, оптимизируешь для поиска неявно.
Тон: экспертный, дружелюбный, без воды, конкретные примеры.
Запрещено: «в современном мире», «ключевой аспект», «погрузимся».
</system>

<brief>
Тема: «Как выбрать векторную БД для RAG в 2024».
ЦА: CTO, ML-инженеры, технические лиды.
Ключевые слова (вставить естественно):
- векторная база данных
- RAG архитектура
- эмбеддинги
- HNSW vs IVF
- масштабируемость
Объём: 2500–3000 слов.
Структура: H2/H3 заданы ниже.
</brief>

<brand_voice>
- Говорим «мы» как команда инженеров
- Цифры > прилагательных
- Каждое утверждение — ссылка на доки / бенчмарк
- Юмор уместен, сарказм — нет
</brand_voice>

<structure>
## Введение: зачем векторная БД в RAG
## Критерии выбора (таблица сравнения)
## Топ-5 решений: плюсы / минусы / кейсы
## Архитектурные паттерны интеграции
## Ошибки, которые стоят денег
## Чек-лист перед продакшеном
</structure>

<output>
Готовый Markdown-файл. Таблицы — в GitHub-flavored markdown.
Код — с подсветкой языка. Ссылки — относительные.
</output>
Reasoning Многошаговый план миграции монолита в микросервисы
Architecture / Planning
<system>
Ты — Principal Architect. Специализируешься на domain-driven design
и поэтапных миграциях Strangler Fig. Думаешь шаг за шагом,
пишешь рассуждения в <thinking>, итог — в <plan>.
</system>

<context>
Монолит: Java 11, Spring Boot 2.7, PostgreSQL, 120 таблиц,
500k строк кода, 15 команд. Боли: deploy 40 мин, связность,
невозможность масштабировать части независимо.
Цель: выделить 3 bounded context за 6 месяцев.
</context>

<task>
Сформируй поэтапный план миграции:
1. Domain mapping: выдели контексты, анти-паттерны
2. Strangler Fig: какие фасады вводить первыми
3. Data ownership: как разделить БД (shared kernel? CDC?)
4. Поэтапный график: sprint goals, exit criteria
5. Риски и митигация для каждого этапа
</task>

<thinking_instructions>
Для КАЖДОГО решения:
- Назови альтернативы (min 2)
- Обоснуй выбор через trade-offs
- Укажи необратимые решения (one-way doors)
- Оцени усилия в человеко-неделях
</thinking_instructions>

<output_format>
<thinking>
...твои рассуждения по пунктам...
</thinking>

<plan>
## Этап 1 (недели 1-4): Discovery & Facade
...
## Этап 2 (недели 5-12): First Context Extraction
...
## Этап 3 (недели 13-24): Data Split & Sync
...
</plan>

<risks>
- Риск: ...
  Митигация: ...
  Вероятность: High/Med/Low
</risks>
</output_format>

Ошибка vs Решение: разбор на живом примере

Типичный «плохой» промт

Сделай мне API для интернет-магазина. Нужны пользователи, товары, заказы, корзина. Используй Node.js и базу данных. Код должен быть чистым.
  • Нет роли — модель угадывает уровень экспертизы
  • Нет стека — Express? Fastify? Nest? Prisma? Drizzle?
  • Нет архитектуры — слоистая? чистая? модульная?
  • Нет формата — один файл? структуру папок? монолит?
  • Нет критериев — что значит «чистый»?
  • Результат: спагетти-код, который переписывать проще

Промт, который даёт результат

<system> Ты — Tech Lead Node.js (NestJS, TypeScript, Prisma). Архитектура: Clean Architecture + Modular Monolith. </system> <modules> users, products, orders, cart </modules> <requirements> — Каждый модуль: controller, service, repository, dto, entity — Валидация: class-validator + pipes — Auth: JWT access/refresh, guards — DB: PostgreSQL, Prisma schema включи — Тесты: unit (service), e2e (controller) </requirements> <output> Структура папок + код всех файлов + prisma.schema </output>
  • Роль задаёт стек и паттерны сразу
  • Модули перечислены — нет угадывания
  • Требования = чек-лист приёмки
  • Формат вывода исключает «воду»
  • Результат: работающий каркас проекта за 1 запрос

Chain-of-Thought: когда включать рассуждения

Как это работает в DeepSeek-R1

DeepSeek-R1 — reasoning-модель. Она генерацирует скрытый цепочку мышления перед финальным ответом. Ты можешь управлять этим процессом тремя способами:

  1. Неявный CoT — просто пиши «подумай шаг за шагом». Модель включит рассуждения автоматически.
  2. Явный блок <thinking> — требуй вынести рассуждения в отдельный тег. Удобно для аудита и отладки.
  3. Структурированный CoT — задай шаги рассуждения: «сначала выдели сущности, затем связи, потом риски, потом план».

Правило: для задач до 3 шагов — неявный CoT. Для архитектуры, диагностики, планирования — всегда явный блок <thinking>.

<thinking> Шаг 1: Анализ требований — Монолит 120 таблиц → 3 bounded context — Order, Catalog, User — явные кандидаты — Billing размыт — нужен domain expert Шаг 2: Выбор паттерна миграции — Strangler Fig: низкий риск, долгий путь — Big Bang: быстрее, риск падения высокий — Выбор: Strangler Fig + CDC для данных Шаг 3: Последовательность извлечения 1. Catalog (самый изолированный, read-heavy) 2. User (auth выносим в Identity Provider) 3. Order (самый сложный, saga-паттерн) Шаг 4: Data ownership strategy — Shared kernel для reference data — CDC (Debezium) → Kafka → сервисы — Dual-write период 2 спринта </thinking> <plan> …структурированный план по этапам… </plan>

Пример видимого рассуждения для аудита решения

Few-shot: когда один пример стоит тысячи слов

Паттерн: Input → Output пары

DeepSeek отлично перенимает формат из примеров. Давай 2–3 пары «вход → идеальный выход» перед реальной задачей.

<examples> <example> <input> Ошибка: NullPointerException в UserService.java:42 Стек: … </input> <output> { «root_cause»: «userRepository.findById возвращает null», «fix»: «Добавить .orElseThrow(() -> new NotFoundException(\»User\»))», «prevention»: «Ввести @NonNull аннотацию на параметре» } </output> </example> <example> <input> Ошибка: QueryTimeoutException в OrderReportJob Стек: … </input> <output> { «root_cause»: «Отсутствует индекс на orders.created_at», «fix»: «CREATE INDEX idx_orders_created_at ON orders(created_at)», «prevention»: «Добавить проверку missing indexes в CI» } </output> </example> </examples> <task> Проанализируй новую ошибку по тому же формату: {{NEW_ERROR_HERE}} </task>

Когда few-shot критичен

  • Строгий формат вывода (JSON схема, GraphQL, SQL)
  • Специфический стиль кода (внутренний style guide)
  • Доменная терминология (медицина, финансы, промышленность)
  • Многошаговые преобразования (ETL, пайплайны)

Лайфхак: храни библиотеку few-shot примеров в векторной БД. При задаче — делай similarity search топ-3 релевантных примера и подставляй в промт динамически. Это даёт консистентность на уровне команды.

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

Промт — это код. Версионируй его.

Лучшие команды не пишут промты «на лету». Они хранят их в Git как first-class artifacts: prompts/v1.2/code-review.yaml, prompts/v2.0/incident-analysis.yaml. С историей изменений, код-ревью промтов, A/B тестами на реальных задачах.

DeepSeek отдаёт качество, пропорциональное структуре ввода. Инвестиция 10 минут в написание структурированного промта экономит часы итераций «сделай лучше», «исправь», «не то».

Структура > Магия
Контекст — король
Формат — закон
Версионируй всё