Снова Алиас и немного про нейрокодинг
Если вы помните, некоторое время я писал о том, что решил запилить свою веб-версию игры "Алиас" при помощи нейросетей. После предыдущего поста, я доработал игру: добавил функционал присоединения по ссылке, возможность изменять ник в игровой комнате и зрителей как тип участников, сделал возможность менять настройки игры, после окончания сессии её можно перезапустить, ну и, конечно же, пополнил словарь слов (сейчас в нём более 1000 слов). В настоящий момент я не добавил динамические команды (больше двух), так как для этого придётся серьёзно переписывать всю логику игры и не настроил правильную передачу лидерства внутри команды. Однако, эксперимент, могу точно сказать, удался: я успешно создал вполне работающую игру с расширенным функционалом практически полностью полагаясь на нейросети. Да, конечно же, я принимал решения по логике игры и её архитектуре, давал комментарии относительно принимаемых ИИ решений (если видел, что он делает не то, что мне надо) и где-то даже вручную подправлял небольшие детали кода, но в целом это "нейроигра" и "нейрокод".
Сегодня, помимо хвастовства, я бы хотел поделиться с вами своим небольшим опытом. Я считаю, что программирование с помощью ИИ - это уже вполне обыденная реальность. Он гораздо лучше разбирает код, чем человек (по крайней мере, человек с такими навыками, как у меня), знает множество методов решения проблемы от примитивного говнокода (если сам об этом попросишь) до довольно технологичных решений. Как я писал в прошлый раз, знание кода всё же сильно приветствуется - просто для того, чтобы понимать что тебе предлагает нейросеть, особенно если ты вносишь какие-то правки с её помощью, но виртуозно владеть кодингом уже не нужно.
Теперь относительно доступных решений. Я уже ссылался на такой инструмент, как openrouter.ai - интерфейс, позволяющий работать сразу с несколькими ИИ, однако в последнее время я не очень им доволен. Появились ошибки, связанные с историей общения (периодически ИИ перестаёт понимать ход действий и начинает как бы с нуля), некоторые нейросети оказываются недоступными, хотя работают в их родном интерфейсе и т.п. В общем, пришлось временно от него отказаться и перейти к Qwen. Он показался мне более надёжным, чем DeepSeek - меньше ошибается, стабильнее работает. В его интерфейсе есть один неприятный недостаток: для вопроса нельзя загружать файлы, отличные от txt. То есть, все файлы js, php, sql приходится предварительно переименовывать. Openrouter мне в своё время понравился ещё и тем, что в нём такой проблемы нет. Бесплатная версия Qwen обрабатывает довольно большой (для моих задач) объём информации, хотя и в рамках кодинга отвечает с ощутимой задержкой. Также мне нравится Grok, но он без VPN недоступен, а сам VPN я могу подключить далеко не всегда.
Как именно общаться с нейросетью? На самом деле, вопрос без точного ответа. ИИ хорошо понимает семантику запроса, умеет оперировать синонимами и образами. Например, у меня есть иконка короны для отображения статуса лидера - это текстовый символ, но если я называю его "короной", Qwen понимает о чём речь. Если вместо "лидер" (от leader в коде) я напишу "ведущий", она также распознает какую роль я имею в виду. В то же время, нужно очень аккуратно строить запрос: если пытаться разжёвывать сети задачу как человеку, ты скорее запутаешь её, но в то же время примеры логики могут оказаться полезными.
Важный момент: при появлении ошибок, ты можешь описать ему эти ошибки простым языком - что не так в твоём понимании. Да, это не отменяет необходимости скидывать логи, ошибки из консоли, иногда сильно помогает указание на статусы в базе данных - всё это нужно ИИ также, как и человеку-программисту для лучшего понимания ситуации. Также возможна ситуация, когда нейросеть заходит в тупик и не может решить задачу, гоняя один код по кругу - особенно этим раньше страдала DeepSeek. В таком случае приходится самому принимать решение: просить добавить дополнительную отладку, внимательно следить за исполнением логики кода и т.п. И ещё одно наблюдение: утром, часов до 12 по МСК нейросети загружены заметно меньше, потом, видимо, просыпаются китайцы и время ответа сильно увеличивается.
И тут вы, наверное, спросите: неужто всё так идеально? На самом деле, нет. Помните, я написал, что так и не победил проблему с передачей лидерства? Над ней мы с ИИ трудимся уже несколько дней и я так и не могу добиться получения корректного работающего кода. Отчасти это связано с особенностями архитектуры кода - как раз в силу того, что я хотел получить более-менее понятные самому себе скрипты. Отчасти с тем, что это решение требует достаточно комплексной правки, которую за раз нейросеть осилить не может, а при нескольких итерациях она начинает путаться и вся игра в итоге ломается.
Если бы я занимался таким своеобразным кодингом более плотно, то, конечно же, взял бы платную версию - для неё меньше время ожидания в очереди, больше объём запроса и ответа, в некоторых случаях более актуальные базы. Вероятно, и баг с лидерами я бы тогда уже решил. Однако простые задачи можно решать и так. Это довольно интересное занятие, к тому же какой-никакой опыт я всё же получаю даже при таком подходе, ведь у сети всегда можно попросить объяснить конкретное решение.
P.S. Кстати, смену лидеров починил в итоге, так что игра вполне рабочая на данный момент.
а не вот то, что надо. я оттягиваю момент выноса рисунка на об...