Как мы делали ChatGPT-бота на 33,000 пользователей

Мой коллега и я создали бота ChatGPT для Telegram, который оказывал поддержку в рабочих обсуждениях и развлекал нас. Бот разработан на языке TypeScript с использованием великолепного фреймворка Grammy, а также API Open AI, в частности, модели gpt3.5-turbo, применяемой в оригинальном ChatGPT.

Telegram-бот ChatGPT
Telegram-бот ChatGPT

Кратко о боте

Этот бот функционирует как простой посредник между Telegram и ChatGPT. Он умеет запоминать предшествующие сообщения в чате, используя их для контекста следующего запроса. Также бот адаптирован для работы в групповых чатах. В этих группах активирован режим конфиденциальности, поэтому бот реагирует только на сообщения, содержащие специальную команду /ask.

Бот поддерживает групповые чаты
Бот поддерживает групповые чаты

Мы расширили функциональность бота, добавив возможность отправлять ему ссылки на любые сайты, статьи или даже YouTube-видео и задавать вопросы, на которые он ответит, интегрировав в ответ субтитры или контент сайта, получаемый через Puppeteer. Однако мы сталкиваемся с ограничением контекста в 4096 токенов модели GPT-3.5. В качестве решения мы использовали npm-пакет ts-textrank, который помог нам сократить текст до необходимой длины, сохраняя при этом максимум информации.

Бот умеет смотреть видео на YouTube
Бот умеет смотреть видео на YouTube

Мы интегрировали функцию распознавания голоса с помощью Google Cloud Speech API, однако планируем переход на более продвинутую модель Whisper от Open AI. Эту модель можно установить и запустить даже на домашнем GPU, исходный код доступен на GitHub. Самая мощная версия модели, поддерживающая все языки, требует около 10 GB видеопамяти.
Также мы занимаемся синтезом речи. В 2024 году это можно сделать очень просто, установив нужный npm-пакет и вызвав один метод. Мы рассматриваем возможность использования Yandex Speech Kit для генерации русской речи, так как он предоставляет более высокое качество по сравнению с Google Cloud Text To Speech API.
В итоге наш бот значительно превосходит таких голосовых помощников, как Siri и Алиса от Яндекса, предоставляя обширные знания всего лишь с помощью нескольких строк кода и трех npm пакетов!

Бот может общаться голосом
Бот может общаться голосом

В определённый момент мы обучили бота создавать изображения по текстовым описаниям с помощью DALL·E. Основной трудностью является то, что этот API работает только на английском языке. Однако это не проблема, так как мы можем использовать GPT для перевода инструкций с русского на английский и передачи их DALL·E. Возможности GPT действительно неограниченны, и трудно представить, что нас ждёт в будущем.

DALL·E рисует котов и собак
DALL·E рисует котов и собак

В ходе разработки мы внедрили множество новшеств. К примеру, мы добавили возможность настройки креативности ответов бота, создали набор готовых инструкций, определяющих роль бота в чате, такие как Copilot, интервьювер или генератор бизнес-идей, и многое другое. Пользователи также могут самостоятельно создавать подобные инструкции, используя команду /prompt.

Deploy в production

Когда мы заметили, что наш бот стал популярен среди коллег и их знакомых, мы решили монетизировать проект и начали подготовку к запуску:
- Разработали и верстали привлекательный лендинг - gptask.io
- Интегрировали системы для приема рекуррентных платежей.
- Развернули всю инфраструктуру в Google Cloud, используя только Cloud Functions, Cloud Pub/Sub, Cloud SQL и Cloud Redis.
- Настроили CI/CD с помощью GitHub Actions.
- Подготовили бота к высоким нагрузкам, следуя Deployment Checklist от Grammy. Особое внимание уделили использованию вебхуков вместо long-polling, настройке ratelimiter для предотвращения спама и хранению сессий в Redis.
- Имплементировали Sentry для мониторинга ошибок в реальном времени.
- Создали дашборд в Grafana для отслеживания ключевых показателей, таких как количество запросов к Open AI API, их статусы, время ответа и прочее.
- Добавили поддержку английского языка.
- Ввели несколько платных тарифов с различными лимитами и функционалом.
- Увеличили лимиты биллинга в Open AI до $3200 в месяц.
В итоге мы получили надежную, минималистичную, предсказуемую, масштабируемую и относительно недорогую инфраструктуру (пока что использование Google Cloud бесплатно благодаря начальному кредиту в $300 для новых аккаунтов).

Реклама

В первые дни после запуска мы привлекли около 5000 пользователей, разместив рекламу в нескольких Telegram-каналах и настроив таргетированную рекламу в Яндексе. Бот пользовался огромным спросом среди пользователей, многие из которых стали ежедневно использовать подписку.
Через неделю мы разместили рекламу в популярном Telegram-канале с 3.7 миллионами подписчиков и примерно 800 тысячами просмотров на пост, что привело к привлечению дополнительных 33000 пользователей.

99
9 комментариев

Сделайте хотя бы Custom GPT или обработку PDF

1

Это в планах, будем делать

А по каким критериям выбрали для приёма платежей cloudpayments?
Для подключения stripe компанию в Латвии открывали?

С платежками получилась очень интересная история, в топе интернет эквайрингов Тинькофф, Сбер и Яндекс. Нам были интересны только рекуррентные платежи, для удобства пользователей. Но когда мы изучили все api, пришли к выводу, что мы должны будем сами управлять подписками пользователей. В то время как у cloudpayments как у страйпа, очень удобно. Юзеры сами могут управлять своей подпиской у них есть для этого специальная страница. В добавок у тинькофф кассы надо еще IP юзера передавать, а через телеграм его не узнать, поэтому нужно будет пилить костыль в виде страницы, на которую мы юзера посылаем, там узнаем его IP и потом уже делаем редирект на тинькофф.

1

Прикольно!
А мы в процессе разработки вот такого: neyro.adviz.pro

у кого есть Турецкий app store рекомендую приложение genie, там годовая подписка на chatgpt 4 стоит 130 лир