Ceci est un guide sur la façon de créer un Telegram Bot soutenu par un LLM (c'est-à-dire llama2-chat, lama2-chat-32k, vicuna). Le bot est hébergé sur une instance EC2 de niveau gratuit, l'inférence llm est hébergée sur Beam Cloud en tant qu'API REST sans serveur, gratuite pendant les 10 premières heures de calcul. Le tout est assez lent, mais ce n'est qu'un point de départ.
Vous pouvez suivre ce guide pour créer un Python Telegram Bot :
Comment créer un robot Telegram en utilisant Python
Ici, je vais vous donner les principales étapes :
Vous pouvez désormais démarrer une conversation avec votre bot en recherchant le nom d'utilisateur sur Telegram.
Quant à l'hébergement de l'inférence LLM, la meilleure option que j'ai trouvée pour le moment est Beam Cloud. Leurs prix de calcul sont parmi les moins chers et ils offrent 10 heures de calcul gratuit avec de jolis GPU. L’offre de stockage est gratuite, ce qui est très apprécié.
Le chatbot est construit en utilisant Langchain et Huggingface. Donc, si vous souhaitez accéder à la famille de modèles Llama 2, vous devrez avoir accès aux modèles. C’est très simple à faire et ils approuvent très rapidement la demande.
TODO J'ai utilisé quelques sources pour rassembler langchain et HF, je les ajouterai dès que possible.
Si vous souhaitez utiliser des modèles fermés, vous devrez définir un jeton de visage câlin. Ceci est intégré au code, je le corrigerai dans les prochains jours.
Ceci est un guide pour générer le jeton :
Jetons d'accès utilisateur HuggingFace
Une fois que vous avez créé votre compte, aucun mode de paiement requis, accédez au tableau de bord et sous l'onglet Paramètres dans le menu de droite, vous trouverez les secrets. Si vous utilisez un modèle comme Llama 2 qui nécessite un jeton de visage câlin, vous devez définir la variable HF_TOKEN avec le jeton de visage câlin.
Ensuite, vous pouvez tout faire localement. Accédez au sous-répertoire lm.
cd ./src/telegram_llm_bot/shared/llm/beam
Suivez le guide d'installation de Beam Installation de Beam.
Dans le fichier app.py, vous pouvez modifier les variables suivantes ou les laisser telles quelles. Je vais bientôt les déplacer dans un fichier de configuration :
HF_CACHE = "./models"
MODEL_ID = "meta-llama/Llama-2-7b-chat-hf"
APP_NAME = "travel-guru"
GPU = "T4"
MEMORY = "16Gi"
Vous êtes prêt à déployer l'application :
beam deploy app.py
L'application devrait être opérationnelle maintenant. Accédez au tableau de bord Beam et sous l'onglet Applications, vous pouvez trouver votre application.
Vous pouvez héberger votre bot gratuitement sur une instance EC2 de niveau gratuit. Ceci est un guide que vous pouvez suivre :
Didacticiel : Démarrer avec les instances Linux Amazon EC2
Lors de la création de l'instance vous devez penser à créer une paire de clés que vous utiliserez pour vous connecter via ssh à votre instance à distance.
Je recommande de définir Ubuntu comme système d'exploitation.
Une fois que vous avez défini la paire de clés, le .pem sera automatiquement téléchargé.
Vous pouvez maintenant vous connecter à l'instance ec2 via la ligne de commande en utilisant ssh :
ssh -i " {filename}.pem " ubuntu@{address}.{region}.compute.amazonaws.com
Clonez ce référentiel sur l'instance ec2. Nous n'aurons besoin que du dossier du bot, nous avons besoin du reste, donc je le séparerai probablement du reste à l'avenir, pour l'instant ce n'est pas un gros problème :
git clone https://github.com/ma2za/telegram-llm-bot.git
Accédez au répertoire du bot
cd telegram-llm-bot
Créez un fichier .env pour définir les variables d'environnement communes à tous vos robots
touch .env
Via nano, modifiez le contenu du .env avec le contenu suivant.
MONGO_HOST=telegram-mongo
MONGO_PORT=27017
Ceci est nécessaire pour configurer une base de données MongoDB pour stocker les conversations.
Créez un autre fichier .env spécifique à un bot pour définir les variables d'environnement
touch ./src/telegram_llm_bot/bots/base_chatbot/.env
Via nano, modifiez le contenu du .env avec le contenu suivant.
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 est le jeton que nous avons reçu plus tôt du BotFather.
BEAM_TOKEN : sous Clés API dans le tableau de bord de l'application Beam, vous pouvez générer un jeton Beam.
BEAM_URL est obtenu à partir de l'aperçu de l'application où vous pouvez cliquer sur Call API et là vous pouvez facilement trouver l'URL
Nous pouvons enfin utiliser docker compose pour créer des images et exécuter les conteneurs.
Installez Docker et Docker Compose. Voici le guide officiel :
Installer le moteur Docker sur Ubuntu
Construisez, créez et démarrez les conteneurs :
sudo docker compose up -d --build
Nous avons terminé ici !
Les invites système sont contenues dans config.yml .
Vous êtes prêt à discuter !