Dies ist eine Anleitung zum Erstellen eines Telegram-Bots, der von einem LLM unterstützt wird (z. B. llama2-chat, llama2-chat-32k, vicuna). Der Bot wird auf einer kostenlosen EC2-Instanz gehostet, die LLM-Inferenz wird auf Beam Cloud als serverlose REST-API gehostet, die für die ersten 10 Rechenstunden kostenlos ist. Das Ganze ist ziemlich langsam, aber das ist nur ein Anfang.
Sie können dieser Anleitung folgen, um einen Python-Telegram-Bot zu erstellen:
So erstellen Sie einen Telegram-Bot mit Python
Hier gebe ich Ihnen die wichtigsten Schritte:
Sie können jetzt eine Konversation mit Ihrem Bot beginnen, indem Sie auf Telegram nach dem Benutzernamen suchen.
Was das Hosten der LLM-Inferenz betrifft, ist Beam Cloud die beste Option, die ich derzeit gefunden habe. Ihre Rechenpreise gehören zu den günstigsten und sie bieten 10 Stunden kostenloses Rechnen mit tollen GPUs. Das Angebot an kostenlosem Speicherplatz wird sehr geschätzt.
Der Chatbot wird mit Langchain und Huggingface erstellt. Wenn Sie also auf die Modellfamilie Llama 2 zugreifen möchten, benötigen Sie Zugriff auf die Modelle. Das geht ganz einfach und die Anfrage wird sehr schnell genehmigt.
TODO Ich habe ein paar Quellen verwendet, um Langchain und HF zusammenzustellen, ich werde sie so schnell wie möglich hinzufügen.
Wenn Sie geschlossene Modelle verwenden möchten, müssen Sie ein Umarmungsgesichts-Token festlegen. Das ist im Code eingebaut, ich werde es in den nächsten Tagen beheben.
Dies ist eine Anleitung zum Generieren des Tokens:
HuggingFace-Benutzerzugriffstoken
Sobald Sie Ihr Konto erstellt haben (keine Zahlungsmethode erforderlich), gehen Sie zum Dashboard und unter der Registerkarte „Einstellungen“ im rechten Menü finden Sie die Geheimnisse. Wenn Sie ein Modell wie Lama 2 verwenden, das ein Umarmungsgesichts-Token erfordert, müssen Sie die Variable HF_TOKEN mit dem Umarmungsgesichts-Token festlegen.
Dann können Sie alles vor Ort erledigen. Wechseln Sie in das Unterverzeichnis lm.
cd ./src/telegram_llm_bot/shared/llm/beam
Befolgen Sie die Anleitung zur Balkeninstallation.
In der Datei app.py können Sie die folgenden Variablen ändern oder unverändert lassen. Ich werde sie bald in eine Konfigurationsdatei verschieben:
HF_CACHE = "./models"
MODEL_ID = "meta-llama/Llama-2-7b-chat-hf"
APP_NAME = "travel-guru"
GPU = "T4"
MEMORY = "16Gi"
Sie sind bereit, die App bereitzustellen:
beam deploy app.py
Die App sollte jetzt betriebsbereit sein. Gehen Sie zum Beam-Dashboard und unter der Registerkarte „Apps“ finden Sie Ihre App.
Sie können Ihren Bot kostenlos auf einer EC2-Instanz der kostenlosen Stufe hosten. Dies ist eine Anleitung, der Sie folgen können:
Tutorial: Erste Schritte mit Amazon EC2 Linux-Instances
Während der Erstellung der Instanz müssen Sie daran denken, ein Schlüsselpaar zu erstellen, mit dem Sie per SSH eine Remote-Verbindung zu Ihrer Instanz herstellen.
Ich empfehle, Ubuntu als Betriebssystem festzulegen.
Sobald Sie das Schlüsselpaar festgelegt haben, wird die PEM-Datei automatisch heruntergeladen.
Jetzt können Sie über die Befehlszeile mit ssh eine Verbindung zur ec2-Instanz herstellen:
ssh -i " {filename}.pem " ubuntu@{address}.{region}.compute.amazonaws.com
Klonen Sie dieses Repository auf der ec2-Instanz. Wir brauchen nur den Bot-Ordner, den Rest brauchen wir, also werde ich ihn in Zukunft wahrscheinlich vom Rest trennen, im Moment ist das kein großes Problem:
git clone https://github.com/ma2za/telegram-llm-bot.git
Wechseln Sie in das Bot-Verzeichnis
cd telegram-llm-bot
Erstellen Sie eine .env-Datei, um die Umgebungsvariablen festzulegen, die allen Ihren Bots gemeinsam sind
touch .env
Ändern Sie über Nano den Inhalt der .env mit dem folgenden Inhalt.
MONGO_HOST=telegram-mongo
MONGO_PORT=27017
Dies ist erforderlich, um eine MongoDB-Datenbank zum Speichern der Konversationen einzurichten.
Erstellen Sie eine weitere .env-Datei speziell für einen Bot, um die Umgebungsvariablen festzulegen
touch ./src/telegram_llm_bot/bots/base_chatbot/.env
Ändern Sie über Nano den Inhalt der .env mit dem folgenden Inhalt.
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 ist das Token, das wir zuvor vom BotFather erhalten haben.
BEAM_TOKEN : Unter API-Schlüssel im Dashboard der Beam-App können Sie ein Beam-Token generieren.
BEAM_URL erhalten Sie aus der Übersicht der App, wo Sie auf Call API klicken können und dort ganz einfach die URL herausfinden können
Endlich können wir Docker Compose verwenden, um Images zu erstellen und die Container auszuführen.
Installieren Sie Docker und Docker Compose. Hier ist der offizielle Leitfaden:
Installieren Sie die Docker Engine unter Ubuntu
Erstellen, erstellen und starten Sie die Container:
sudo docker compose up -d --build
Wir sind hier fertig!
Die Systemaufforderungen sind in config.yml enthalten.
Sie sind bereit zum Chatten!