Не секрет, что ChatGPT это очень эффективный инструмент, который помогает как в обычной жизни, например, чтобы узнать рецепт борща, так и в профессиональной сфере: от копирайтеров и инста‑блоггеров до программистов. Вместе с тем, аналогов ChatGPT не так много, а её доступность в России ограничена. Более того, подписка на ChatGPT Plus и вовсе платная, стоит, кстати, довольно ощутимых денег (20$ в месяц ~ 2000 рублей). Plus-подписка обещает нам доступ к GPT-4, ускоренные ответы и доступ к плагинам, так стоит ли переплачивать? Я и мои коллеги подумали, что нет и сделали свою ChatGPT Plus.
Вводная
Начнём с того, что у нас уже был аккаунт OpenAI с возможностью оплачивать приходящие счета. Также, некоторое время назад мы зарегистрировались в листе ожидания GPT-4 и успешно получили доступ. Более того, у нас в запасе был небольшой сервер, где можно бы было развернуть всё это дело, чтобы доступ был не только у одного человека, а у всего коллектива. Задача стояла следующим образом: сделать ChatGPT максимально доступным в использовании для повседневных нужд завернув его в Telegram бота, добавить менеджмент баланса токенов для того, чтобы люди, находящие бота, не пользовались им безлимитно а мы за это платили, внедрить "нестандартные" функции: распознавание голоса, чтение PDF-файлов, просмотр видео на YouTube. Давайте начнём наш обзор по порядку.
Архитектура ChatGPT бота в Телеграм
Архитектура нашего проекта проста до безобразия, она состоит из клиента (Telegram Bot), серверной части (отвечает за управление балансом), и БД, в которой хранится информация о пользователе и кол-ве токенов, которое он может использовать. К сожалению или к счастью, основная логика бота написана в клиентской части (например, он же общается с OpenAI API) т.к. мы не видели смысла переносить это куда-либо ещё, да и делалось всё для себя. Ниже на картинке приводим примерную схему архитектуры нашего бота.
Клиент и сервер написаны на 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. Давайте проверим как она работает на простом примере: мы зададим специфический вопрос к видео и посмотрим, что ответит модель.
Данный пример показывает, что бот на основе ChatGPT реально может сэкономить ваше время и сгенерирует исчерпывающий ответ на вопрос по данному видео. Конечно, эта функция не сработает с видео длиной в несколько часов т.к. размер контекста модели не так велик.
Пример использования: голосовые сообщения
Как-то раз я решил спросить у нашего бота, как перевести слово "не прорезавшийся (зуб)" на немецкий. Вот результат.
За точность перевода ручаться не могу, но моё намерение было распознано правильно, а по сему, расцениваю это как положительный пример.
Пример использования: чтение PDF
Иногда, чтение документов надоедает. А что если отправить пресловутую PDF-ку ChatGPT боту? В этом примере я отправил боту своё резюме и спросил, какими языками программирования я владею.
Бот, в целом, ответил правильно. Но я бы исключил SPARQL и SQL, так как это языки запросов.
Итоги
Данным ботом, написанным нами, я пользуюсь каждый день. В основном он решает мои рутинные технические задачи, которые мне лень "гуглить" (напр. поменять конфиг файл для nginx). В быту, бот помогает разрешать мелкие споры, например, как переводится то или иное слово. Однако, нужно подходить с опаской к вопросам, касающимся фактологических данных (даты, события, здоровье, и т.д.), желательно приводить источник инофрмации как контекст.
Присылайте в комментарии свои примеры взаимодействия с ботом, ссылка тут: https://t.me/gpt_rubq_bot. Будем рады обратной связи.
PS. Если кто-то хочет создать себе аккаунт OpenAI, советую пользоваться этим гайдом. VPN для смены локации тут.
Комментарии (8)
qertis
21.09.2023 08:59Интересный опыт. Можно подробнее как происходит обработка PDF? Идет обработка только текста, а если в PDF изображение?
perevalov_a Автор
21.09.2023 08:59+1Пока изображения не обрабатываем, только текст. Думаю в будующем подключим OCR туда
janvarev
21.09.2023 08:59Коллеги, а можно как-то уточнить - в статье написано GPT-4, в боте вижу:
Во-вторых, - указывайте, пожалуйста, что бот платный (свыше 10 запросов), и сколько будут стоить запросы. Для интересующихся прикладываю:
perevalov_a Автор
21.09.2023 08:59смотрите список команд в боте (/changemodel). Про платное использование у нас написано: "добавить менеджмент баланса токенов для того, чтобы люди, находящие бота, не пользовались им безлимитно"
theurus
21.09.2023 08:59+1Если вдруг кто то захочет своего бота с примерно таким же функционалом на гитхабе есть https://github.com/theurs/tb1
Ему тоже можно посылать файлы (и ссылки) для сумморизации или работы с загруженными документами, делается это через claude ai (контекст до 100т символов). Можно отправить боту документы pdf, docx, xlsx и др. и давать задания по ним, есть OCR, голосовое управление.
Работает всё это так себе, примерно так же как гпт решает нетривиальные задачки клауд работает с файлами, даешь ему таблицу с людьми, попросишь показать 5 самых молодых и... прекращаешь страдать такой ерундой.
Ключи для гпт продаются на каждом углу за копейки, и можно использовать бесплатно клауда и барда.
nyando
А есть возможность в боте подключить плагин?
perevalov_a Автор
Нет, бот предоставляется "AS-IS"
janvarev
Извиняюсь, но если интересно - я вчера публиковал статью про российский сервис к доступу к GPT-сетям через OpenAI API - может ваш плагин с ним можно будет интегрировать https://habr.com/ru/articles/762248/