Создание Telegram-бота с RAG и вызовом функций
С помощью Yandex Cloud ML SDK, RAG
В этом руководстве вы создадите чат-ассистента по продаже вин на основе модели YandexGPT 5. Используя возможности function calling и RAG, ассистент получит доступ к базе данных по винам и регионам, а также прайс-листу с ценами и данными о наличии вин. Настройка ассистента пройдет в ноутбуке Yandex DataSphere, общение с ассистентом будет осуществляться через Telegram.
Чтобы создать интеллектуального ассистента для Telegram:
- Подготовьте инфраструктуру.
- Создайте API-ключ для сервисного аккаунта.
- Создайте Telegram-бота
- Создайте секреты.
- Клонируйте репозиторий.
- Протестируйте бота.
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Перед началом работы нужно зарегистрироваться в Yandex Cloud, настроить сообщество и привязать к нему платежный аккаунт:
- На главной странице DataSphere
нажмите Попробовать бесплатно и выберите аккаунт для входа — Яндекс ID или рабочий аккаунт в федерации (SSO). - Выберите организацию Yandex Identity Hub, в которой вы будете работать в Yandex Cloud.
- Создайте сообщество.
- Привяжите платежный аккаунт к сообществу DataSphere, в котором вы будете работать. Убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе
ACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его в интерфейсе DataSphere.
Необходимые платные ресурсы
В стоимость поддержки инфраструктуры для создания интеллектуального ассистента входит:
- плата за использование вычислительных ресурсов DataSphere;
- плата за генерацию текста моделью.
Подготовьте инфраструктуру
Войдите в консоль управления
Если у вас есть активный платежный аккаунт, на странице облака
Примечание
Если вы работаете с Yandex Cloud через федерацию удостоверений, вам может быть недоступна платежная информация. В этом случае обратитесь к администратору вашей организации в Yandex Cloud.
Создайте каталог
- В консоли управления
выберите облако и нажмите кнопку Создать каталог. - Введите имя каталога, например
data-folder
. - Нажмите кнопку Создать.
Создайте сервисный аккаунт для проекта DataSphere
Для обращения к модели из ноутбука нужно создать сервисный аккаунт.
- Перейдите в каталог
data-folder
. - На панели слева нажмите
Все сервисы и выберите сервис Identity and Access Management или введите название сервиса в строке поиска на дашборде. - Нажмите кнопку Создать сервисный аккаунт.
- Введите имя сервисного аккаунта, например
gpt-user
. - Нажмите Добавить роль и назначьте сервисному аккаунту роль
ai.languageModels.user
. - Нажмите кнопку Создать.
Добавьте сервисный аккаунт в проект
Чтобы сервисный аккаунт мог обращаться к модели из ноутбука, добавьте его в список участников проекта.
-
Выберите нужный проект в своем сообществе или на главной странице
DataSphere во вкладке Недавние проекты. - На вкладке Участники нажмите Добавить участника.
- Выберите аккаунт
gpt-user
и нажмите Добавить.
Создайте API-ключ для сервисного аккаунта
Чтобы сервисный аккаунт получил доступ к модели, создайте API-ключ.
- В консоли управления
перейдите в каталогdata-folder
. - На панели слева нажмите
Все сервисы и выберите сервис Identity and Access Management или введите название сервиса в строке поиска на дашборде. - На панели слева выберите
Сервисные аккаунты. - В открывшемся списке выберите сервисный аккаунт
gpt-user
. - На панели сверху нажмите кнопку
Создать новый ключ и выберите пункт Создать API-ключ. - В поле Область действия выберите
yc.ai.languageModels.execute
. - Нажмите кнопку Создать.
- Сохраните идентификатор и секретный ключ.
Создайте Telegram-бота
- Откройте чат с ботом @botfather
. - Следуя инструкциям, придумайте имя и ник своему Telegram-боту.
- После успешного создания бота вы получите ссылку на чат с вашим ботом и токен. Сохраните их для следующих шагов.
Создайте секреты
Чтобы использовать API-ключ, идентификатор каталога и токен доступа к боту из ноутбука, создайте секреты с соответствующими значениями.
-
Выберите нужный проект в своем сообществе или на главной странице
DataSphere во вкладке Недавние проекты. - В блоке Ресурсы проекта выберите
Секрет. - Нажмите Создать.
- В поле Имя задайте имя секрета —
api_key
. - В поле Значение вставьте идентификатор ключа.
- Нажмите Создать.
- По аналогии создайте секреты
folder_id
с идентификатором каталога иtg_token
с токеном Telegram-бота.
Клонируйте репозиторий
-
Выберите нужный проект в своем сообществе или на главной странице
DataSphere во вкладке Недавние проекты. - Нажмите кнопку Открыть проект в JupyterLab и дождитесь окончания загрузки.
- На панели слева в разделе
File Browser создайте или выберите папку, в которой вы хотите разместить клон репозитория, и перейдите в нее. - В верхнем меню нажмите Git и выберите Clone a Repository.
- В открывшемся окне введите URI репозитория —
https://github.com/yandex-cloud-examples/yc-ai-wine-assistant
. - Включите опцию Download the repository и нажмите кнопку Clone.
Запустите ноутбук
Код ноутбука подключается к модели, дает ей необходимые функции, а также настраивает бота в Telegram.
- Перейдите в папку клонированного репозитория.
- Откройте ноутбук
advanced-assistant.ipynb
. - Последовательно запускайте ячейки ноутбука. Не запускайте ячейки блока Удаляем лишнее, пока не закончите работу с ботом.
- Последняя ячейка в блоке Делаем винного ассистента в телеграме подготовит вашего бота к работе.
Протестируйте бота
-
Перейдите по ссылке на чат с вашим ботом, полученной ранее.
-
Нажмите START.
-
Введите свой запрос в поле ввода сообщений. Например:
Какое вино посоветуешь к белому шоколаду?
Результат:
К белому шоколаду могут подойти белые и розовые десертные или креплёные вина. Например, можно рассмотреть вина из сортов Шардоне, Семийона, Рислинга или Вионье. Если вас интересует конкретное вино, я могу проверить его наличие и цену в нашем прайс-листе.
Как удалить созданные ресурсы
Чтобы перестать платить за созданные ресурсы, удалите проект.