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
Спасибо за прочтение :)
Автор: Данил