見出し画像

GPT-3を使ったdiscord用のChatBot gpt-discord-bot を試す

GPT-3を使ったdiscord用のChatBot「gpt-discord-bot」を試したのでまとめました。

1. gpt-discord-bot

gpt-discord-bot」は、GPT-3 (text-davinci-003) を使ったdiscord用のChatBotのサンプルです。OpenAI APIの「completes API」で会話し、「moderations API」でフィルタリングします。「OpenAI Python Library」と「discord.py」を使用しています。

2. 特徴

「gpt-discord-bot」の特徴は、次のとおりです。

・/chat にmessage引数 (Botに渡す最初の会話を指定) 付きで呼ぶことで、discordのパブリックスレッドが開始されます。
・/chatで開始したスレッド内のすべてのユーザーメッセージに返信します。
・リクエスト毎にスレッド全体がモデルに渡されます。
・コンテキスト制限か、スレッドの最大メッセージ数に達すると、Botはスレッドを閉じます
・config.yaml で、Botの指示をカスタマイズできます。

3. セットアップ

セットアップ手順は、次のとおりです。

(1) 「.env.example」を「.env」にコピー。
以降の手順で、.env内の値を設定します。

・.env

OPENAI_API_KEY=x
DISCORD_BOT_TOKEN=x
DISCORD_CLIENT_ID=x

ALLOWED_SERVER_IDS=1
SERVER_TO_MODERATION_CHANNEL=1:1

(2) OpenAPIのサイトでAPIキーを取得し、「OPENAI_API_KEY」に設定。

(3) discordのサイトで独自のdiscordアプリケーションを作成し、以下を設定。
 (3a) 「Bot」タブで「Add Bot」をクリックし、「Reset Token」と「Copy」をクリックし、「DISCORD_BOT_TOKEN」に設定。
 (3b) Botを全員に表示しないように「Public Bot」を無効化し、「Privileged Gateway Intents」の「Message Content Intent」を有効化。
 (3c) 「OAuth2」タブで「Client ID」をコピーして、「DISCORD_CLIENT_ID」を設定。

(4) discordアプリで、Botを使用するサーバーのアイコンを右クリックし、「IDをコピー」(開発者モードの有効化が必要) をクリックして、サーバーIDを「ALLOWED_SERVER_IDS」に設定。
複数のサーバーを許可する場合は、「server_id_1,server_id_2」のようにIDを「,」で区切ります。

(5) 依存関係をインストールしてBotを実行。

$ pip install -r requirements.txt
$ python -m src.main

(6) コンソールに招待URLが表示されたら、コピーしてブラウザに貼り付け、Botをサーバーに追加。

(7) discordアプリで会話。

4. オプション設定

オプション設定は、次のとおりです。

(1) モデレーションメッセージが必要な場合は、送信する各サーバーのチャネルIDをコピーし、「SERVER_TO_MODERATION_CHANNEL」に設定。
書式「server_id:channel_id,server_id_2:channel_id_2」で設定します。

(2) Botのパーソナリティを変更したい場合は、「src/config.yaml」に移動して指示を編集。

(3) メッセージにフラグを付けたりブロックしたりするモデレーション設定を変更する場合は、「src/constants.py」の値を編集。
値が低いほど、トリガーされる可能性が低くなります。

(4) ChatBotの名前とプロフィールと会話例を設定する場合は、config.yamlを編集。

・config.yaml

name: Lenard
instructions: You're a regular Discord user. You talk casually, use emojis, and don't use capital letters. You talk in internet shorthand like np and lol and idk and nvm. You have many interests and love talking to people.
example_conversations:
  - messages:
    - user: bob
      text: how's it going today?
    - user: Lenard
      text: its going great, im watching youtube videos, hbu?
    - user: bob
      text: I'm doing great too!
    - user: Lenard
      text: cool cool
  - messages:
    - user: bob
      text: what's your favorite game?
    - user: Lenard
      text: im been playing a lot of the new pokemon game :D
    - user: bob
      text: me too!
  - messages:
    - user: bob
      text: have you been to the zoo?
    - user: Lenard
      text: i have! unfortunately it started raining so I left early
    - user: bob
      text: that sucks, I hope you get to go again soon

5. FAQ

Q. Botがコマンドに応答しないのはなぜですか?
A.
Botがアクセスできるチャンネルで、以下のパーミッションを許可していることを確認してください。

・メッセージを送信
・スレッドでメッセージを送信
・公開スレッドの作成
・メッセージの管理
・スレッドの管理
・メッセージ履歴を読む
・アプリコマンドを使う



この記事が気に入ったらサポートをしてみませんか?