С появлением нейросетей, я смог реализовать свою небольшую мечту, а именно написать нагенерировать свою собственную программу, а точнее игру-викторину - Human vs AI Которая не только запускается и работает, но и люди в нее играют.

Дисклеймер: Весь текст ниже – это скорее эмоции мужика от новой игрушки, которая работает. Прошу относиться к этому тексту несерьезно и с иронией, т.к. он написан ни разу не программистом.

Очень коротко обо мне: По образованию я инженер ТГВ, нигде не учился программированию, мои познания в IT - это переустановить Windows XP соседке, редактор карт War3 и Her3 и немного знаю, как работает xml формат (когда-то хотел запускать свой ИМ), ну да, еще смотрел на YouTube "Пайтон за 30 минут", "Нейросети за 1 час", "Рельефный пресс за 1 неделю".

К сути. Любим мы с женой в обнимку поиграть в головоломки и всякого рода викторины. И однажды пришла мысль, а почему бы мне не сделать самому такую игру на базе бота ТГ, где вопросы будут сгенерированы нейросетями. Про вайбкодинг я и раньше слышал, но никогда не пытался с ИИ поговорить о кодинге.

Вдохновленный своей гениальной идеей, я ринулся сразу же реализовывать проект. Установил Питон (с 1 раза), установил VSC (не с 1 раза), попросил ChatGPT сгенерировать программу и сразу обосрался получил опыт, когда дело дошло до виртуального окружения и установки зависимостей. Изучив, что такое venv, я таки смог запустить бота, вопросы генерировались напрямую через API OpenAI, т.е. бот направлял запрос к API с промтом, ИИ генерировал вопрос, скрипт распарсивал вопрос и направлял его в ТГ пользователю. На все про все уходило минимум 30 секунд, а то и больше. Задержка меня явно не устраивала, но я получил важный инсайт:

Первый инсайт: Это работает! При помощи ИИ можно писать программы! Может, я когда-ни будь напишу свою GTA 6?

Что я зря учился 5 лет на инженера? Мозг начал думать и придумал, а давай просто заранее нагенерируем много вопросов и будем их направлять пользователю? А давай. Поздравляю, гениально! Снова ощущаю вдохновение, хвалю себя за то, что нашел новое решение проблемы, пока мне ChatGPT не говорит: давай вопросы хранить в json формате! Что? Что такое json? А нельзя их в txt завернуть? (хотя вот сейчас понимаю, что в целом можно и в txt было, но это было бы какое-то извращение). В общем, принялся за изучение json, оказалось, что все просто. Хотя, все всегда просто, когда ты уже ⬇ шаришь в теме ⬇

ChatGPT предъявляет мне, что я не знаю, что такое json
ChatGPT предъявляет мне, что я не знаю, что такое json

Тут для меня открылся еще один инсайт. Во время учебы, всегда напрягало, что я не могу у учебника спросить что-то, что мне было не до конца понятным. Даже гуглеж не всегда давал точного разбора интересующего меня вопроса, а сейчас тебе достаточно спросить у ИИ, что такое json? И ИИ тебе разъяснит все и разжует, а если ты что-то не понял, то ты можешь у него уточнить и еще раз спросить. Эх, мне бы такую технологию в 2010 году…

Второй инсайт: ИИ может быть отличным учителем в новой области, но, наверное, до определенного уровня экспертности!

Изучил я json ровно в том объеме, чтобы понимать его структуру и предназначение массивов и ключей. И начался процесс генерации вопросов, 0, 1, 2, 3, 5, 8, 13, 21, 34, 55 вопросов, СТОП! Рассматриваю под лупой, что там нагенерировал ИИ и, в целом, результат неплохой. Вопросы достаточно интересные и разнообразные. Запускаю снова скрипт, генерируются вопросы и тут я понимаю, что много дублей не только символьных, но и смысловых.

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

Но тут снова возникла проблема, запуская скрипт каждый раз (1 итерация), ИИ как будто генерирует вопросы по одним и тем же шаблонам и по какому-то заранее сформированному неоговоренному порядку, как будто бы то, что ближе в памяти по расстоянию к ключевым вопросам, он и выдает первым. Например: Ты даешь тему: Кино СССР, а он генерирует одни и те же вопросы на эту тему, но с разными формулировками, но опять же не всегда. Может, кто-то объяснит мне, почему генерируются одни и те же вопросы? При этом у GigaChat с этим вообще беда. Было потрачено 2 000 000 токенов, уникальных вопросов сгенерировал всего 700 шт, потратил 3900 рублей. Где-то я явно что-то делаю не так.

Пожаловался ЧатуГПТ на ЧатГПТ обо всём этом, и ЧатГПТ предложил встроить систему проверок вопросов.

Первоначальная проверка, цитата от ИИ:

  • Поддерживает кэш существующих вопросов, загруженных из выходных файлов.

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

Вторая проверка - смысловая:
Скармливаю нейронке на локальной машине вопросы, она сравнивает каждый новый вопрос с эталонной базой вопросов, если вопрос новый, то он добавляется в общую базу вопросов.

Вот так и получилось, что ИИ написал скрипт, по которому ИИ проверяет вопросы сгенерированные ИИ.

Все это время мне генерировал код ChatGPT, но в один момент он начал не справляться со своей задачей. Я решил добавить в вопросы уровни сложности, четко обозначив критерии (их можно посмотреть внутри кода) для каждого из уровней сложности. Получилась следующая формула: N кол-во тем * 3 уровня сложности * n итераций. И почему-то ChatGPT никак не мог сгенерировать рабочий код для такого рода формулы. Положив руку на сердце, сообщаю: В тот момент все было как в тумане, мозг был увлечен новыми знаниями, эйфория нахлынула, серотонин распирал черепную коробку и мыслей, что я буду писать когда-то этот текст для Хабра не было. Я не фиксировал, в чем конкретно была проблема и почему было все криво. В какой-то момент я просто плюнул на ChatGPT и закинул код с задачей в DeepSeek, он мне выдал полностью код, скопировал его в файл и у меня заработало все сразу и как надо. Так я перешел на работу с ChatGPT на DeepSeek.

После перехода на DS, разработка стала дольше, но более качественной. Код правился и генерировался, чаще всего рабочий, но в разы дольше и иногда нейронка забывала закрывать код скобками, что в целом для меня было полезным опытом. А еще DS чертов лентяй! Я хочу ctrl-A копи ctrl-A паст, а он мне функции только переписывает и говорит куда их вставить, а это уже ctrl-F функции, глазками все нормально вставить, скобочки проверить и отступы настроить. Не царское это дело! Но, что бесило больше всего, так это: The server is busy. Please try again later. Иногда доходило до 20 повторений запросов. В итоге, я смог получить полноценный код, который работал и, главное, выдавал результат, который меня устраивал.

Далее работа пошла над адаптацией кода под разные API. Сейчас по прошествии достаточного кол-ва времени, у меня в базе более 8000 вопросов от 4 разных ИИ, а именно: ChatGPT, DeepSeek, GigaChat и Yandex-GPT. Код генератора вопросов для работы с DeepSeek я выложил на github в публичный доступ.


Еще два инсайта:
Я сначала возненавидел linux, а теперь с каждым днем наша с ним любовь крепчает. Пока еще ненавижу nano, и мне кажется, это взаимно.

Я начал понимать чуть-чуть ITшный юмор.

Комментарии (0)