Конструкторы чат-ботов на помойку. Создаём telegram-бота с квизом на ChatGPT
3 641
22 июля 2024

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

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

Владимир Завертайлов — основатель продукта SingularityApp, автор бестселлера «Настольная книга Project-менеджера». Более 20 лет в тайм-менеджменте и разработке программного обеспечения. В этой статье Владимир делится, создать функционального Telegram-бота с квизом всего за один день. Если понравилась статья — присоединяйтесь к Владимиру в Telegram.

Проблема #

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

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

family4

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

✅ У меня были шаблоны стратегий, домашние задания, описания к модулям. Я попросил 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.

Telegram-бот с квизом

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

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

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

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

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

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

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

Общие выводы #

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

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

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

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

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

Самого бота можно потыкать тут.

reviews4