В этой статье я покажу, как создать свой телеграм бот ChatGPT на базе библиотеки gpt4free.
В моем телеграме меня просили написать гайд, как сделать телеграм бота на базе бесплатной библиотеки gpt4free, я решил написать гайд и так же дополнительно выложить исходный код, в качестве базового примера, но вполне рабочего на гит хаб, что бы любой желающий мог нажать условные пару кнопок и протестировать или использовать в своих целях.
Я был очень удивлен когда увидел, что в интернете на базе бесплатной библиотеки для Python Gpt4free делают проекты, за которые берут деньги! Один из таких проектов даже сделал подписку на токены, по моему мнению это полнейший кринж, брать деньги, за то, что в открытом доступе бесплатно и более того, базируется на сторонних WEB серивисах, которые и предоставляют доступ к ChatGPT, а gpt4free ни что иное, как API к веб мордам этих сервисов,а ни какое не хакерство и уязвимость в API Open AI как в новостях писали неграмотные журналисты. Использование Web версий координально отличается от платного оригинального API Openai со всеми вытекающими минусами, в виде лимитов или блокировок по GEO IP, стоит ли говорить, что 100% стабильности бесплатное решение не гарантирует? Кто те особо одаренные кто платит таким товарищам я не знаю, поэтому и пишу эту статью, что бы любой мог пользоваться бесплатно.
Для создания телеграм бота я буду использовать библиотеки Aiogram и g4f. Структурно для создания простейшего телеграм бота требуется несколько вещей.
1)Хранить историю сообщений пользователя, так как ChatGPT по API не имеет памяти, соответственно, что бы вести связный диалог, нужно отправлять всю историю диалога, вместе с каждым сообщением,максимальный размер такого диалога ограничивается контекстным окном, используя g4f, а не оригинальный API, мы не знаем размер этого контекстного окна у сервисов, поэтому в коде будут использоваться простейшие методы для обнаружения размера этого контекстного окна, в виде простейших принтов в консоль, после каждого сообщения с указанием общей длинный диалога.
2)Обрезать историю сообщений пользователя, для того, что бы не превышать размер контекстного окна, превышение, приведет к ошибке. Так же необходимо дать возможность вручную очищать историю диалога, для того, что бы начать диалог на новую тему например.
3)Отправлять историю сообщений и получать ответ от ChatGPT.