Не секрет, что ChatGPT это очень эффективный инструмент, который помогает как в обычной жизни, например, чтобы узнать рецепт борща, так и в профессиональной сфере: от копирайтеров и инста‑блоггеров до программистов. Вместе с тем, аналогов ChatGPT не так много, а её доступность в России ограничена. Более того, подписка на ChatGPT Plus и вовсе платная, стоит, кстати, довольно ощутимых денег (20$ в месяц ~ 2000 рублей). Plus-подписка обещает нам доступ к GPT-4, ускоренные ответы и доступ к плагинам, так стоит ли переплачивать? Я и мои коллеги подумали, что нет и сделали свою ChatGPT Plus.

То, как мы с коллегами видим план ChatGPT Plus
То, как мы с коллегами видим план ChatGPT Plus

Вводная

Начнём с того, что у нас уже был аккаунт OpenAI с возможностью оплачивать приходящие счета. Также, некоторое время назад мы зарегистрировались в листе ожидания GPT-4 и успешно получили доступ. Более того, у нас в запасе был небольшой сервер, где можно бы было развернуть всё это дело, чтобы доступ был не только у одного человека, а у всего коллектива. Задача стояла следующим образом: сделать ChatGPT максимально доступным в использовании для повседневных нужд завернув его в Telegram бота, добавить менеджмент баланса токенов для того, чтобы люди, находящие бота, не пользовались им безлимитно а мы за это платили, внедрить "нестандартные" функции: распознавание голоса, чтение PDF-файлов, просмотр видео на YouTube. Давайте начнём наш обзор по порядку.

Архитектура ChatGPT бота в Телеграм

Архитектура нашего проекта проста до безобразия, она состоит из клиента (Telegram Bot), серверной части (отвечает за управление балансом), и БД, в которой хранится информация о пользователе и кол-ве токенов, которое он может использовать. К сожалению или к счастью, основная логика бота написана в клиентской части (например, он же общается с OpenAI API) т.к. мы не видели смысла переносить это куда-либо ещё, да и делалось всё для себя. Ниже на картинке приводим примерную схему архитектуры нашего бота.

Архитектура нашего ChatGPT Plus
Архитектура нашего ChatGPT Plus

Клиент и сервер написаны на Python. Клиент использует библиотеку python-telegram-bot для имплементации бота. Сервер использует FastAPI. И клиент и сервер крутятся в Docker и разворачиваются с помощью Gitlab CI/CD.

Коммуникация с OpenAI производится посредством их библиотеки. Распознавание речи для голосовых сообщений работает на основе модели Whisper. Для "просмотра" видео на YouTube мы вытягиваем название, описание, и субтитры (если есть). Для чтения PDF мы просто конвертируем его в текст.

В целом, разработать такого рода приложение не составляет труда. Но, как известно, по правилу Парето: 70% всего кода, мы разрабатывали 30% от времени. Оставшися 70% времени мы потратили на исправление мелких "косяков", которые входят в те пресловутые 30% кода.

Пример использования: GPT-3.5 vs GPT-4

Давайте сравним, как GPT-3.5 и GPT-4 справятся с задачей написания функции вычисления факториала на Python и её объяснением. Для этого напишем такой промпт: Напиши функцию факториала на питоне и объясни её (кратко).

Сравнение моделей на задаче написания функции факториала
Сравнение моделей на задаче написания функции факториала

Очевидно что обе эти имплементации имеют место быть. К слову сказать, GPT-3.5 при ответе на этот промпт тоже иногда использует рекурсивный подход. Также, заметно, что GPT-4 лучше структурирует свой ответ, однако, это довольно таки простая задача для такого сравнения.

Пример использования: просмотр YouTube

Что если вам лень смотреть всё видео целиком, а хочется узнать только самые ключевые моменты из него? В этом вам поможет функция просмотра YouTube. Давайте проверим как она работает на простом примере: мы зададим специфический вопрос к видео и посмотрим, что ответит модель.

Пример того, как бот смотрит YouTube
Пример того, как бот смотрит YouTube

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

Пример использования: голосовые сообщения

Как-то раз я решил спросить у нашего бота, как перевести слово "не прорезавшийся (зуб)" на немецкий. Вот результат.

Коммуникация с ботом голосовым вводом
Коммуникация с ботом голосовым вводом

За точность перевода ручаться не могу, но моё намерение было распознано правильно, а по сему, расцениваю это как положительный пример.

Пример использования: чтение PDF

Иногда, чтение документов надоедает. А что если отправить пресловутую PDF-ку ChatGPT боту? В этом примере я отправил боту своё резюме и спросил, какими языками программирования я владею.

Пример функции чтения PDF
Пример функции чтения PDF

Бот, в целом, ответил правильно. Но я бы исключил SPARQL и SQL, так как это языки запросов.

Итоги

Данным ботом, написанным нами, я пользуюсь каждый день. В основном он решает мои рутинные технические задачи, которые мне лень "гуглить" (напр. поменять конфиг файл для nginx). В быту, бот помогает разрешать мелкие споры, например, как переводится то или иное слово. Однако, нужно подходить с опаской к вопросам, касающимся фактологических данных (даты, события, здоровье, и т.д.), желательно приводить источник инофрмации как контекст.

Присылайте в комментарии свои примеры взаимодействия с ботом, ссылка тут: https://t.me/gpt_rubq_bot. Будем рады обратной связи.

PS. Если кто-то хочет создать себе аккаунт OpenAI, советую пользоваться этим гайдом. VPN для смены локации тут.

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


  1. nyando
    21.09.2023 08:59

    А есть возможность в боте подключить плагин?


    1. perevalov_a Автор
      21.09.2023 08:59

      Нет, бот предоставляется "AS-IS"


    1. janvarev
      21.09.2023 08:59
      -2

      Извиняюсь, но если интересно - я вчера публиковал статью про российский сервис к доступу к GPT-сетям через OpenAI API - может ваш плагин с ним можно будет интегрировать https://habr.com/ru/articles/762248/


  1. qertis
    21.09.2023 08:59

    Интересный опыт. Можно подробнее как происходит обработка PDF? Идет обработка только текста, а если в PDF изображение?


    1. perevalov_a Автор
      21.09.2023 08:59
      +1

      Пока изображения не обрабатываем, только текст. Думаю в будующем подключим OCR туда


  1. janvarev
    21.09.2023 08:59

    Коллеги, а можно как-то уточнить - в статье написано GPT-4, в боте вижу:

    Во-вторых, - указывайте, пожалуйста, что бот платный (свыше 10 запросов), и сколько будут стоить запросы. Для интересующихся прикладываю:


    1. perevalov_a Автор
      21.09.2023 08:59

      смотрите список команд в боте (/changemodel). Про платное использование у нас написано: "добавить менеджмент баланса токенов для того, чтобы люди, находящие бота, не пользовались им безлимитно"


  1. theurus
    21.09.2023 08:59
    +1

    Если вдруг кто то захочет своего бота с примерно таким же функционалом на гитхабе есть https://github.com/theurs/tb1

    Ему тоже можно посылать файлы (и ссылки) для сумморизации или работы с загруженными документами, делается это через claude ai (контекст до 100т символов). Можно отправить боту документы pdf, docx, xlsx и др. и давать задания по ним, есть OCR, голосовое управление.

    Работает всё это так себе, примерно так же как гпт решает нетривиальные задачки клауд работает с файлами, даешь ему таблицу с людьми, попросишь показать 5 самых молодых и... прекращаешь страдать такой ерундой.

    Ключи для гпт продаются на каждом углу за копейки, и можно использовать бесплатно клауда и барда.