Сколько раз вы сталкивались с тем, что конструкторы чат-ботов либо платные, либо неудобные, либо вообще мёртвые? Я решил испытать ChatGPT в создании телеграм-бота для нашего проекта, и вот что из этого вышло. Спойлер: результат превзошёл ожидания, но без сюрпризов не обошлось.
Проблема #
Наши ребята из маркетинга пытались сделать чат-бота с полезными материалами к курсу управлению временем: шаблоны стратегий, домашние задания, тесты, которые бы подсказали пользователю, какие косяки есть в его планировании и куда ему расти. Они пробовали различные конструкторы, но всё оказалось либо платным, либо неудобным, либо совсем мёртвым.
Мне задача показалась интересной. Выдался дождливый выходной, и я решил потратить пару часов, чтобы сгенерировать бота. И залип.
Шаблоны и материалы #
✅ У меня были шаблоны стратегий, домашние задания, описания к модулям. Я попросил 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.
Самого бота можно потыкать тут.