Gamio AI - текстовое приключение на русском языке, основанное на искусственном интеллекте.
Как бы пафосно это не звучало, мне удалось создать рабочую версию этой амбициозной идеи
![Основной интерфейс Основной интерфейс](https://habrastorage.org/getpro/habr/upload_files/65e/265/d53/65e265d533dc78f5b1b1cb5d272389f5.png)
Начало всех начал
Не могу назвать себя профессиональным разработчиком, но я имел большой опыт в сфере машинного обучения.
Мне хотелось создать продукт на основе нейронных сетей, который будет понятен и доступен каждому человеку без вникания в эту сложную тему.
Ничего лучше я не придумал, кроме как создать текстовый квест с использованием искусственного интеллекта. Данный формат уже популярен за рубежом.
Так и появилась первая версия Gamio AI.
![Самая ранняя версия Gamio Самая ранняя версия Gamio](https://habrastorage.org/getpro/habr/upload_files/245/f1c/77d/245f1c77d15f956933420c6548fa10e9.png)
В самой первой версии я прибегнул к ресурсам компании Ai21 Labs.
На тот момент у них было две GPT-like модели: одна имела 7 млрд параметров, другая 178 млрд параметров. Они предоставляли возможность бесплатного обучения нейронной сети.
Я собрал CYOA истории и отправил им. Через несколько недель я получил две модели, имеющие 7 млрд параметров (вторая была основана на предыдущей). Все они понимали исключительно английский язык (пришлось использовать переводчик).
![Две обученные модели. Две обученные модели.](https://habrastorage.org/getpro/habr/upload_files/f53/a18/8cb/f53a188cb600bd286fc359a47467b611.png)
Из этого всего вытекли целых две крупных проблемы.
Ужасное, просто ужасающие качество полученной модели. (Кто в этом виноват - не ясно)
Огромная цена на обслуживание такой модели. Если каждый день 100 человек будут играть в Gamio, то мне бы понадобилось 70 000 руб/месяц на поддержание работоспособности проекта.
С таким настроем проект проработал два дня.
![Образец раннего ИИ Образец раннего ИИ](https://habrastorage.org/getpro/habr/upload_files/228/37a/057/22837a057b874b09aeb6dc69250be2fc.png)
Возрождение проекта
После нескольких месяцев скурпулёзного изучения всех доступных средств реализации, я решил несмотря ни на что довести проект до ума.
Разработка сайта
В первую очередь я начал проектирование самого сервиса, потому что был уверен в качестве планируемого искусственного интеллекта.
Мне был удобен язык Python, поэтому использование открытого фреймворка Django - было правильным решением.
![Главная страница Gamio Главная страница Gamio](https://habrastorage.org/getpro/habr/upload_files/2ed/84a/791/2ed84a7912f9cae682534dc7efc35a68.png)
Сайт было решено оформить в простом, тёмном стиле. Никаких проблем с созданием дизайна не возникло.
Для реализации всех своих творческих идей, я использовал WebFlow.
Капча
Не хотелось иметь ботов на своём сайте. Использование стандартных reCAPTCHA или hCAPTCHA меня не устраивало. Их можно легко обойти.
Поэтому я решил изобрести велосипед под названием fiCAPTCHA. Это самостоятельный модуль для Python, который генерирует изображение, на котором нужно найти определённый объект.
![Пример сгенерированной капчи Пример сгенерированной капчи](https://habrastorage.org/getpro/habr/upload_files/2ad/c11/450/2adc1145006a9271a92c13e78e9a928c.png)
Может это банально, но боту её точно не пройти.
Вот таким кодом идёт определение координат клика и дальнейшей проверки. Истинные координаты хранятся на серверной стороне.
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
Как показала практика, такое решение было верным. ИИ не делает ошибок.
![](https://habrastorage.org/getpro/habr/upload_files/f5f/542/de2/f5f542de2ccd5092a4fd951ecafc924b.png)
Искусственный интеллект
90% успеха Gamio Ai зависит от качества нейронного движка, который обслуживает клиентов.
Для задачи генерации текста отлично подходит архитектура GPT-2, которая находится в открытом доступе.
На первое время я решил не обучать ИИ с нуля, а воспользоваться готовыми решениями. Так, я остановился на русскоязычной модели ruGPT3large, обученная Сбером.
Тонкая настройка
"Ванильная" модель не понимала, что от неё требуют. Поэтому в данной ситуации я прибегнул к тонкой настройке.
![График потерь во время обучения График потерь во время обучения](https://habrastorage.org/getpro/habr/upload_files/4dd/f97/bb6/4ddf97bb6009a0fe21e0598b2d9a0f4f.png)
Объём обучающих данных был 45 мб. Это мало, но достаточно.
> Ты [действие]
[результат]
> Ты [действие]
[результат]
Нейронная сеть просмотрела этот файл 10 раз. Результат меня порадовал.
На данный момент в Gamio используется именно данная модель.
![Образец игры Образец игры](https://habrastorage.org/getpro/habr/upload_files/dce/b9e/cc7/dceb9ecc74bb6ef3d0372b6573f75c64.png)
Для удобства, игроку предоставляется полный контроль над историей.
Можно редактировать любой фрагмент текста;
![Редактирование истории Редактирование истории](https://habrastorage.org/getpro/habr/upload_files/3ac/cb4/3ec/3accb43eca10d390983fc808271be37b.png)
Дополнять текст через нейронную сеть;
![Дополнение ИИ Дополнение ИИ](https://habrastorage.org/getpro/habr/upload_files/838/fb5/5b9/838fb55b911aaa55d2d9db9139d51c91.png)
И возможность перегенерировать последнее действие;
![](https://habrastorage.org/getpro/habr/upload_files/be6/4d6/421/be64d6421bf6c669ddcc91f768c6e911.png)
Что дальше?
Это только начало...
Далее планируется с нуля обучить новую русскоязычную нейронную сеть, которая будет иметь 6 млрд параметров. Обучение должно стартовать к концу июня 2022 года.
Если вы заинтересовались Gamio Ai и хотите следить за его развитием:
Gamio Ai - https://gamio.ru
Телеграм - https://t.me/gamio_n
Вконтакте - https://vk.com/gamio_ru
Дискорд - https://discord.gg/gvJFRz4f7b
Спасибо за прочтение :)