이것은 LLM(예: llama2-chat, llama2-chat-32k, vicuna)이 지원하는 Telegram Bot을 구축하는 방법에 대한 가이드입니다. 봇은 무료 등급 EC2 인스턴스에서 호스팅되고, llm 추론은 Beam Cloud에서 서버리스 REST API로 호스팅되며, 처음 10시간 동안 컴퓨팅이 무료로 제공됩니다. 모든 것이 상당히 느리지만 이것은 단지 시작점일 뿐입니다.
이 가이드에 따라 Python Telegram Bot을 구축할 수 있습니다.
Python을 사용하여 텔레그램 봇을 만드는 방법
여기서는 주요 단계를 알려드리겠습니다.
이제 Telegram에서 사용자 이름을 검색하여 봇과 대화를 시작할 수 있습니다.
LLM 추론 호스팅과 관련하여 현재 제가 찾은 가장 좋은 옵션은 Beam Cloud입니다. 컴퓨팅 가격은 가장 저렴하며 우수한 GPU를 사용하여 10시간의 무료 컴퓨팅을 제공합니다. 무료 저장 공간을 제공하는 것은 매우 높이 평가됩니다.
챗봇은 langchain과 Huggingface를 사용하여 구축되었습니다. 따라서 Llama 2 모델 제품군을 사용하려면 해당 모델에 대한 액세스 권한이 필요합니다. 이는 매우 쉽고 요청 승인도 매우 빠릅니다.
TODO 저는 langchain과 HF를 함께 사용하기 위해 몇 가지 소스를 사용했습니다. 최대한 빨리 추가하겠습니다.
게이트 모델을 사용하려면 포옹하는 얼굴 토큰을 설정해야 합니다. 이는 코드에 내장되어 있으므로 며칠 내에 수정하겠습니다.
토큰을 생성하는 방법은 다음과 같습니다.
HuggingFace 사용자 액세스 토큰
계정을 생성한 후에는 결제 방법이 필요하지 않습니다. 대시보드로 이동하여 오른쪽 메뉴의 설정 탭에서 비밀을 찾을 수 있습니다. 포옹하는 얼굴 토큰이 필요한 Lama 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를 OS로 설정하는 것이 좋습니다.
키 쌍을 설정하면 .pem이 자동으로 다운로드됩니다.
이제 SSH를 사용하여 명령줄을 통해 ec2 인스턴스에 연결할 수 있습니다.
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 : Beam 앱 대시보드의 API 키 아래에서 Beam 토큰을 생성할 수 있습니다.
BEAM_URL 은 Call API를 클릭할 수 있는 앱 개요에서 가져오며 거기서 URL을 쉽게 찾을 수 있습니다.
마침내 docker compose를 사용하여 이미지를 빌드하고 컨테이너를 실행할 수 있습니다.
Docker 및 Docker Compose를 설치합니다. 공식 가이드는 다음과 같습니다.
Ubuntu에 Docker 엔진 설치
컨테이너를 빌드, 생성 및 시작합니다.
sudo docker compose up -d --build
이제 끝났습니다!
시스템 프롬프트는 config.yml 에 포함되어 있습니다.
채팅할 준비가 되었습니다!