これは、LLM (つまり、llama2-chat、llama2-chat-32k、vicuna) を利用した Telegram Bot を構築する方法に関するガイドです。ボットは無料枠の EC2 インスタンスでホストされ、llm 推論はサーバーレス REST API として Beam Cloud でホストされ、最初の 10 時間のコンピューティングは無料です。全体としては非常に遅いですが、これは単なる出発点にすぎません。
このガイドに従って、Python Telegram ボットを構築できます。
Python を使用して Telegram ボットを作成する方法
ここでは主な手順を説明します。
Telegram でユーザー名を検索することで、ボットとの会話を開始できるようになりました。
LLM 推論のホストに関して、現時点で私が見つけた最良のオプションは Beam Cloud です。コンピューティング価格は最も安価で、優れた GPU による 10 時間の無料コンピューティングを提供します。無料のストレージを提供しており、非常に高く評価されています。
チャットボットはlangchainとhuggingfaceを使用して構築されています。したがって、Llama 2 ファミリのモデルを使用したい場合は、モデルへのアクセスを必要とする必要があります。やり方はとても簡単で、リクエストの承認も非常に迅速です。
TODO いくつかのソースを使用して langchain と HF をまとめました。できるだけ早く追加します。
ゲート付きモデルを使用したい場合は、ハグ顔トークンを設定する必要があります。これはコードに組み込まれているので、数日以内に修正します。
これはトークンを生成するためのガイドです。
HuggingFace ユーザーアクセストークン
アカウントを作成したら、支払い方法は必要ありません。ダッシュボードに移動し、右側のメニューの [設定] タブでシークレットを見つけることができます。ハグ顔トークンを必要とするラマ 2 のようなモデルを使用している場合は、ハグ顔トークンを使用してHF_TOKEN変数を設定する必要があります。
そうすれば、すべてをローカルで行うことができます。 lm サブディレクトリに移動します。
cd ./src/telegram_llm_bot/shared/llm/beam
Beam インストール ガイド「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 経由でインスタンスにリモート接続するために使用するキー ペアを忘れずに作成する必要があります。
OSとしてUbuntuを設定することをお勧めします。
キーペアを設定すると、.pem が自動的にダウンロードされます。
これで、ssh を使用してコマンドライン経由で ec2 インスタンスに接続できるようになります。
ssh -i " {filename}.pem " ubuntu@{address}.{region}.compute.amazonaws.com
このリポジトリのクローンを ec2 インスタンスに作成します。必要なのは bot フォルダーのみで、残りも必要なので、将来的には残りのフォルダーから分離することになるでしょう。今のところ、これは大きな問題ではありません。
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はアプリの概要から取得され、[API を呼び出す] をクリックすると、URL を簡単に見つけることができます。
ついに docker compose を使用してイメージを構築し、コンテナーを実行できるようになります。
Docker と Docker Compose をインストールします。公式ガイドは次のとおりです。
Ubuntu に Docker エンジンをインストールする
コンテナを構築、作成、起動します。
sudo docker compose up -d --build
これで終わりです!
システム プロンプトはconfig.ymlに含まれています。
チャットする準備ができました。