Gamio AI - текстовое приключение на русском языке, основанное на искусственном интеллекте.
Как бы пафосно это не звучало, мне удалось создать рабочую версию этой амбициозной идеи
Начало всех начал
Не могу назвать себя профессиональным разработчиком, но я имел большой опыт в сфере машинного обучения.
Мне хотелось создать продукт на основе нейронных сетей, который будет понятен и доступен каждому человеку без вникания в эту сложную тему.
Ничего лучше я не придумал, кроме как создать текстовый квест с использованием искусственного интеллекта. Данный формат уже популярен за рубежом.
Так и появилась первая версия Gamio AI.
В самой первой версии я прибегнул к ресурсам компании Ai21 Labs.
На тот момент у них было две GPT-like модели: одна имела 7 млрд параметров, другая 178 млрд параметров. Они предоставляли возможность бесплатного обучения нейронной сети.
Я собрал CYOA истории и отправил им. Через несколько недель я получил две модели, имеющие 7 млрд параметров (вторая была основана на предыдущей). Все они понимали исключительно английский язык (пришлось использовать переводчик).
Из этого всего вытекли целых две крупных проблемы.
Ужасное, просто ужасающие качество полученной модели. (Кто в этом виноват - не ясно)
Огромная цена на обслуживание такой модели. Если каждый день 100 человек будут играть в Gamio, то мне бы понадобилось 70 000 руб/месяц на поддержание работоспособности проекта.
С таким настроем проект проработал два дня.
Возрождение проекта
После нескольких месяцев скурпулёзного изучения всех доступных средств реализации, я решил несмотря ни на что довести проект до ума.
Разработка сайта
В первую очередь я начал проектирование самого сервиса, потому что был уверен в качестве планируемого искусственного интеллекта.
Мне был удобен язык Python, поэтому использование открытого фреймворка Django - было правильным решением.
Сайт было решено оформить в простом, тёмном стиле. Никаких проблем с созданием дизайна не возникло.
Для реализации всех своих творческих идей, я использовал WebFlow.
Капча
Не хотелось иметь ботов на своём сайте. Использование стандартных reCAPTCHA или hCAPTCHA меня не устраивало. Их можно легко обойти.
Поэтому я решил изобрести велосипед под названием fiCAPTCHA. Это самостоятельный модуль для Python, который генерирует изображение, на котором нужно найти определённый объект.
Может это банально, но боту её точно не пройти.
Вот таким кодом идёт определение координат клика и дальнейшей проверки. Истинные координаты хранятся на серверной стороне.
function click(event) {
var xCoordinate = event.offsetX;
var yCoordinate = event.offsetY;
$.ajax({
type: 'POST',
url: '/app/captcha/c',
data: {...},
success: (function(data){
...
})
});
}
Цензура
В Gamio Ai присутствует некое сообщество, высказывания которого нужно регулировать.
В этой задаче было решено использовать искусственный интеллект. А точнее BERT-модель, которая классифицирует текст по двум категориям: 0 - допустить; 1 - не допустить.
Каждый мир и комментарий имеет дополнительно поле в своей базе данных.
class ...(models.Model):
...
is_reviewed = models.BooleanField(default=False)
Во время проверки нейронной сетью, запись или удаляется, или поле is_reviewed
принимает значение True
Как показала практика, такое решение было верным. ИИ не делает ошибок.
Искусственный интеллект
90% успеха Gamio Ai зависит от качества нейронного движка, который обслуживает клиентов.
Для задачи генерации текста отлично подходит архитектура GPT-2, которая находится в открытом доступе.
На первое время я решил не обучать ИИ с нуля, а воспользоваться готовыми решениями. Так, я остановился на русскоязычной модели ruGPT3large, обученная Сбером.
Тонкая настройка
"Ванильная" модель не понимала, что от неё требуют. Поэтому в данной ситуации я прибегнул к тонкой настройке.
Объём обучающих данных был 45 мб. Это мало, но достаточно.
> Ты [действие]
[результат]
> Ты [действие]
[результат]
Нейронная сеть просмотрела этот файл 10 раз. Результат меня порадовал.
На данный момент в Gamio используется именно данная модель.
Для удобства, игроку предоставляется полный контроль над историей.
Можно редактировать любой фрагмент текста;
Дополнять текст через нейронную сеть;
И возможность перегенерировать последнее действие;
Что дальше?
Это только начало...
Далее планируется с нуля обучить новую русскоязычную нейронную сеть, которая будет иметь 6 млрд параметров. Обучение должно стартовать к концу июня 2022 года.
Если вы заинтересовались Gamio Ai и хотите следить за его развитием:
Gamio Ai - https://gamio.ru
Телеграм - https://t.me/gamio_n
Вконтакте - https://vk.com/gamio_ru
Дискорд - https://discord.gg/gvJFRz4f7b
Спасибо за прочтение :)
Комментарии (24)
haldagan
15.05.2022 14:07Если я правильно понимаю, то в играх человечий мозг получает дофамин от чувства достижения чего-либо, будь то увеличение цифирей в листе персонажа или прогресс сюжетной линии.
В вашем же случае, насколько я вижу, ни прогресса, ни цифирей, ни системы, против которой можно соревноваться, нет.
Есть ли у вас какие-либо планы развития в эту сторону или проект так и останется песочницей в чистом виде? Или проект из чисто академического интереса?
0x7o Автор
15.05.2022 14:16После создания большой модели, планируется внедрить систему пользовательских переменных, которыми будет управлять ИИ. Но для текущей модели, это не осуществимо.
DrinkFromTheCup
15.05.2022 14:38+1Смотрите шире.
Это Dungeons & Dragons - но без необходимости закупаться рулбуками на $200+, учить правила и искать dungeon master'а, чтобы он тебя поводил.
Если подойти к делу творчески, можно неплохо так торпедировать застоявшуюся сферу традиционных ролёвок... и может даже получить какую-то прибыль.
В этом проекте - есть потенциал.
haldagan
15.05.2022 15:38Я не говорю, что потенциала нет, я говорю, что в текущем виде у проекта будет весьма узкая аудитория, а планы развития не были озвучены.
Это Dungeons & Dragons - но без необходимости закупаться рулбуками на $200+, учить правила и искать dungeon master'а, чтобы он тебя поводил.
Это хорошая финальная цель, но во-первых про это в тексте ни слова, а во-вторых - ДМ в DnD это про Сюжет и Взаимодействие, а рулбуки - это про Систему.
Собственно пока что ИИ не может полноценно заменить ни одну из основных частей. Самое близкое, что может быть достигнуто (ИМХО), это человек описывает игровую систему и прорабатывает сюжет, а ИИ берет на себя взаимодействие с игроком.
Взаимодействие в стиле фристайл без каких-либо правил - это просто диалоги с чат-ботом: потенциально бесконечное времяпрепровождение, однако не сильно увлекательное.
UPD: Это я к тому, что (ИМХО) ИИ сможет научиться проводить DnD-подобные кампании на уровне среднего ДМа по описанию сюжета примерно тогда же, когда ИИ научится писать программы по ТЗ.
RiSilver
16.05.2022 08:13А мне нравится ваша идея с ИИ ГМ-ом :)
На самом деле, если обучить на достаточном количестве фэнтези, возможна генерация различных уникальных приключений.
А если ещё будут голосовой ввод / вывод, музыкальное сопровождение и какая-нибудь визуализация - получится удобно и атмосферно )
peacemakerv
15.05.2022 14:32Со страницы с самой игрой нету ссылки на выход в админку.
При возврате на страницу игры и попытка продолжить диалог - дает только повтор начальной "истории". Продолжить невозможно, ответ сервера всегда одинаков.Hidden text
0x7o Автор
15.05.2022 14:35Используйте или "> Ты" или "> Вы"!
Ничего другого быть не должно
peacemakerv
15.05.2022 14:37На скрине есть и "ты" и "вы". Но ок, спасибо.
0x7o Автор
15.05.2022 14:38они не должны смешиваться. это путает и без того глупый ИИ
peacemakerv
15.05.2022 14:40Но сейчас в любом случае нет выхода из зацикленной ситуации.
Догадайтесь уже наконец, что я просто даю Вам свой опыт для доработок глупого ... хм, интеллекта, т.е. поведения программы.
Если нельзя ничего кроме "ты" или "вы" - значит программа не должна давать писать ничего другого и т.п.
Без доработок вы будете получать только негативные отзывы.0x7o Автор
15.05.2022 14:42Да-да я слишком глуп, чтобы догадаться. Спасибо, что подметили это.
В посте чётко указано: "Планируется обучить ИИ с 6 млрд параметров", я не могу щелчком пальца из глупого и маленького ИИ сделать что-то стоющие. Нужно время. Я просто показываю свои наработки, это ещё не конечный продукт.
GabrielG
15.05.2022 15:10+1Жаль, что пока не играбельно, но забавно.
ainu
15.05.2022 23:03+2Ты находишь несколько газет
Любой мастер НРИ скажет, что так нельзя. Это как "я бью дракона мечом и убиваю его" или "я открываю сундук и вижу корону и плазмоизлучатель". Нельзя даже "я открываю сундук". Можно "я пытаюсь открыть".
GabrielG
16.05.2022 09:56Безусловно, но тут была попытка прощупать, что можно а что нет, и как оно вообще работает. В новом мире Deep dark fantasies я стараюсь более академично подходить в вопросу)
Liikhsanov
16.05.2022 17:39Эх, пытаюсь поиграть, но чет никак - сначала поехала верстка на iPad - не видел, что нужно прокрутить вниз, чтобы ввести действие. А после действия просто не принимаются - отправляю и ничего не происходит(
Попробую еще вечером с ПК)
0x7o Автор
16.05.2022 17:41Вот это да...
Будет здорово, если вы напишите мне на почту с подробностями вашей проблемы :) me@0x7o.link
Tiendil
16.05.2022 18:20+1Если есть желание поиграться с генерацией текста то, на мой взгляд, лучше делать это не с нуля, а взяться за генерацию историй по какому-нибудь рогалику. Например, по Dwarf Fortress. Там у каждого события куча параметров, которые можно легко (алгоритмически) преобразовать в простой "технический" текст, после чего скормить нейронке для перевода в "художественный" текст.
Или, зачем собственно и пишу комментарий, можно попробовать сделать текстовую интеграцию со Сказкой:
исходники: https://github.com/the-tale
сайт: https://the-tale.org/
Игра изначально заточена на генерацию русского художественного текста. Только не нейронками, а шаблонами (которые выбираются по куче параметров). В теории, можно попробовать подменить шаблонизатор на нейронку.
Я (разработчик) по мере сил могу помочь, хотя уже и не занимаюсь активно проектом.
Среди игроков точно найдётся хорошее количество тестировщиков.
peacemakerv
Мдееее
0x7o Автор
Во всех действиях употребляйте "Ты" или "Вы", иначе это сбивает ИИ
peacemakerv
Да пока не заметил большой логики в сгенерированных фразах. Вообще в длинных предложениях с рассуждениями, заключениями, т.е. выводами - галиматья.
0x7o Автор
Ясное дело. Нейронная сеть слишком маленькая. Попробуйте ручками изменить историю, это должно помочь