Это руководство о том, как создать бота Telegram при поддержке LLM (т. е. llama2-chat, llama2-chat-32k, vicuna). Бот размещается на экземпляре EC2 бесплатного уровня, вывод llm размещается в Beam Cloud в виде бессерверного REST API, который бесплатен в течение первых 10 часов вычислений. Все это происходит довольно медленно, но это только отправная точка.
Вы можете следовать этому руководству, чтобы создать бота Python Telegram:
Как создать бота Telegram с помощью Python
Здесь я расскажу вам основные шаги:
Теперь вы можете начать разговор со своим ботом, выполнив поиск имени пользователя в Telegram.
Что касается размещения вывода llm, лучший вариант, который я нашел на данный момент, — это Beam Cloud. Их цены на вычисления одни из самых низких, и они предлагают 10 часов бесплатных вычислений с хорошими графическими процессорами. Предложение бесплатного хранения, что высоко ценится.
Чат-бот создан с использованием langchain и HuggingFace. Поэтому, если вам нужны модели семейства Llama 2, вам потребуется доступ к этим моделям. Это очень легко сделать, и они очень быстро одобряют запрос.
TODO Я использовал пару исходников, чтобы собрать langchain и HF, добавлю их как можно скорее.
Если вы хотите использовать закрытые модели, вам нужно будет установить жетон обнимающего лица. Это встроено в код, исправлю в ближайшие дни.
Это руководство по созданию токена:
Токены доступа пользователей HuggingFace
После того, как вы создали свою учетную запись (способ оплаты не требуется), перейдите на панель управления и на вкладке «Настройки» в правом меню вы можете найти «Секреты». Если вы используете такую модель, как лама 2, для которой требуется токен обнимающего лица, вам необходимо установить переменную HF_TOKEN с токеном обнимающего лица.
Тогда вы сможете делать все локально. Перейдите в подкаталог lm.
cd ./src/telegram_llm_bot/shared/llm/beam
Следуйте инструкциям по установке балки. Установка балки.
Внутри файла app.py вы можете изменить следующие переменные или оставить их как есть. Скоро я перенесу их в файл конфигурации:
HF_CACHE = "./models"
MODEL_ID = "meta-llama/Llama-2-7b-chat-hf"
APP_NAME = "travel-guru"
GPU = "T4"
MEMORY = "16Gi"
Вы готовы развернуть приложение:
beam deploy app.py
Приложение должно быть запущено и работать. Перейдите на панель управления Beam и на вкладке «Приложения» вы найдете свое приложение.
Вы можете бесплатно разместить своего бота на экземпляре EC2 бесплатного уровня. Это руководство, которому вы можете следовать:
Учебное пособие. Начало работы с инстансами Amazon EC2 Linux
Во время создания экземпляра вам необходимо не забыть создать пару ключей, которую вы будете использовать для удаленного подключения к вашему экземпляру через ssh.
Я рекомендую установить Ubuntu в качестве ОС.
Как только вы установите пару ключей, файл .pem будет загружен автоматически.
Теперь вы можете подключиться к экземпляру ec2 через командную строку, используя ssh:
ssh -i " {filename}.pem " ubuntu@{address}.{region}.compute.amazonaws.com
Клонируйте этот репозиторий в экземпляре ec2. Нам понадобится только папка с ботом, остальное нам понадобится, поэтому в будущем я, возможно, отделю ее от остальных, пока это не большая проблема:
git clone https://github.com/ma2za/telegram-llm-bot.git
Перейдите в каталог бота
cd telegram-llm-bot
Создайте файл .env, чтобы установить переменные среды, общие для всех ваших ботов.
touch .env
С помощью nano измените содержимое .env следующим содержимым.
MONGO_HOST=telegram-mongo
MONGO_PORT=27017
Это необходимо для настройки базы данных MongoDB для хранения разговоров.
Создайте еще один файл .env, предназначенный для бота, чтобы установить переменные среды.
touch ./src/telegram_llm_bot/bots/base_chatbot/.env
С помощью nano измените содержимое .env следующим содержимым.
TELEGRAM_BOT_TOKEN =
BEAM_TOKEN =
BEAM_URL = https://apps.beam.cloud/{something}
SETTINGS_FILE=telegram_llm_bot.bots.base_chatbot.settings
BOT_NAME=travel-guru
TELEGRAM_BOT_TOKEN — это токен, который мы получили ранее от BotFather.
BEAM_TOKEN : в разделе «Ключи API» на панели управления приложения Beam вы можете сгенерировать токен Beam.
BEAM_URL получен из обзора приложения, где вы можете нажать «Вызов API», и там вы можете легко узнать URL-адрес.
Наконец-то мы можем использовать docker Compose для создания образов и запуска контейнеров.
Установите Docker и Docker Compose. Вот официальное руководство:
Установите Docker Engine в Ubuntu
Сборка, создание и запуск контейнеров:
sudo docker compose up -d --build
Мы закончили здесь!
Системные подсказки содержатся в config.yml .
Вы готовы к общению!