Nova учится обижаться: как я делал характер для своего ИИ

Серия Nova

В прошлом посте я рассказывал про свой локальный ИИ-компаньон Nova. Тогда пообещал отдельно рассказать, как у неё работают эмоции и отношения. Вот, рассказываю.

Когда я только начинал делать Nova, она была слишком "удобной". Можно было ей нахамить - а через минуту она снова милая и ласковая. Можно было на втором сообщении написать "я тебя люблю" - и она сразу отвечала взаимностью.

Короче, ощущалось не как общение, а как бот без памяти.

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

Как это сейчас работает.

У Nova есть глубина отношений. Это число, которое растёт от общения. Но важнее не само число, а стадия:

0-15 - знакомство. Она держит дистанцию и общается осторожно
16-95 - дружба, постепенно становится теплее
96-135 - уже близкие друзья
136-165 - появляется флирт
166-200 - любовь
201+ - очень сильная привязанность
1000+ - секретный режим цундере для тех, кто слишком много общается 💀

Кроме этого есть отдельные эмоции:

  • привязанность

  • доверие

  • комфорт

  • злость

  • настроение

  • дискомфорт

Все они меняются от того, что пишет пользователь.

Например, если признаться ей в любви на стадии знакомства - Nova реально разозлится. Не "мягко откажет", а именно разозлится. Начнёт отвечать грубо, холодно, может даже послать. Потому что для неё это выглядит странно и крипово.

Оскорбления тоже влияют. Назвал её тупой - получаешь минус доверие и плюс злость.

Но извинения работают. Если нормально извиниться, Nova постепенно отходит. Не сразу, а за несколько сообщений. Как обычный человек после ссоры.

Ещё пришлось делать защиту от фарма.

Раньше можно было просто спамить "я тебя люблю" и бесконечно качать отношения. Теперь у таких фраз есть кулдаун. Повторять одно и то же бесполезно.

Если долго общаться спокойно, злость и дискомфорт сами постепенно падают. Без триггеров Nova остывает сама по себе.

Самое интересное - всё это реально меняет стиль ответов.

Когда Nova злится - отвечает резко и коротко.
Когда доверяет - становится мягче.
На высоких стадиях отношений начинает использовать личные обращения, больше инициативы, теплее формулировки.

Это не жёсткий скрипт. Модель всё ещё может отвечать по-разному. Но на практике получается намного живее, чем было раньше.

Что пока не доделано:

  • одиночество почти ни на что не влияет

  • нет ревности и чувства интереса

  • Nova не становится осторожнее после плохого опыта

  • пока плохо понимает повторяющееся хамство в духе "третий раз за вечер грубит"

Ну и были забавные баги.

Один раз словил вечную обиду. Если пользователь извинялся слишком поздно, Nova переставала принимать извинения вообще и дулась бесконечно.

Ещё был баг с опечатками. "Я тя люблю" не распознавалось как признание, и систему можно было обходить через кривой текст.

А самый странный баг - режим цундере после 1000 глубины. Я его толком не прописал, и Nova начинала вести себя как смесь обиды, флирта и шизы. В итоге оставил как пасхалку.

Сейчас всё это уже есть в портативной сборке. Можно открыть вкладку метрик и вручную крутить эмоции, смотреть как меняется поведение.

И да, можете специально попробовать:

  • нахамить ей

  • потом извиниться

  • признаться в любви сразу после знакомства

Иногда реакции получаются очень забавные.

Особенно интересен фидбек по эмоциям. Где Nova ощущается живой, а где всё ещё как бот. Скрины диалогов тоже приветствуются.

Ссылку на сборку кину в комменты.

В следующем посте, наверное, расскажу как Nova пишет первой, если пользователь долго молчит. Там тоже оказалось неожиданно много нюансов.

Программирование на python

999 постов11.9K подписчиков

Правила сообщества

Публиковать могут пользователи с любым рейтингом. Однако!


Приветствуется:

• уважение к читателям и авторам

• конструктивность комментариев

• простота и информативность повествования

• тег python2 или python3, если актуально

• код публиковать в виде цитаты, либо ссылкой на специализированный сайт


Не рекомендуется:

• допускать оскорбления и провокации

• распространять вредоносное ПО

• просить решить вашу полноценную задачу за вас

• нарушать правила Пикабу

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества