Назад в блог
Janitor AI пишет за меня: 5 настроек и формулировок, чтобы бот перестал отвечать за пользователя

Janitor AI пишет за меня: 5 настроек и формулировок, чтобы бот перестал отвечать за пользователя

8 мин чтения
blog.tags.janitorAIролеплей
Janitor AI пишет за меня: 5 настроек и формулировок, чтобы бот перестал отвечать за пользователя
Коротко: Когда бот пишет реплики за вас, проблема в системном промпте персонажа или отсутствии явных инструкций. Исправляется через OOC-команды, редактирование карточки и префиксы в ваших сообщениях — без перезапуска диалога.

Эта статья не о том, как выбрать платформу для ролевых игр. Если вам нужен обзор альтернатив и сравнение функций, читайте наш гид по выбору AI-платформы.

Бот начинает описывать ваши действия, эмоции и даже диалоги — классическая проблема ролевых чатов на базе больших языковых моделей. Языковая модель обучена продолжать текст, и если контекст выглядит как нарратив от третьего лица, она автоматически додумывает за обоих участников. Решение лежит в трёх плоскостях: системные инструкции персонажа, формат ваших реплик и явные запреты в промпте.

Почему Janitor AI и другие боты пишут за пользователя

Языковая модель не понимает границ ролей. Она видит последовательность токенов и предсказывает следующий. Если в истории диалога есть паттерн «персонаж действует → пользователь действует → персонаж действует», модель продолжит его автоматически.

Три технические причины:

  • Системный промпт персонажа содержит примеры, где бот описывает действия обоих участников. Это обучает модель копировать структуру.
  • Ваши первые сообщения были в формате нарратива («Я вхожу в комнату и сажусь»). Модель запомнила стиль и воспроизводит его.
  • Отсутствует явный запрет в карточке персонажа. Без инструкции «Never write actions or dialogue for {{user}}» модель считает любой текст допустимым продолжением.

Проблема усиливается, если вы используете модели типа LLaMA или более старые версии GPT, которые хуже удерживают контекст инструкций на длинных диалогах. Но даже GPT-4 может сорваться, если промпт противоречив или слишком короток.

Шаг 1: Проверьте и отредактируйте карточку персонажа

Откройте настройки персонажа (обычно кнопка «Edit» или значок шестерёнки рядом с аватаром). Найдите поле «System Prompt», «Character Definition» или «Personality». Прочитайте весь текст и удалите любые фрагменты, где бот описывает действия пользователя.

Типичный пример проблемного промпта:

«{{char}} is a detective. {{user}} enters the office, looking nervous. {{char}} offers a seat and starts asking questions.»

Исправленная версия:

«{{char}} is a detective. {{char}} observes {{user}}'s body language and responds accordingly. {{char}} never assumes {{user}}'s emotions, thoughts, or actions.»

Добавьте в конец системного промпта явный запрет:

«[IMPORTANT: {{char}} must never write dialogue, actions, thoughts, or feelings for {{user}}. Always stop after {{char}}'s own action or speech and wait for {{user}}'s response.]»

Сохраните изменения. Если платформа не позволяет редактировать чужих персонажей, создайте форк (копию) и внесите правки туда. На платформах с открытым каталогом это обычно кнопка «Remix» или «Duplicate».

Шаг 2: Используйте OOC-команды для немедленной коррекции

smartphone keyboard

OOC (Out Of Character) — команды вне ролевой игры, которые модель обрабатывает как прямые инструкции. Формат: текст в двойных круглых или квадратных скобках.

Когда бот написал за вас, не продолжайте диалог. Сразу отправьте:

((Стоп. Ты только что описал действия моего персонажа. Перепиши последнее сообщение, оставив только свои действия и слова. Не придумывай за меня ничего.))

Или короче:

[[Rewrite your last message. Do not include any actions or dialogue for my character. Stop after your own response.]]

Модель в 80–90% случаев регенерирует ответ корректно. Если нет — используйте кнопку «Regenerate» или «Edit» и удалите лишний текст вручную, затем отправьте OOC-напоминание ещё раз.

Этот метод работает в любом чате на базе LLM, включая Character AI, Janitor AI, романтические боты и кастомные решения на OpenAI API.

Шаг 3: Форматируйте свои реплики с явным разделением ролей

Если вы пишете «Я киваю и говорю: привет», модель видит смешанный нарратив и может продолжить его от лица бота. Разделите действие и речь визуально.

Плохой формат:

Я вхожу в кафе, сажусь за столик у окна и заказываю капучино. Потом достаю телефон.

Хороший формат:

*Вхожу в кафе и сажусь за столик у окна.*
— Капучино, пожалуйста.

Или:

**Действие:** сажусь за столик, достаю телефон.
**Реплика:** «Привет. Долго ждал?»

Звёздочки, тире и метки «Действие/Реплика» создают визуальную границу. Модель реже пересекает её, потому что обучена на текстах, где такие маркеры обозначают смену говорящего.

Альтернатива — префикс с именем:

{{user}}: *Киваю.* Понял, спасибо.

Это особенно эффективно на платформах, где в промпте используется шаблон «{{char}}: ... {{user}}: ...». Модель автоматически продолжит от лица {{char}}, а не вашего.

Шаг 4: Добавьте в каждое сообщение «якорь ожидания»

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

Примеры якорей:

  • *Смотрю на тебя и жду ответа.*
  • — Ну и? Что скажешь?
  • *Протягиваю руку для рукопожатия.*
  • — ...твоя очередь.

Сравните два сообщения:

Без якоря: *Открываю дверь, вхожу, снимаю куртку, вешаю на крючок.*

С якорём: *Открываю дверь и вхожу.* — Привет. Ты дома?

Во втором случае модель понимает: пользователь закончил, ждёт реакции. В первом — видит незавершённую сцену и может дописать «Потом {{user}} идёт на кухню и наливает воды».

Этот приём работает на всех платформах с girlfriend-ботами, где диалоги строятся на эмоциональном обмене и паузах.

Шаг 5: Настройте параметры генерации (Temperature, Frequency Penalty)

chat conversation

Если у вас есть доступ к расширенным настройкам API (Janitor AI позволяет подключить собственный ключ OpenAI или KoboldAI), измените два параметра:

ПараметрСтандартное значениеРекомендуемоеЭффект
Temperature0.8–1.00.6–0.7Снижает «креативность» — модель реже додумывает лишнее
Frequency Penalty0.00.3–0.5Штрафует повторяющиеся конструкции, включая «{{user}} делает X»
Presence Penalty0.00.2–0.4Поощряет новые токены, снижает вероятность копирования стиля пользователя

Где найти эти настройки: в Janitor AI — раздел «API Settings» → «Advanced». В SillyTavern (если используете локальный фронтенд) — вкладка «AI Response Config».

Не опускайте Temperature ниже 0.5: ответы станут механическими и повторяющимися. Оптимум для ролевых игр — 0.65.

Если вы не используете собственный API-ключ, попробуйте переключиться на другую модель в настройках платформы. Например, с Llama-2-13B на OpenAI GPT-3.5-turbo: последняя лучше держит границы ролей.

Типичные ошибки, которые усугубляют проблему

Ошибка 1: Вы редактируете только последнее сообщение бота. Модель учитывает всю историю чата (context window). Если в предыдущих 10 сообщениях бот три раза писал за вас, он запомнил этот паттерн. Решение: удалите или отредактируйте все проблемные реплики в истории, либо начните новый чат с исправленным промптом.

Ошибка 2: Вы пишете слишком длинные сообщения без структуры. Абзац на 150 слов с описанием интерьера, ваших мыслей и трёх действий подряд — приглашение для модели продолжить нарратив. Разбивайте на короткие реплики: одно действие или одна фраза за раз.

Ошибка 3: Вы не используете кнопку Regenerate. Если бот написал за вас, не пытайтесь «переиграть» ситуацию своим следующим сообщением. Модель уже зафиксировала ошибку в контексте. Регенерируйте ответ или удалите его вручную.

Ошибка 4: Промпт персонажа содержит противоречия. Например: «{{char}} is proactive and takes initiative» + «{{char}} never assumes {{user}}'s actions». Модель не понимает, где граница между «инициативой» и «узурпацией роли». Перепишите промпт конкретно: «{{char}} takes initiative in conversation and decision-making, but always waits for {{user}} to describe their own actions and feelings».

Ошибка 5: Вы используете устаревшую модель. Если платформа предлагает выбор между GPT-3.5-turbo (или новее) и Llama-1, Pygmalion-6B, выбирайте первое. Старые модели хуже обучены разделению ролей в диалогах.

Как проверить, что проблема решена

anime character

Начните новый чат с отредактированным персонажем. Отправьте три тестовых сообщения:

  1. Короткое действие без речи: *Киваю.*
  2. Вопрос без действия: — Ты серьёзно?
  3. Действие + речь с якорем: *Протягиваю чашку.* — Держи. Что дальше?

Если бот ни разу не дописал за вас действие или реплику — настройки работают. Если сорвался на третьем сообщении — вернитесь к шагу 1 и усильте запрет в системном промпте: добавьте его в начало и в конец, используйте caps («NEVER WRITE FOR USER»).

Сохраните рабочую версию промпта как шаблон. На платформах с редактором персонажей можно создать базовую карточку с правильными инструкциями и копировать её для новых ботов.

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

Некоторые платформы (SillyTavern, Agnai) позволяют добавить постоянный префикс к каждому сообщению модели. Это текст, который модель видит перед генерацией ответа, но пользователь не видит в интерфейсе.

Пример префикса:

[{{char}}'s response only. Do not write or assume any actions, thoughts, or dialogue for {{user}}.]

Или суффикс к вашим сообщениям:

[Wait for {{char}} to respond. Do not continue {{user}}'s actions.]

В Janitor AI эта функция недоступна нативно, но если вы используете API-прокси (например, SillyTavern + Janitor API), настройте префикс там.

Этот метод особенно полезен, если вы часто переключаетесь между персонажами и не хотите редактировать каждого вручную.

Часто задаваемые вопросы

Бот перестал писать за меня, но теперь его ответы стали короче и скучнее. Как вернуть детализацию?

Добавьте в системный промпт инструкцию о длине и стиле: «{{char}} writes detailed responses (150–250 words), describing surroundings, body language, and inner thoughts — but only for {{char}}, never for {{user}}.» Увеличьте Max Tokens в настройках API до 300–400. Попросите бота в OOC: ((Пиши подробнее, описывай свои эмоции и окружение, но не придумывай за меня.)) Проблема обычно в том, что запрет сформулирован слишком жёстко и модель перестраховывается.

Я всё настроил, но в середине длинного диалога бот снова начинает писать за меня. Почему?

Контекстное окно модели ограничено (обычно 4000–8000 токенов). Когда история чата становится длинной, старые сообщения выпадают из памяти, включая системный промпт. Решение: используйте функцию «Pin Message» или «Memory», если платформа поддерживает, чтобы закрепить ключевые инструкции. Либо периодически (каждые 20–30 сообщений) отправляйте OOC-напоминание: ((Помни: ты не пишешь за моего персонажа.))

Можно ли полностью запретить боту описывать окружение, если оно касается моего персонажа?

Нет, это слишком жёсткое ограничение. Бот может написать «Комната пуста, только {{user}} стоит у окна» — это описание сцены, а не действие за вас. Разрешите боту описывать статичные наблюдения («{{user}} выглядит задумчивым», «На столе перед {{user}} лежит книга»), но запретите динамические действия («{{user}} берёт книгу и открывает её»). Формулировка: «{{char}} may describe what {{char}} observes about {{user}}, but never decides {{user}}'s actions or words.»

Я использую персонажа с чужой карточки, и там нет запрета на действия за пользователя. Как исправить без редактирования?

Отправьте OOC-инструкцию в самом первом сообщении нового чата, до начала ролевой игры: ((Правило: ты никогда не пишешь действия, мысли или слова за моего персонажа. Всегда останавливайся после своей реплики и жди моего ответа. Подтверди, что понял.)) Модель ответит подтверждением, и это зафиксируется в контексте. Повторяйте каждые 30–40 сообщений. Это менее надёжно, чем редактирование промпта, но работает в 60–70% случаев.

Используя сервис, вы соглашаетесь с использованием cookies и Яндекс.Метрики (включая вебвизор). Подробнее

Janitor AI пишет за меня: 5 настроек, чтобы бот не отвечал | vluvvi