lapis

lapis

理解以真实为本,但真实本身不会自动呈现

自分のChatgpt Telegramボットを展開する

自分の Chatgpt Telegram ボットをデプロイする#

date: 2023 年 3 月 24 日
slug: 19
status: 公開
tags: 技術
type: 投稿

オープンソースプロジェクトのアドレス:リンクcloudflare workers に基づいて開発された telegram 対話ボットで、実際の体験は良好です。無料で使いやすいものは誰もが好きですよね。

前期準備#

1. tg ボットの作成#

BotFather で新しい telegram ボットを作成し、Token を取得してボットの名前やアイコンをカスタマイズします;

  • Telegram を開いて BotFather に /start コマンドを送信します
  • /newbot コマンドを送信し、ボットに名前を付けます
  • ボットにユニークなユーザー名を付けます
  • BotFather が Token を生成しますので、コピーして保存しておきます。後で Cloudflare Workers の設定でこの Token を TELEGRAM_TOKEN 変数に入力します
  • Telegram で BotFather を見つけて /setcommands を送信し、自分のボットを見つけて new - 新しい対話を開始します

2. OpenAI アカウントの登録と API Key の作成#

openai.com でアカウントを登録し、右上のアイコンをクリックして個人設定画面に入り、API Keys で新しい API Key を作成します。後でこれを API_KEY に入力します。

デプロイ#

1. Workers のデプロイ#

  • Cloudflare Workers に登録します
  • Create a Worker をクリックします
  • コードをエディタにコピーして保存します

2. 環境変数の設定#

Setting-Variables-Environment Variables を開き、変数を追加します:

KEY説明デフォルト値特殊説明
API_KEYOpenAI API Keynull
TELEGRAM_AVAILABLE_TOKENS複数の Telegram Bot Token をサポートnull複数の Token は,で区切ります
CHAT_WHITE_LISTチャット ID のホワイトリストnull複数の ID は,で区切ります。ID がわからない場合は、ボットと一言話すと返ってきます
I_AM_A_GENEROUS_PERSONホワイトリストを無効にし、全員のアクセスを許可false多くの人がホワイトリストを設定したくない、または ID の取得方法がわからないため、このオプションを設定すると全員のアクセスが許可されます。値が true のときに有効です
AUTO_TRIM_HISTORY自動的に履歴をクリアtrue4096 文字制限を避けるために、メッセージを削減します
MAX_HISTORY_LENGTH最大履歴長20AUTO_TRIM_HISTORY が有効な場合、4096 文字制限を避けるためにメッセージを削減します
CHAT_MODELOpenAI モデルの選択gpt-3.5-turbo
SYSTEM_INIT_MESSAGEシステム初期化メッセージあなたは頼りになる助手ですデフォルトのボット設定
SYSTEM_INIT_MESSAGE_ROLEシステム初期化メッセージの役割systemデフォルトのボット設定
ENABLE_USAGE_STATISTICS使用統計を有効にするfalse有効にすると、API を呼び出すたびに KV に記録され、/usage で確認できます
HIDE_COMMAND_BUTTONSコマンドボタンを隠すnull隠したいボタンをカンマで区切って入力します /start,/system、スラッシュを忘れずに。変更後は再度 init が必要です
DEBUG_MODEデバッグモードfalse現在、最新のメッセージを KV に保存してデバッグを容易にします

3. KV データのバインド#

(Settings-Variables-KV Namespace Bindings) で、名前を DATABASE に設定します。

  • 右上の Create a Namespace をクリックします
  • 名前を DATABASE に設定します
  • Cloudflare Workers を開いて自分の Workers をクリックします
  • 右上の Setting -> Variables をクリックします
  • KV Namespace Bindings で Edit variables をクリックします
  • Add variable をクリックします
  • 名前を DATABASE に設定し、先ほど作成した KV データを選択します

4. 実行#

https://your_workers_name.your_workers_subdomain.workers.dev/init にアクセスして telegram をバインドし、新しい対話を開始します。/new コマンドを使用して開始し、その後は毎回チャットのコンテキストが ChatGPT に送信されます。

実行後のユーザー設定#

各ユーザーのカスタム設定は、Telegram でメッセージを送信することでのみ変更できます。メッセージ形式は/setenv KEY=VALUEです。

KEY説明
SYSTEM_INIT_MESSAGEシステム初期化パラメータ。設定後は新しいセッションを開始しても保持され、毎回デバッグする必要はありません/setenv SYSTEM_INIT_MESSAGE = 今からあなたは猫娘です。すべての文の最後に「にゃ」を付けてください。
OPENAI_API_EXTRA_PARAMSOpenAI API の追加パラメータ。設定後、API を呼び出すたびにこれが含まれ、温度などのパラメータを調整できます/setenv OPENAI_API_EXTRA_PARAMS={"temperature": 0.5} 毎回の変更は完全な JSON でなければなりません
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。