Конструкторы чат-ботов на помойку. Создаём telegram-бота с квизом на ChatGPT

Генерируем телеграм-бота через ChatGPT
Генерируем телеграм-бота через ChatGPT

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

Меня зовут Владимир Завертайлов, я основатель SingularityApp. По образованию — инженер-программист. Программирование воспринимаю как хобби, хотя хорошо знаю TypeScript.

Проблема

Наши ребята из маркетинга пытались сделать чат-бота с полезными материалами к курсу управлению временем: шаблоны стратегий, домашние задания, тесты, которые бы подсказали пользователю, какие косяки есть в его планировании и куда ему расти. Они пробовали различные конструкторы, но всё оказалось либо платным, либо неудобным, либо совсем мёртвым.

Мне задача показалась интересной. Выдался дождливый выходной, и я решил потратить пару часов, чтобы сгенерировать бота. И залип.

Шаблоны и материалы

✅ У меня были шаблоны стратегий, домашние задания, описания к модулям. Я попросил ChatGPT на их основе генерировать JSON с материалами и полезными ссылками по каждому модулю. Тут он справился отлично. Далее попросил сделать небольшого телеграм-бота, который отдает полезные материалы по выбранному уроку. Тут ChatGPT справился чуть хуже, но примерно за 10 минут у меня на руках уже был рабочий бот.

Краткие описания персон и рекомендации

✅ У меня были маркетинговые материалы с описанием каждой из персон. Я скормил их ChatGPT и попросил сделать более краткие описания персон и рекомендации для каждой из них. С этой задачей бот справился отлично.

Список вопросов для теста

✅ Далее я попросил ChatGPT сгенерировать список вопросов для определения типа пользователя. Потребовалось несколько итераций, но в целом результат меня устроил.

Форматирование данных и заготовка бота

✅ Я попросил ChatGPT перегнать описания персон и вопросы в JSON-формат и сделать заготовку бота. В целом он справился, но потребовалось 5-6 итераций, прежде чем на экране начали появляться вопросы и описания персон. Возня с этим заняла чуть больше 40 минут.

Обработка весов и функция оценки

😡 Самое сложное было настроить, чтобы бот показывал, какой персоне соответствует человек, в результате ответов на тест. Вроде бы классическая задача расстановки весов, но у меня было 13 вопросов, по 5-7 вариантов ответов и 9 персон. Получилась трехмерная матрица весов, которую я решил сохранить в JSON.

Я долго сражался с ChatGPT, пока не понял, что эта задача ему не по силам: ChatGPT начал галлюцинировать, прописывал веса случайным образом, либо вообще забывал формат данных. Пришлось проделывать задачу по шагам для каждого вопроса и сохранять сгенерированный JSON в файл отдельно.

Затем я попросил ChatGPT написать скрипт на Python, который бы валидировал полученный JSON. После пары итераций скрипт заработал. Вся возня с весами заняла чуть больше 3 часов.

✅ Я попросил ChatGPT сделать на основе моих JSON-файлов сам тест и функцию расчета итогового веса. А также проанализировать, насколько пользователь подходит той или иной персоне (в процентах). Понятно, что тест — шуточный, мне было просто интересно — справится ли ChatGPT с этой задачей. С этим он справился почти хорошо. Раз за 3-4 мы исправили все ошибки и тест заработал прямо в Telegram.

Рефакторинг и модульность

✅ ChatGPT генерировал код в функциональном стиле, причём в духе ES6. И всё в один файл. Меня это не устраивало. Мне уже хотелось модульности и объектно-ориентированного подхода. С перегенерацией бота на классовый подход ChatGPT справился хорошо.

😡 Однако с модульностью возникли проблемы. ChatGPT не годится для работы с кодом в нескольких файлах. Теряет контекст, связанность и допускает множество ошибок. Мне пришлось переделать индексный файл бота и дальше рефакторить каждый модуль отдельно. Тут ChatGPT проявил себя как сообразительный джун, но не более. Много возни оказалось с кнопкой “Назад”: ChatGPT никак не мог заставить её корректно работать между модулями. Но через пару часов я заставил его сделать код, который меня устраивал.

Добавление мультимедийных элементов

✅ Добавление картинок, закрепление кнопок, генерация обложки бота. С этими задачами проблем не возникло.

Курьезы и доработки

😡 После деплоя бота я решил протестировать его на небольшой лояльной группе людей. Добавил бота в группу, а затем удалил. Бот зациклился из-за некорректной обработки ошибок. Пришлось поправить руками. Это единственное место в коде, которое исправлял человек. Но я не уверен, что бот не ляжет под нагрузкой. Его на это никто не проверял)

Общие выводы

Итак, если у вас есть желание и немного усидчивости, вы сможете создать полезного телеграм-бота с помощью ChatGPT за один рабочий день.

ChatGPT вполне подходит для генерации простых ботов. Однако требует упорства, ума и хитрости. На текущий момент всё не очень хорошо с работой в нескольких файлах, особенно если нужен связанный рефакторинг. Качество кода — на уровне сильного джуна. Маркетинг вряд ли сможет сгенерировать бота самостоятельно (только если уж совсем простого). Но уже сейчас спокойно можно получить бота с полезным функционалом.

Думаю, эти косяки поправят в следующих релизах. Какого-то специального “промпт-инжиниринга” изучать не нужно. Это просто попытка заткнуть текущие косяки, которые однозначно поправят в следующих релизах.

Примерные затраты времени: 9 часов.

Если остались вопросы — пишите в комментарии. Или добавляйтесь в Telegram.

1010
Начать дискуссию