Почему старые приёмы ломаются на R1
В классических моделях (GPT-4o, Claude 3.5 Sonnet) мы пишем «подумай пошагово», чтобы заставить модель вывести промежуточные токены. DeepSeek-R1 уже обучена это делать на этапе RL (Reinforcement Learning). Добавление инструкций «рассуждай» часто ухудшает результат: модель тратит бюджет токенов на повторение известного ей процесса вместо решения вашей задачи.
Парадокс: чем умнее модель в рассуждении, тем меньше инструкций по процессу ей требуется, и тем больше качественного контекста по сути.
Правило: не описывайте как думать. Опишите что нужно получить и при каких условиях.
Четыре столба промта, который слышит R1
Цель (Goal)
Один конкретный исход: «Написать функцию парсинга», «Сравнить два контракта», «Сгенерировать план тестов». Не «помоги с кодом».
Контекст (Context)
Что модель должна знать: стек, ограничения окружения, входные данные, аудитория, предыдущие решения. Кладём в <context>.
Формат (Format)
Жёсткая спецификация вывода: JSON Schema, Markdown-таблица, код без пояснений, diff-патч. Модель рассуждает свободно, но отдаёт строго.
Ограничения (Constraints)
Чего НЕ делать: не использовать библиотеку X, не превышать 200 строк, не выдумывать API, соблюдать стиль кода. Это «гвардии» для рассуждения.
Фреймворк G-C-F-C за 4 шага
Не запоминайте абстракции. Используйте чек-лист перед каждым сложным запросом. Порядок важен: цель определяет нужный контекст, контекст диктует формат, формат уточняет ограничения.
- 1
Сформулируйте Goal одной фразой
Плохо: «Оптимизируй БД». Хорошо: «Сократи время запроса getUserById до 50мс при нагрузке 1k RPS, не меняя схему».
- 2
Упакуйте Context в XML-теги
Теги создают иерархию внимания. Модель легче извлекает сущности из
<stack>Go 1.22, PostgreSQL 16</stack>, чем из предложения. - 3
Пропишите Format вывода
Требуйте валидный JSON по схеме, diff-файл, Mermaid-диаграмму. Указывайте: «Выводи ТОЛЬКО код», «Никакого поясняющего текста».
- 4
Добавьте Constraints как «не делай»
Отрицательные ограничения работают надежнее позитивных. «Не используй рекурсию» лучше, чем «используй итерации».
DeepSeek R1 vs Обычный чат: где меняется тактика
Три ловушки, в которые падают даже опытные
Перегрузка инструкциями мышления
Фразы «думай глубоко», «проверь себя», «используй цепочку рассуждений» едят токены бюджета thinking и заставляют модель генерировать вербальную «воду» вместо полезных шагов. Доверяйте RL-тренингу.
Игнорирование окна вывода
R1 может выдать 8k+ токенов рассуждения и урезать итоговый ответ по лимиту max_tokens. Всегда ставьте лимит ответа (например, 4096) с запасом под thinking или используйте параметр max_completion_tokens (если API поддерживает).
Смешивание ролей в одном промте
«Ты архитектор и кодер и тестировщик» — рассуждение размывается. Лучше: цепочка вызовов. 1. Архитектор (промт с Goal=Design) → 2. Кодер (промт с Goal=Implement + Context=Design) → 3. Ревьюер (Goal=Review).
Промт — это не заказ, это синхронизация контекста
DeepSeek R1 меняет метафору. Вы не «программируете» модель инструкциями. Вы загружаете в неё состояние задачи (Goal + Context), задаёте форму результата (Format) и ставите границы (Constraints). Остальное — работа движка рассуждения.
Начните с нуля. Напишите <goal> прямо сейчас.