Как мы учили AI быть мастером текстового квеста — и почему это было больно (но весело) 🎲🤖

Друзья, спасибо за интерес к нашему прошлому посту. Мы постарались в 2х словах рассказать о том, что мы делали, зачем и к чему это привело "в общих чертах". Получили как положительный, так и негативный фидбек. Некоторые даже попробовали наш MVP в действии - отдельная благодарность Вам! Некоторые поделились обратной связью в боте, другие даже вступили в паблик, чтобы поддерживать нас на этом пути. Спасибо всем вам, кого наша работа заинтересовала - мы постараемся не разочаровывать и дальше!

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

Наиболее ранним списком проблем стало следующее:

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

Что-то из этого критично, что-то вторично, но из всего имеющегося вороха проблем мы выбрали тот список, который сильнее всего ломал пользовательский опыт. И отправились их исправлять.

Что делать с контекстом?

Решений было проверено несколько, однако выбрали одно: нам необходимо научить бота "помнить". Забегая вперед мы прошли несколько итераций поиска решений, среди которых была и краткосрочная и долгосрочная память. На сегодняшний день это многоуровневая структура памяти обоих вариантов, которая по заданному алгоритму передается в момент диалога. Идеального рецепта, к сожалению, не имеется - здесь все индивидуально, в зависимости от вашего проекта. Учтите лишь то, что объем затрачиваемых токенов будет напрямую влиять на стоимость для вас самих вашего проекта. И если вы не планируете его коммерческое использование - будьте благоразумны и оптимизируйте ваше потребление.

Что делать с длинными текстами?

Решение этой проблемы вылилось в цепочку экспериментов с результатами. Нужно было заставить бота быть достаточно лаконичным, но при этом не терять красоты повествования. Путем проб и ошибок мы добились необходимого результата. Стоит отметить, что проблема лаконичности и качества (в особенности) очень сильно зависела от вводных, которые мы получаем от игрока. Если пользователь давал интересную обратную связь на историю - она приобретала неожиданные обороты

Про правила, символы и читаемость

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

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

Бот генерировал однообразные скучные условия для всех в рамках вселенной

Удивительно, но факт - каждая из вселенных имела стартовую локацию. И это неплохо для MMORPG, но хотелось бы иметь разнообразие в текстовом квесте. Встал вопрос о том, как поступать лучше: решать за игрока или давать ему выбор? Мы нашли решение "среднее": имея базовое поведение мы добавили отдельную команду, где игрок может описать предысторию своего персонажа. Таким образом она принимала знакомый игроку оборот, плюс мы могли начинать в совершенно иных условиях и нетипичном для вселенной окружении. Хотите в Star Wars наконец-то поиграть за "штурмовика" - пожалуйста. Хотите поиграть за "силы зла" во вселенной "Властелин колец" - так же без проблем.

Как есть сейчас

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

  • технических подробностях реализации (для тех, кому интересно подкапотное)
  • маркетинге и продвижении за пределами списка друзей
  • прочих проблемах, которые решить удалось или пока еще нет

Для тех, кто заинтересовался нашей работой, оставляем ссылки на ознакомление (это все бесплатно и мы будем рады обратной связи)

👉 Попробовать в Telegram: Играть

👉 Следить за апдейтами: Канал сообщества

2
5 комментариев