В этой статье я покажу, как создать свой телеграм-бот ChatGPT на базе библиотеки GPT4free. В телеграме меня просили написать гайд, как сделать телеграм-бот на базе бесплатной библиотеки GPT4free. Я решил его написать и также дополнительно выложить исходный код, в качестве базового, но вполне рабочего примера, на гитхаб, чтобы любой желающий мог нажать условные пару кнопок и протестировать или использовать в своих целях. Я был очень удивлен, когда увидел, что в интернете на базе бесплатной библиотеки для Python GPT4free делают проекты, за которые берут деньги! Один из таких проектов даже сделал подписку на токены; по моему мнению, это полнейший кринж — брать деньги за то, что в открытом доступе и, более того, базируется на сторонних веб-сервисах, которые и предоставляют доступ к ChatGPT. GPT4free — ни что иное как API к веб-мордам этих сервисов, а никакое не хакерство и уязвимость в API Open AI, как в новостях писали неграмотные журналисты. Использование веб-версий кардинально отличается от платного оригинального API Open AI со всеми вытекающими минусами в виде лимитов или блокировок по GEO IP. Стоит ли говорить, что 100% стабильности бесплатное решение не гарантирует? Кто те особо одаренные, кто платит таким товарищам, я не знаю, поэтому и пишу эту статью, чтобы любой мог пользоваться бесплатно. Для создания телеграм-бота я буду использовать библиотеки Aiogram и g4f. Структурно для работы нам потребуется несколько вещей. 1) Хранить историю сообщений пользователя, так как ChatGPT по API не имеет памяти, соответственно, чтобы вести связный диалог, нужно отправлять всю его историю вместе с каждым сообщением. При использовании g4f, а не оригинального API максимальный размер такого диалога ограничивается контекстным окном. Мы не знаем размер этого контекстного окна у сервисов, поэтому в коде будут использоваться простейшие методы для обнаружения этого в виде принтов в консоль после каждого сообщения с указанием общей длины диалога. 2) Обрезать историю сообщений пользователя, для того чтобы не превышать размер контекстного окна: превышение приведет к ошибке. Также необходимо дать возможность вручную очищать историю диалога, например, чтобы начать беседу на новую тему. 3) Отправлять историю сообщений и получать ответ от ChatGPT. Как видите, код очень простой, всего 66 строк. Это БАЗА. Если вы по непонятной причине планируете использовать бесплатный телеграм-бот в серьезных целях, то вам потребуется любая база данных для хранения истории пользователя. В текущем коде сообщения хранятся в памяти, и этого более чем достаточно даже для использования совместно с друзьями или коллегами. Также НИКОГДА не храните API ключи в самом коде, в примере это сделано нарочно для самых маленьких, чтобы уж точно запустилось у всех и не было вопросов в комментариях. Ссылка на исходники на гитхаб. В переменной provider вы можете выбрать любой провайдер из тех, что доступны, посмотреть список можно на гитхабе. Провайдеров с доступом к ChatGPT-4 не так много, и многие из них или нестабильны, или имеют ограничения по GEO IP, или требуют авторизацию либо cookies. В примере на гитхабе я использовал провайдера, который нормально относится к IP-адресам из России. Из реально стабильно и постоянно работающих ChatGPT-4 провайдеров — bing, но для его использования нужен прокси или впн. Если устанавливать телеграм бота на VPS, лучше использовать зарубежный. В самой библиотеке gpt4free поддерживается использование прокси, но вот мое мнение: если уже есть прокси или впн, зачем тогда этот самый бинг в телеграм-боте нужен? Можно же его использовать в оригинальном виде. Chat.geekGPT и phind тоже работают, но с переменным успехом. Я лично рекомендую использовать провайдеров ChatGPT 3.5: там и с IP из России можно, и не нужно париться с cookies; да и работа быстрая и относительно стабильная. Для того чтобы использовать прокси, нужен следующий код: Для выбора провайдера можно запускать телеграм-бот прямо из IDE и смотреть в консоли принты для отладки, чтобы определить максимальное контекстное окно выбранного провайдера. Просто пишите боту сообщения, можно сразу копипастить большие и смотреть, сколько символов они занимают; в коде для упрощения считаются только символы сообщений пользователя и ответы ChatGPT — то, что в словаре по ключу content. Технические данные не считаются, да и это не нужно. Надо понимать: это контекстное окно модели — 4096 токенов, либо 16384. Либо вообще что-то маленькое и ограниченное; да, есть и такие модели, но их лучше не использовать. Для начала идем в телеграм-бот @BotFatherи пишем команду /newbot; далее выбираем название бота. Следующим сообщением нужно выбрать username — в конце обязательно нужно указать _bot по принципу, как сделано на скриншоте. Все, ваш бот создан.  Копируем токен бота в код. Далее сразу нужно создать кнопку в меню для очистки истории диалога, чтобы потом не возвращаться к этому. Пишем команду /mybots. Выбираем свой бот. Нажимаем Edit bot, далее Edit commands. Затем пишите clear — очистка истории сообщений. Теперь при написании команды или выборе в меню /clear будет очищаться диалог с пользователем. Для работы на винде, например в IDE для тестов, достаточно запустить IDE, создать окружение, клонировать код с гитхаба или вручную скопировать в папку, далее ввести в терминале  pip install -r requirements.txt и заменить API_TOKEN на токен вашего телеграм-бота, который вы только что получили. На Ubuntu вам придется создать папку; я для удобства использую winSCP, вы можете использовать что удобно, в том числе клонировать с гита и перейти в папку командой. Запускаем Putty и подключаемся к серверу либо из терминала: Либо создаем папку в WinSCP, копируем в нее main.py и requirements.txt. А затем переходим туда в консоли командой: Обновляем список пакетов: По умолчанию в ubuntu уже установлен Python, проверяем командой: Обычно менеджер пакетов pip3 не установлен в Ubuntu, устанавливаем командой: Также установите виртуальное окружение venv командой: Далее убедитесь, что вы находитесь в нужной вам папке. Если нет — воспользуйтесь командой cd, а также командой ls и проверьте, содержатся ли в папке нужные вам файлы. Создаем виртуальное окружение внутри папки: Активируйте виртуальное окружение командой: Установите необходимые библиотеки командой: Теперь нужно сделать так, чтобы бот автоматически запускался и был активен при старте сервера. Идем в папку /etc/systemd/system/ и создаем любым удобным вам образом, я рекомендую через winSCP. Файл tgbot.service, в нем пишем: Замените в тексте имя пользователя на свое, а также tgbot замените на вашу директорию с папкой. Далее используйте следующие команды: Ваш бот готов, чтобы проверить его статус, используйте команду: Все готово, тут все очень легко. Если выдает ошибку 403, значит, ваш IP провайдеру не нравится по каким-то причинам. В данный момент я готовлю к релизу программу, ассистент на базе ChatGPT для Windows, который помогает проходить собеседования (лайв-кодинг, тестовые задания), а также его можно просто использовать как обычный ChatGPT, но без VPN, на базе оригинального API или на базе того же GPT4free. От аналогичных программ моя отличается тем, что имеет распознавание изображения и текста, сразу передает в ChatGPT и выводит ответ, также имеется режим невидимости, что очень полезно для собеседований и лайв-кодинга. В режиме невидимости интерфейс программы не видно, а ответы отправляются в ваш личный телеграм-бот. Программу я уже протестировал на прохождении собеседований. Когда все будет готово, тоже напишу статью. Если интересно, заходите в телеграм. https://t.me/game_2hard  Мировой рекордсмен по оверклокингу, Python senior.