Demo Telegram Bot YandexGPT
Telegram-бот на serverless-стеке Yandex Cloud с использованием YandexGPT для ответов на вопросы пользователей.
Особенности
- Использует библиотеку python-telegram-bot на Python.
- Не поддерживает контекст диалога.
- Поддерживает изменение навыков.
Из чего складывается стоимость использования бота
- Плата за «общение» с моделью YandexGPT (см. тарифы YandexGPT).
- Плата за количество вызовов функции, вычислительные ресурсы, выделенные для выполнения функции, время простоя подготовленных экземпляров и исходящий трафик (см. тарифы Yandex Cloud Functions).
- Плата за количество запросов к созданным API-шлюзам и исходящий трафик (см. тарифы Yandex API Gateway).
- Плата за количество запросов к стандартным очередям и очередям FIFO, а также исходящий трафик (см. тарифы Yandex Message Queue).
- Плата за хранение и запрос секретов (см. тарифы Yandex Lockbox).
-
Зарегистрируйте вашего бота в Telegram и получите токен:
- Запустите бота
@BotFatherи выберите команду/newbot. - Укажите имя вашего бота, например
Serverless Echo Telegram Bot. Это имя будут видеть пользователи при общении с ботом. - Укажите имя пользователя бота, например
ServerlessHelloTelegramBot. По имени пользователя можно будет найти бота в Telegram. Имя пользователя должно оканчиваться на слово наBotили_bot.
При успешной регистрации вы получите приветственное сообщение и токен бота.
- Запустите бота
-
Создайте сервисный аккаунт и назначьте ему роль
adminна каталог. -
Создайте секрет Yandex Lockbox с ключами для бота и YandexGPT:
-
В блоке Создание секрета в поле Имя укажите имя секрета, например
tg_bot_token. -
В блоке Данные секрета:
- Выберите Пользовательский тип секрета.
- Создайте ключ для бота, в поле Ключ укажите
BOT_TOKEN. - В поле Значение укажите полученный ранее токен бота.
- Создайте два ключа для YandexGPT, в поле Ключ укажите
GPT_FOLDER_IDиGPT_API_KEY. - В поле Значение укажите
FOLDER_IDиAPI_KEYсоответственно.
Как получить API_KEY для YandexGPT см. Аутентификация в API Yandex Foundation Models.
-
-
В консоли управления перейдите в каталог, в котором хотите развернуть приложение.
-
Выберите сервис Cloud Apps.
-
На панели слева выберите Магазин приложений.
-
Выберите Demo Telegram Bot YandexGPT и нажмите кнопку Использовать.
-
Укажите:
- Имя приложения.
- (Опционально) Описание приложения.
- Сервисный аккаунт с ролью
adminна каталог или выберите Автоматически, чтобы нужный сервисный аккаунт создался при установке приложения. От имени этого сервисного аккаунта будут создаваться ресурсы приложения. - Идентификатор секрета Yandex Lockbox, который создали ранее.
-
Нажмите кнопку Установить.
-
В появившемся окне Проверка изменений нажмите Подтвердить и дождитесь, пока приложение установится.
-
На странице Обзор в разделе Ресурсы приложения найдите
API-шлюз, перейдите на его страницу и скопируйте ссылку на служебный домен. -
Чтобы настроить связь между функцией и Telegram-ботом, выполните запрос. Вместо
<токен_бота>укажите токен Telegram-бота, вместо<домен_API-шлюза>— ссылку на служебный домен API-шлюза:-
Для Linux/macOS
curl \ --request POST \ --url https://api.telegram.org/bot<токен_бота>/setWebhook?url=https://<домен_API-шлюза>/echo -
Для Windows (cmd)
curl ^ --request POST ^ --url "https://api.telegram.org/bot<токен_бота>/setWebhook?url=https://<домен_API-шлюза>/echo" -
Для Windows (Powershell)
curl.exe ` --request POST ` --url https://api.telegram.org/bot<токен_бота>/setWebhook?url=https://<домен_API-шлюза>/echo
Результат:
{"ok":true,"result":true,"description":"Webhook was set"} -
-
Напишите боту в Telegram команду
/startи дальше можете задавать ему вопросы. -
Вы можете удобно продолжить разработку бота склонировав SourceCraft репозиторий cloudapp-tgbot-yandexg и настроив интеграцию с развернутым Cloud App по инструкции из README.md
Служба технической поддержки Yandex Cloud отвечает на запросы 24 часа в сутки, 7 дней в неделю. Доступные виды запросов и срок их обработки зависят от тарифного плана. Подключить платную поддержку можно в консоли управления. Подробнее о порядке оказания технической поддержки.
| Тип ресурса | Количество |
|---|---|
| Сервисные аккаунты | 4 |
| Статический ключ доступа сервисного аккаунта | 1 |
| Права доступа к каталогу | 7 |
| Очередь сообщений | 1 |
| Бессерверная функция | 1 |
| Триггер Cloud Functions | 1 |
| API-шлюз | 1 |