Esta es una guía sobre cómo construir un Telegram Bot respaldado por un LLM (es decir, llama2-chat, llama2-chat-32k, vicuña). El bot está alojado en una instancia EC2 de nivel gratuito, la inferencia llm está alojada en Beam Cloud como una API REST sin servidor, que es gratuita durante las primeras 10 horas de cómputo. Todo es bastante lento, pero esto es sólo un punto de partida.
Puede seguir esta guía para crear un Python Telegram Bot:
Cómo crear un bot de Telegram usando Python
Aquí te daré los pasos principales:
Ahora puedes iniciar una conversación con tu bot buscando el nombre de usuario en Telegram.
En cuanto a alojar la inferencia de llm, la mejor opción que encontré por ahora es Beam Cloud. Sus precios de computación se encuentran entre los más baratos y ofrecen 10 horas de computación gratuita con buenas GPU. La oferta de almacenamiento gratuito, lo cual es muy de agradecer.
El chatbot está construido usando langchain y huggingface. Entonces, si desea acceder a la familia de modelos Llama 2, deberá solicitar acceso a los modelos. Es muy fácil de hacer y son muy rápidos aprobando la solicitud.
TODO Utilicé un par de fuentes para juntar langchain y HF, las agregaré lo antes posible.
Si desea utilizar modelos cerrados, deberá configurar una ficha de cara de abrazo. Esto está integrado en el código, lo arreglaré en los próximos días.
Esta es una guía para generar el token:
HuggingFace Tokens de acceso de usuario
Una vez que haya creado su cuenta, no se requiere ningún método de pago, vaya al panel y en la pestaña Configuración en el menú de la derecha podrá encontrar los Secretos. Si está utilizando un modelo como llama 2 que requiere un token de cara abrazadora, entonces necesita configurar la variable HF_TOKEN con el token de cara abrazadora.
Entonces puedes hacer todo localmente. Vaya al subdirectorio lm.
cd ./src/telegram_llm_bot/shared/llm/beam
Siga la guía de instalación de vigas Instalación de vigas.
Dentro del archivo app.py puedes modificar las siguientes variables o dejarlas como están. Pronto los moveré a un archivo de configuración:
HF_CACHE = "./models"
MODEL_ID = "meta-llama/Llama-2-7b-chat-hf"
APP_NAME = "travel-guru"
GPU = "T4"
MEMORY = "16Gi"
Está listo para implementar la aplicación:
beam deploy app.py
La aplicación debería estar funcionando ahora. Vaya al Panel de Beam y en la pestaña Aplicaciones podrá encontrar su aplicación.
Puede alojar su bot de forma gratuita en una instancia EC2 de nivel gratuito. Esta es una guía que puedes seguir:
Tutorial: Introducción a las instancias de Amazon EC2 Linux
Durante la creación de la instancia debes recordar crear un par de claves que usarás para conectarte vía ssh a tu instancia de forma remota.
Recomiendo configurar Ubuntu como sistema operativo.
Una vez que configure el par de claves, el .pem se descargará automáticamente.
Ahora puede conectarse a la instancia ec2 mediante la línea de comando usando ssh:
ssh -i " {filename}.pem " ubuntu@{address}.{region}.compute.amazonaws.com
Clona este repositorio en la instancia ec2. Solo necesitaremos la carpeta bot, necesitamos el resto, así que probablemente la separe del resto en el futuro, por ahora esto no es un gran problema:
git clone https://github.com/ma2za/telegram-llm-bot.git
Mover al directorio del bot
cd telegram-llm-bot
Cree un archivo .env para configurar las variables de entorno comunes a todos sus bots
touch .env
Vía nano modifica el contenido del .env con el siguiente contenido.
MONGO_HOST=telegram-mongo
MONGO_PORT=27017
Esto es necesario para configurar una base de datos MongoDB para almacenar las conversaciones.
Cree otro archivo .env específico para que un bot configure las variables de entorno
touch ./src/telegram_llm_bot/bots/base_chatbot/.env
Vía nano modifica el contenido del .env con el siguiente contenido.
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 es el token que recibimos anteriormente de BotFather.
BEAM_TOKEN : en Claves API en el panel de la aplicación Beam, puede generar un token Beam.
BEAM_URL se obtiene de la descripción general de la aplicación donde puede hacer clic en Call API y allí puede encontrar fácilmente la URL
Finalmente podemos usar Docker Compose para crear imágenes y ejecutar los contenedores.
Instale Docker y Docker Compose. Aquí está la guía oficial:
Instalar Docker Engine en Ubuntu
Construya, cree e inicie los contenedores:
sudo docker compose up -d --build
¡Hemos terminado aquí!
Las indicaciones del sistema están contenidas en config.yml .
¡Estás listo para charlar!