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がアクセスできるチャンネルで、以下のパーミッションを許可していることを確認してください。
この記事が気に入ったらサポートをしてみませんか?