Бот на Python, работающий с помощью нейросети Google Bard для Telegram [Гайд] [UPD 25.07.2023]
Нейросети

Бот на Python, работающий с помощью нейросети Google Bard для Telegram [Гайд] [UPD 25.07.2023]

Теги не заданы
Razilator

В данной статье мы изучим процесс разработки Telegram-бота с использованием языка программирования Python и библиотеки aiogram. Особенностью этого бота будет встроенная нейросеть Google Bard, которую мы будем использовать для обработки сообщений и генерации ответов.

Как получить токен Google Meet Bard

  1. Первое, что нам необходимо сделать, это перейти в самого чат-бота Google Bard.
  2. Далее открываем консоль разработчика (F12).
Открываем консоль разработчика
Открываем консоль разработчика
  1. В консоле разработчика переходим в Приложения (Applications)
  2. Переходим в файлы cookie, выбираем https://bard.google.com/.
  3. Ищем в файлах cookie название __Secure-1PSID и __Secure-1PSIDTS и копируем их значение, сохраняем куда-нибудь.
Приложения -> Файлы Cookie -> https://bard.google.com/ -> __Secure-1PSID и __Secure-1PSIDTS
Приложения -> Файлы Cookie -> https://bard.google.com/ -> __Secure-1PSID и __Secure-1PSIDTS

Отлично. Необходимые токены для Google Bard мы получили.

Как получить токен телеграм бота

Теперь нам необходимо создать бота в телеграмме, делается это через @BotFather, начинаем диалог и вводим команду /newbot, выбираем имя, обязательно чтоб в имени присутствовало слово: Bot, или через подчеркивание _bot

Пример команды
Пример команды

Получаем ключ для доступа к API, на скриншоте он закрашен. Сохраняем в удобное место.

Создание виртуального окружения (если знаете как, можете пропускать)

Теперь нам необходимо создать телеграм бота работающего на основе Google Meet Bard. Создавать бота мы будем с помощью библиотеки aiogram на Python. Поэтому через удобную для вас IDE создаете виртуальное окружение.

В примере воспользуемся IDE PyCharm.

  1. Нажимаем New Project, если вы уже находитесь в проекте, то File -> New Project.
В PyCharm -> New Project
В PyCharm -> New Project
  1. Далее выбираем Pure Python (Python проект) и путь до желаемого проекта. У меня например Ботостроение/GoogleBard. Виртуальное окружение создатся в папке venv, внутри проекта автоматически.
Создаем проект Python, выбираем путь и нажимаем Create
Создаем проект Python, выбираем путь и нажимаем Create
  1. Далее нажимаем Create и ждем создания проекта.
Созданный проект в PyCharm
Созданный проект в PyCharm
  1. Если у вас не создался файл main.py, просто создайте его: На папке проекта ЛКМ мышью -> New -> Python File с названием main.py
На папке проекта ЛКМ мышью -> New -> Python File с названием main.py
На папке проекта ЛКМ мышью -> New -> Python File с названием main.py
  1. В файле main.py мы и будем создавать нашего бота.
Файл main.py
Файл main.py

Создаем telegram бота с Google Meet Bard

Теперь установим необходимые библиотеки через терминал в pyCharm для создания бота: pip install aiogram и pip install GoogleBard==2.1.0

Установка необходимых библиотек для создания телеграм бота на aiogram с Google Bard
Установка необходимых библиотек для создания телеграм бота на aiogram с Google Bard

Результат выполнения установки:

Терминал
Collecting GoogleBard
  Downloading GoogleBard-2.1.0-py3-none-any.whl (5.1 kB)
Collecting aiogram
  Using cached aiogram-2.25.1-py3-none-any.whl (203 kB)
Collecting requests
  Using cached requests-2.30.0-py3-none-any.whl (62 kB)
Collecting prompt-toolkit
  Using cached prompt_toolkit-3.0.38-py3-none-any.whl (385 kB)
Collecting rich
  Using cached rich-13.3.5-py3-none-any.whl (238 kB)
Collecting aiohttp<3.9.0,>=3.8.0
  Using cached aiohttp-3.8.4-cp311-cp311-win_amd64.whl (317 kB)
Collecting Babel<2.10.0,>=2.9.1
  Using cached Babel-2.9.1-py2.py3-none-any.whl (8.8 MB)
Collecting certifi>=2021.10.8
  Using cached certifi-2023.5.7-py3-none-any.whl (156 kB)
Collecting magic-filter>=1.0.9
  Using cached magic_filter-1.0.9-py3-none-any.whl (9.3 kB)
Collecting attrs>=17.3.0
  Using cached attrs-23.1.0-py3-none-any.whl (61 kB)
Collecting charset-normalizer<4.0,>=2.0
  Using cached charset_normalizer-3.1.0-cp311-cp311-win_amd64.whl (96 kB)
Collecting multidict<7.0,>=4.5
  Using cached multidict-6.0.4-cp311-cp311-win_amd64.whl (28 kB)
Collecting async-timeout<5.0,>=4.0.0a3
  Using cached async_timeout-4.0.2-py3-none-any.whl (5.8 kB)
Collecting yarl<2.0,>=1.0
  Using cached yarl-1.9.2-cp311-cp311-win_amd64.whl (60 kB)
Collecting frozenlist>=1.1.1
  Using cached frozenlist-1.3.3-cp311-cp311-win_amd64.whl (32 kB)
Collecting aiosignal>=1.1.2
  Using cached aiosignal-1.3.1-py3-none-any.whl (7.6 kB)
Collecting pytz>=2015.7
  Using cached pytz-2023.3-py2.py3-none-any.whl (502 kB)
Collecting wcwidth
  Using cached wcwidth-0.2.6-py2.py3-none-any.whl (29 kB)
Collecting idna<4,>=2.5
  Using cached idna-3.4-py3-none-any.whl (61 kB)
Collecting urllib3<3,>=1.21.1
  Using cached urllib3-2.0.2-py3-none-any.whl (123 kB)
Collecting markdown-it-py<3.0.0,>=2.2.0
  Using cached markdown_it_py-2.2.0-py3-none-any.whl (84 kB)
Collecting pygments<3.0.0,>=2.13.0
  Using cached Pygments-2.15.1-py3-none-any.whl (1.1 MB)
Collecting mdurl~=0.1
  Using cached mdurl-0.1.2-py3-none-any.whl (10.0 kB)
Installing collected packages: wcwidth, pytz, urllib3, pygments, prompt-toolkit, multidict, mdurl, magic-filter, idna, frozenlist, charset-normalizer, certifi, Babel, attrs, async-timeout, yarl, requests, markdown-it-py, aiosignal, rich, aiohttp, GoogleBard, aiogram
Successfully installed Babel-2.9.1 GoogleBard-1.0.0 aiogram-2.25.1 aiohttp-3.8.4 aiosignal-1.3.1 async-timeout-4.0.2 attrs-23.1.0 certifi-2023.5.7 charset-normalizer-3.1.0 frozenlist-1.3.3 idna-3.4 magic-filter-1.0.9 markdown-it-py-2.2.0 mdurl-0.1.2 multidict-6.0.4 prompt-toolkit-3.0.38 pygments-2.15.1 pytz-2023.3 requests-2.30.0 rich-13.3.5 urllib3-2.0.2 wcwidth-0.2.6 yarl-1.9.2

[notice] A new release of pip available: 22.3.1 -> 23.1.2
[notice] To update, run: python.exe -m pip install --upgrade pip

Теперь в файле main.py напишем следующий фрагмент кода:

main.py
from Bard import AsyncChatbot
from aiogram import Bot, types
from aiogram.dispatcher import Dispatcher
from aiogram.utils import executor


secure_1PSID = 'Ваш __SECURE_1PSID'
secure_1PSIDTS = 'Ваш __SECURE_1PSIDTS'
telegram_token = 'Ваш TELEGRAM_TOKEN'

bot = Bot(token=telegram_token)
dp = Dispatcher(bot)


@dp.message_handler()
async def send(message: types.Message):
    try:
        chatbot = await AsyncChatbot.create(secure_1PSID, secure_1PSIDTS) 
        await message.answer('Google Bard начинает думать...')
        await message.answer_chat_action('typing')
        answer = await chatbot.ask(message.text)
        await message.answer(answer.get('content'), parse_mode="markdown")
    except Exception as ex:
        await message.answer(str(ex))


if __name__ == '__main__':
    executor.start_polling(dp, skip_updates=True)

Этот код отвечает за создание Telegram-бота, который использует нейросеть Google Bard для генерации ответов на сообщения.

Первая строка from Bard import Chatbot импортирует класс Chatbot из модуля Bard, который содержит реализацию нейросети Google Bard.

Затем импортируются необходимые модули из библиотеки aiogram:

  • Bot - класс, представляющий бота Telegram.
  • types - модуль, содержащий различные типы данных для работы с API Telegram.
  • Dispatcher - класс, отвечающий за обработку и маршрутизацию входящих сообщений.
  • executor - модуль, содержащий функции для запуска бота. Далее задаются переменные telegram_token и secure_1PSID, secure_1PSIDTS, в которых указываются токены для доступа к Telegram API и Google Bard API соответственно.

Затем создаются объекты Bot, Dispatcher и Chatbot. Объект Bot инициализируется с помощью токена Telegram, который позволяет боту взаимодействовать с пользователем. Объект Dispatcher создается на основе объекта Bot и используется для управления обработкой входящих сообщений.

Примечание: без использования прокси или VPN при запуске бота на клиенте (компьютере/сервере) вы можете столкнуться с следующей ошибкой:

Error
Google Bard encountered an error: b')]}\'\n\n38\n["wrb.fr",null,null,null,null,[9]]\n56\n["di",196,"af.httprm",196,"5929433453807571131",4]\n25\n["e",4,null,null,131]\n'.

Поэтому используйте прокси http/https страны США, например из этого списка. Либо используйте клиентский VPN с подключением к любой несанкционной стране. Ну а если у вас есть сервер VPS в из другой страны, то можете просто развернуть бота на нём.

  • Обработчик @dp.message_handler() указывает, что функция send будет вызываться при каждом входящем сообщении. Внутри этой функции происходит следующее:
  • chatbot - инициализация асинхронного бота GoogleBard AsyncChatbot. P.S. Хотелось бы вызывать его один раз и не в функции, но я пробовал делать pool GoogleBard ботов, все они сыпались ошибками. Получился рабочий вариант только такой.
  • Бот отправляет сообщение пользователю о начале обработки запроса.
  • Бот отправляет пользователю специальное действие typing для эмуляции набора текста.
  • Запрашивается ответ от нейросети Google Bard на основе текста сообщения пользователя с помощью метода ask().
  • Полученный ответ отправляется пользователю в качестве ответного сообщения.
  • В блоке except обрабатываются возможные исключения и отправляется пользователю сообщение с текстом ошибки.

Наконец, if __name__ == '__main__': проверяет, запущен ли этот скрипт непосредственно (а не импортирован как модуль), и если это так, запускается бот с помощью функции start_polling из модуля executor. Флаг skip_updates=True указывает, что нужно пропускать обновления, которые пришли до запуска бота.

Проверяем Telegram-бота с Google Bard в деле

Скриншот диалога 1
Скриншот диалога 1
Скриншот диалога 2
Скриншот диалога 2

Не забываем, что Google Bard на данный момент времени, а это май 2023 года, общается только на английском языке! Все, что подается в Telegram под видом Google Bard, который пишет на русском: фейк. Репозиторий с кодом на GitHub.

;