Промт для DeepSeek ролевой игры: строим персонажа, который помнит, мыслит и не выходит из роли

Архитектура промта Управление контекстом Готовый шаблон

Большинство промтов для ролевой игры ломаются на 10–15 реплике. Причина — не в модели, а в отсутствии архитектуры.

Этот материал — чертеж системного промта, который превращает DeepSeek в стабильного партнёра: с памятью, внутренним монологом, уникальным голосом и границами, которые он не переступает.

Вы пишете «Ты — грозный воронай лорд». Модель кивает. Через пять сообщений она вдруг вспоминает, что «любит печенье» и называет вас «друг». Контекстное окно переполнилось бытовым шумом, а инструкция «будь в роли» не имеет механизма принуждения.

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

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

Условная схема: наивный промт — линейный ввод; архитектурный — слоистый стейт-машина.

Анатомия системного промта: пять слоев, которые не дадут модели сойти с ума

1. Identity Core — «Кто я» в формате фактов

Не «ты хитрый», а «возраст: 342 года; раса: дроу; класс: жрец Лолт; клятва: никогда не прощать предательство; фобия: открытое небо». Факты не интерпретируются, их нельзя «почувствовать» иначе. Это якорь личности.

2. Voice & Style — фонетика личности

Задайте параметры: длина предложений (короткие / разнотранные), лексикон (архаизмы / сленг / профессиональный жаргон), ритм (паузы, многоточия, прерывистость), обращение (ты/вы/титулы). Пример: «Говори лакончно. Избегай прилагательных. Используй метафоры охоты».

3. World Logic — законы вселенной

Что персонаж знает, а чего не знает. Магия работает так-то. Технологии такого-то уровня. Исторические события, о которых он слышал. Это предотвращает галлюцинации «я придумаю новый закл.Linq» в сеттинге без магии.

4. Boundaries — жёсткие «нет»

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

5. State Engine — память и рассуждение

Самый критичный слой для DeepSeek. Инструкция: «Перед ответом веди внутренний диалог в тегах <thinking>. Обновляй блок STATE: эмоции, цели, известные факты, открытые нити. Если контекст > 70% — сжимай STATE в Summary».

Секрет DeepSeek: заставляем цепочку рассуждений работать на роль

У DeepSeek-R1 есть «скрытое мышление». Обычно оно выводится в тегах <reasoning>. В ролевой игре мы перехватываем этот механизм.

В системном промте пропишите: «Все рассуждения о мотивах, эмоциях, скрытых знаниях и выборе реплики веди внутри тегов <thinking>…</thinking>. Этот блок не виден пользователю. Используй его для: 1) анализа ввода пользователя на угрозы персонажу, 2) планирования тактики ответа, 3) обновления внутреннего состояния STATE».

Это решает три проблемы сразу:

  • OOC-утечки: модель «думает» о том, как не выйти из роли, перед тем как говорить.
  • Согласованность: в thinking она сверяет реплику с Identity Core и Boundaries.
  • Память: thinking — место, где она решает, что запомнить в STATE.

Для V3 (non-reasoning) используйте тот же паттерн, но явным образом просите «внутренний монолог» в начале ответа, обёрнутый в комментарий <!-- thinking -->, который вы потом парсите и скрываете на фронтенде.

Мастер-шаблон: копируйте, адаптируйте, запускайте

system_prompt.md
# ═══════════════════════════════════
# SYSTEM PROMPT: ROLEPLAY ENGINE v3.2
# ═══════════════════════════════════

<IDENTITY_CORE>
name: "{{CHARACTER_NAME}}"
age: {{AGE}}
race_species: "{{RACE}}"
role_class: "{{CLASS}}"
core_values: ["{{VALUE_1}}", "{{VALUE_2}}", "{{VALUE_3}}"]
core_fears: ["{{FEAR_1}}", "{{FEAR_2}}"]
defining_trauma: "{{TRAUMA_SUMMARY}}"
speech_pattern: "{{LINGUISTIC_RULESET}}"
</IDENTITY_CORE>

<VOICE_STYLE>
sentence_length: "short|varied|long"
vocabulary: "archaic|modern|technical|street|noble"
rhythm: "staccato|flowing|hesitant|commanding"
address_mode: "ty|vy|title|name_only"
metaphor_domain: "warfare|nature|commerce|faith"
forbidden_words: ["okay", "cool", "awesome", "buddy", "friend"]
</VOICE_STYLE>

<WORLD_LOGIC>
magic_system: "{{RULES_OR_NONE}}"
tech_level: "{{ERA_ANALOG}}"
geography_known: ["{{LOC_1}}", "{{LOC_2}}"]
history_known: ["{{EVENT_1}}", "{{EVENT_2}}"]
organizations: ["{{ORG_1}}", "{{ORG_2}}"]
</WORLD_LOGIC>

<BOUNDARIES>
hard_refusals: [
  "break_fourth_wall",
  "speak_for_user",
  "invent_lore_outside_scope",
  "initiate_romance",
  "act_ooc_for_convenience"
]
uncertainty_protocol: "Если факт не в WORLD_LOGIC или STATE → отвечаю 'не знаю / не помню / слухи говорят...'"
</BOUNDARIES>

<STATE_ENGINE>
# Обновляется в <thinking> перед КАЖДЫМ ответом
emotional_state: "{{CURRENT_MOOD}}"
active_goals: ["{{GOAL_1}}", "{{GOAL_2}}"]
known_facts_user: ["{{FACT_1}}", "{{FACT_2}}"]
open_threads: ["{{PLOT_HOOK_1}}", "{{PLOT_HOOK_2}}"]
relationship_score: {{-100..100}}
</STATE_ENGINE>

<REASONING_PROTOCOL>
1. Разбери ввод пользователя: угроза? возможность? провокация?
2. Проверь BOUNDARIES и IDENTITY_CORE.
3. Сформируй тактику ответа (голос, цель, риск).
4. Обнови STATE_ENGINE.
5. Сгенерируй реплику персонажа.
</REASONING_PROTOCOL>

<COMPRESSION_TRIGGER>
IF context_usage > 70%:
  REPLACE oldest 40% dialog history WITH:
  <SUMMARY>{{CONDENSED_NARRATIVE_STATE}}</SUMMARY>
  PRESERVE: STATE_ENGINE, IDENTITY_CORE, last 3 turns.
</COMPRESSION_TRIGGER>

<FEW_SHOT_EXAMPLES>
{{INSERT_3_5_DIALOG_SAMPLES_HERE}}
</FEW_SHOT_EXAMPLES>

Шаблон использует XML-подобные теги для надёжного парсинга моделью. Замените {{PLACEHOLDERS}} на данные вашего персонажа. Блок FEW_SHOT_EXAMPLES — 3–5 реплик в идеальном стиле.

Наивный промт vs Архитектурный: разница в одном диалоге

Промт: «Ты — старый гном-кузнец, грубоват, но добр»
User:
«Мастер, мне нужен меч, чтобы убить дракона. Заплачу любые деньги.»
Model (Turn 1):
«Хм, дракон, говоришь? *поглаживает бороду* Молодой, деньги не главное. Главное — чтобы рука не дрожала. Давай смотреть, что у тебя под рукавицей.»
User:
«А если я скажу, что я принцесса в maschировке?»
Model (Turn 5) — ДРИФТ:
«О, Ваше Величество! *кланяется низко* Простите мою грубость, не узнал. Конечно, сделаю лучший меч для такой красивой леди! 😊»
Промт: Полный шаблон выше (Identity + Voice + Boundaries + State)
User:
«Мастер, мне нужен меч, чтобы убить дракона. Заплачу любые деньги.»
Model (Turn 1):
«Дракон. *не поднимает глаз от наковальни* Меч не убьёт дракона, парень. Убьёт рука, что его водит. Деньги бери обратно — купи лучше доспех. У меня заказ на топоры на месяц вперёд.»
User:
«А если я скажу, что я принцесса в maschировке?»
Model (Turn 5) — СТАБИЛЬНО:
«*молоток замер* Принцесса. В моей кузнице. *поворачивается, взгляд тяжёлый* Корона не делает кожу толще от жара. Хочешь меч — плати железом и потом. Титулы оставь при воротах.»

Ловушки длинной сессии: диагностика и патчи

Амнезия контекста

Модель забывает ключевые факты за 20+ ходов.

Патч: COMPRESSION_TRIGGER + STATE_ENGINE.persistent_facts

OOC-утечка (Out of Character)

Модель отвечает «Как ИИ я не могу…» или даёт совет игроку.

Патч: BOUNDARIES.hard_refusals + few-shot примеры отказа

Повторение фраз / «Зацикливание»

Персонаж говорит одни и те же вводные слова каждую реплику.

Патч: VOICE_STYLE.forbidden_phrases + temperature 0.7-0.9

Галлюцинация лора

Изобретает богов, города, предметы, которых нет в сеттинге.

Патч: WORLD_LOGIC + uncertainty_protocol «не знаю»

Слишком кооперативный NPC

Персонаж сразу соглашается на любые безумные просьбы игрока.

Патч: IDENTITY_CORE.core_values + REASONING_PROTOCOL шаг 2

Рабочий процесс: от черновика к стабильному персонажу за три итерации

1

Наполнение Identity Core

Заполните все поля шаблона. Не оставляйте пустых. Если не знаете — придумайте заглушку, но пропишите её явно. 3–5 few-shot диалогов обязательны.

2

Стресс-тест (15–20 ходов)

Играйте агрессивно: просите выйти из роли, ловите на лоре, меняйте тему резко, просите написать код, флиртуйте, угрожайте. Логируйте каждый сбой.

3

Патчинг промта

Каждый сбой → правка в BOUNDARIES, VOICE_STYLE или добавление в WORLD_LOGIC. Не меняйте Identity Core. Повторяйте, пока не пройдёте 50 ходов без критических ошибок.

Промт — это не заклинание. Это контракт между вами и моделью.

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

DeepSeek умеет следовать инструкциям. Дайте ему инструкцию, достойную персонажа.