Другие статьи серии:
3) Исходный код
Пришло время разобраться как запускать нашего бота. Для этого была выбрана система автоматизации развёртывания docker. Скачать и установить его можно с официального сайта бесплатно.
Перед запуском, нам надо определиться какой gpt адаптер мы будем использовать (проще говоря к какой нейросети бот будет обращаться за гаданием). В текущей реализации есть 3 варианта
1) MockGptApi - тестовая заглушка, она просто отправляет в чат сам промпт и карты которые выпали при гадании.
2) ChatGptApi - адаптер к ChatGpt, в тестовом варианте api запросов очень немного, с оплатой и регистрацией есть санкционные сложности, поэтому использовал я его совсем немного, просто чтобы проверить работает ли.
3) GigaChatApi - сберовская нейронка, тут все проще, регаемся, получаем api ключ и токены для бесплатных запросов, настройки вносим в appsettings.json (все настройки описаны в первой статье цикла про таро бота).
В файле Program.cs нам нужно подменить реализацию IGptModelApi на нужный нам адаптер нейронки.
Затем нам необходимо заполнить в настройках токен доступа к телеграм апи (есть куча туториалов по общению с bot-father, я думаю, что вы справитесь)
Для того чтоб запустить бота в докере нам нужно сначала собрать образ нашей программы (те кто пользовались софтом, чтоб пиратить диски с играми в стародавние времена, понимают о чем речь, остальные прямо так и гуглите “образ”, про докер куча статей, разобраться в основных-основах не составит труда, я уверен). Для сборки образа мы используем Dockerfile, в нем описано как и что должно добавляться в образ нашей программы.
Из интересного в нашем файле только копирование сертификатов. Они нужны для того чтоб общаться с gigachat’oм, вот ссылка на документацию, где описано почему они необходимы. В остальном dockerfile стандартный.
Для того чтоб в образ бота скопировалось не только приложение, но и его данные (картинки карт и файлы настроек) мы добавляем в настройках проекта бота <ItemGroup> которая говорит, что после сборки в директорию с артефактами сборки надо копировать и данные, чтоб докер собрал все это в образ.
Сборку образа проводим следующим образом:
1) Запускаем docker
2) Открываем терминал в папке с решением бота (там где лежит Dockerfile)
3) В терминале выполняем команды docker build -t taro-bot-image .
После этого в ui клиента docker во вкладке Images у вас должен появится образ нашего приложения бота.
Для запуска бота, нам необходима запущенная база данных. Ее образ мы возьмем уже готовым.
Для запуска сразу нескольких контейнеров (контейнер это запущенный экземпляр образа), мы будем использовать docker compose. Вот файл docker-compose.yaml в котором мы описываем что именно нам надо запустить:
Здесь мы описываем запуск нашего taro-bot-image, вместе с ним запускаем контейнер с mongo:6.0, контейнер при запуске выполняет скрипт mongo-init.js (он создает базу данных mainDb и пользователя admin для нее), также мы устанавливаем username и password для управления подключением к БД.
Переходим в наш терминал и выполняем команду docker-compose up -d
Результат должен быть таким:
А в ui докера мы сможем увидеть наши запущенные контейнеры:
Переходите в бота и начинаете диалог 🙃
Следующим постом я выложу исходники бота на boosty, чтоб вы могли использовать их по своему усмотрению 😎
В комментариях можем обсудить добавление нового функционала к боту, в частности хочу добавить адаптер к gpt api https://chat.deepseek.com/ и добавить админам возможности рассылать посты пользователям бота.
Удачи, добычи! 😀