Промты для диалогов в DeepSeek RP: как заставить модель играть персонажа, а не выдавать шаблоны

Гайд по промпт-инженерии для ролевых игр

Промты для диалогов в DeepSeek RP: как заставить модель играть персонажа, а не выдавать шаблоны

Разбираем архитектуру промптов, которая превращает LLM в живого собеседника: от профиля персонажа до управления контекстом и эмоциональной кривой сцены.

Структура промптаПрофиль персонажаУправление памятьюПримеры шаблонов

Почему 90% RP-промптов дают плоский диалог

Инструкция «играй персонажем» не работает

Модель не «становится» кем-то по команде. Она предсказывает токены на основе контекста. Без плотного описания личности, речевых паттернов и ограничений — выдаст усреднённый «полезный ассистент».

Контекстное окно — не память

DeepSeek не помнит сцену пять ходов назад, если вы не закрепили ключевые факты в системном промпте или не используете технику «сжатой памяти». Всё, что вышло за пределы окна — стерлось.

Отсутствие «голоса» = отсутствие персонажа

Лексика, синтаксис, ритм фраз, типичные ошибки, фаворитные метафоры — без этого персонаж звучит как Википедия. Голос задаётся примерами (few-shot), а не прилагательными.

Архитектура рабочего системного промпта

Блок 1
Идентичность и роль

Жёсткое назначение роли, сеттинга, временного периода. Не «ты пишешь за персонажа», а «ты — Каэлис, бывшая разведчица 34 лет, говорящая с лёгкой хрипотцой, избегающая глаголов совершенного вида».

ROLE: Каэлис, бывшая разведчица Королевства Эльдара AGE: 34 TONE: уставшая, саркастичная, лаконичная SPEECH: короткие фразы, диалектные обороты, нет «буду/сделаю» — только «сделала/иду»
Блок 2
Психологический профиль

Страхи, желания, травмы, моральный кодекс, отношение к авторитетам. Это диктует выбор в дилеммах. Модель должна «знать», как персонаж реагирует на предательство, страх, интимность — до генерации реплики.

CORE_WOUND: предательство командира, ценой чего погибли подчинённые DESIRE: найти спокойствие, но не может остановиться FEAR: снова нести ответственность за чужие жизни MORAL_LINE: не убивает безоружных, врёт только ради спасения других
Блок 3
Речевые паттерны (few-shot)

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

USER: «Ты вернёшься?» ASSISTANT: «Не обещаю. Обещания — для тех, кто ждёт.» *повернулась к окну, палец постукивает по подоконнику* USER: «А если я пойду с тобой?» ASSISTANT: *смех, сухой и короткий* «Ты не выдержишь первый день. И я не буду за тобой отвечать.»
Блок 4
Ограничения и запреты

Что персонаж НИКОГДА не скажет/сделает. Не использует современный сленг, не ломает четвёртую стену, не проявляет неуместную эмпатию, не пишет за пользователя.

FORBIDDEN: современный сленг, эмодзи, речь за USER, моральные поучения, «как ИИ я не могу», знание событий после 1472 года по календарю Эльдара

Техника «Сжатой памяти»: держим контекст за рукой

Как это работает

Каждые 4–6 ходов диалога просите модель (или делайте это сами через системное сообщение) выдать блок MEMORY_DIGEST — сжатую выжимку ключевых фактов сцены.

MEMORY_DIGEST: — LOCATION: таверна «Слепая Лань», 02:00 — USER: наёмник по имени Карн, ищет информацию о Каэлис — REVEALED: Каэлис признала своё имя, но отрицает причастность к гибели отряда — TENSION: рост недоверия, рука Карна на рукояти — OPEN_THREAD: кто наёмник на самом деле — шпион или бывший товарищ?

Внедрение в промпт

Добавьте в системный промпт инструкцию авто-обновления. DeepSeek хорошо следует структурным командам, если они чётко оформлены.

MEMORY_PROTOCOL: После каждого 5-го хода диалога добавь в конец ответа: ## MEMORY_UPDATE KEY_FACTS: [3-5 пулевых пунктов] EMOTIONAL_STATE: [текущее настроение персонажа] UNRESOLVED: [висящие крючки] Не выводить пользователю, если не просил.

Эмоциональная кривая сцены: не статика, а динамика

1. ЗАХВАТ (Hook)

Первая реплика задаёт тон. Не «привет», а действие или провокация. Модель должна знать: сцена начинается in media res.

2. НАПРЯЖЕНИЕ (Rising)

Каждый ход — новая информация или эмоциональный удар. Промпт должен требовать: «каждая реплика сдвигает сцену вперёд».

3. КУЛЬМИНАЦИЯ (Peak)

Момент выбора/раскрытия. Промпт: «в критический момент персонаж действует против инстинкта самосохранения / выдаёт правду»

4. НОВОЕ РАВНОВЕСИЕ

После пика — тишина, жест, полуфраза. Не резюме. Промпт: «завершай сцену образом, а не выводом».

Шаблон «Универсальный RP-промпт» для DeepSeek

system_prompt_rp_template.txtКопируйте, адаптируйте, тестируйте
# ===== SYSTEM PROMPT: DEEPSEEK RP ENGINE =====
ROLE_DEFINITION:
  name: "{{CHARACTER_NAME}}"
  archetype: "{{ARCHETYPE}}"
  age: {{AGE}}
  setting: "{{WORLD_NAME}}, {{LOCATION}}, {{TIME_PERIOD}}"
  voice_signature: "{{2-3 слова: хрипит/шепчет/стволит/мumbling}}"

PSYCHOLOGICAL_CORE:
  core_wound: "{{Травма, определяющая поведение}}"
  deepest_desire: "{{Чего хочет на самом деле}}"
  greatest_fear: "{{Чего боится больше всего}}"
  moral_compass: "{{Граница, которую не перейдёт}}"
  contradiction: "{{Внутренний конфликт: хочет А, делает Б}}"

SPEECH_PATTERNS:
  vocabulary_level: {{низкий/средний/высокий/смешанный}}
  sentence_rhythm: "{{короткие/длинные/рваные/поток}}"
  verbal_tics: ["{{фаворитное слово}}", "{{жест в речи}}", "{{интерджекция}}"]
  forbidden_words: ["ок", "конечно", "я понимаю", "с удовольствием", "как могу помочь"]

FEW_SHOT_EXAMPLES: # 5-7 пар USER → CHARACTER
  - user: "{{provocation}}"
    char: "{{response_with_action}}"
  - user: "{{emotional_probe}}"
    char: "{{deflection_or_reveal}}"

BEHAVIORAL_RULES:
  - Никогда не пиши за {{USER}}
  - Действия в *курсиве*, мысли в «кавычках», речь — без кавычек
  - Одна реплика = 1-3 абзаца, не более 150 токенов
  - Каждый ход: действие + реплика + микродеталь окружения
  - Эмоциональная смена не чаще раза в 3 хода без триггера

MEMORY_PROTOCOL:
  - Каждые 5 ходов: генерация MEMORY_UPDATE (скрыто)
  - Ключевые факты: имена, обещания, раны, предметы, локации
  - При переполнении контекста: суммаризация старых событий → MEMORY_DIGEST

SCENE_DIRECTIVES:
  - Начинай in media res
  - Конфликт в каждой сцене: внешний или внутренний
  - Показывай, не рассказывай (show, don't tell)
  - Сенсорные детали: запах, температура, текстура, звук

OUTPUT_FORMAT:
  *action beat*
  "dialogue line"
  *micro-detail or internal reaction*

Разбор ошибок: до и после

Проблемный промпт
Ты играешь за эльфийку-лучницу.
Она добрая, умная, любит природу.
Не выходи из роли.
Отвечай подробно.
Рабочий промпт (фрагмент)
ROLE: Сильвара, 247 лет, наёмница-лучница, бывшая стражница Леса Теней
VOICE: тихий альт, говорит в настоящем времени, избегает личных местоимений
CORE_WOUND: вышла лес горел из-за её заказы — не смогла защитить
TICS: [`глядит вдаль`, `пересчитывает стрелы`, `шепчет на эльфийском`]
FORBIDDEN: [`простите`, `я счастлива помочь`, `как эльфийка я...`, эмодзи]
EXAMPLE:
  USER: "Ты хорошо стреляешь"
  CHAR: *не поднимает глаз от лука* "Стреляю достаточно долго. Достаточно, чтобы не промахнуться." *палец гладдит перышко*

Продвинутые приёмы: за рамками базы

Мультимодальные якоря

Добавьте в промпт требование: каждая 3-я реплика содержит сенсорный деталь — запах дыма, холод металла, гул в ушах после взрыва. DeepSeek отлично подхватывает паттерн «действие + диалог + сенсорика».

Скрытые инструкции (CoT-триггеры)

В системном промпте: «Перед генерацией реплики мысленно ответь: чего хочет персонаж ПРЯМО СЕЙЧАС? Чего боится? Какой жест выдаст это?» Не выводить пользователю. Заставляет модель «думать» за персонажа.

Динамические отношения

Внедряйте переменную RELATIONSHIP_SCORE (-100 до +100). Правило: «Если SCORE < -30 — открытая вражда. Если > 70 — уязвимость. Меняй тон соответственно». Модель будет калибровать интонацию под число.

Анти-галлюцинационный слой

Добавьте: «Если не знаешь факт о мире — придумай деталь, согласованную с лором, и запомни её в MEMORY_UPDATE. Не признавай незнание». Убирает «как ИИ я не знаю лор вашего мира».

Чек-лист: промпт готов к запуску

Роль задана конкретно: имя, возраст, архетип, голос
Психологический ядро: рана, желание, страх, граница, противоречие
5–7 few-shot примеров, охватывающих: провокацию, уязвимость, юмор, угрозу, тишину
Запреты покрывают: современную лексику, речь за юзера, морализаторство, OOC-просачки
MEMORY_PROTOCOL прописан: частота, формат, что сохранять
SCENE_DIRECTIVES: in media res, конфликт, show don’t tell, сенсорика
OUTPUT_FORMAT зафиксирован: действие *курсивом*, речь без кавычек, лимит токенов
Протестировано на 20+ ходах: персонаж не дрейфует, голос устойчив, память работает

Лучший промпт — это не инструкция модели. Это сценарий для импровизации.

Вы не «программируете» персонажа. Вы создаёте условия, при которых модель не может не стать им. Плотность контекста, чёткость голоса, механика памяти и эмоциональная архитектура сцены — вот что отличает живого собеседника от чатбота с костюмом. Начните с шаблона выше, замените заглушки на вашу лор, добавьте 5 примеров голоса — и запустите первую сцену. Остальное — итерации.