💬

ChatGPTをDiscordに導入する方法をChatGPTに聞いてみた

2023/02/08に公開

経緯について

最近ニュースでもよく聞くようになったOpenAI社のChatGPTですが、ふとDiscordで使えたら便利だなと思い、この記事を書き始めました。プログラムも作れると聞いていたので、プログラムも作成してもらい、指示通り作りました。また、個人的な理由ですが、Discordのbotを作るたびに作りかたを調べているので、自分でブログに記録しておきたいというのも経緯の一つです。

そもそもChatGPTとは

せっかくなのでChatGPTに「ChatGPTの特徴を教えて」と聞いてみました。
https://chat.openai.com/chat

ChatGPTは、OpenAIによってトレーニングされた大型の自然言語生成モデルです。特徴として以下が挙げられます。

  1. 膨大なデータセットに基づいてトレーニングされているため、人間のように自然なテキストを生成できます。
  2. 複数のタスクに対応する能力があり、Q&A、文書生成、文章要約などの様々なタスクで使用することができます。
  3. 高い精度とリアルタイム性能を有しています。
  4. APIを通じて利用することができるため、開発者は自分のアプリケーションやサービスで使用することができます。

このように自然な日本語で回答をしてくれました。4番目にあるようにChatGPTはAPIが公開されており、独自のアプリケーションやサービスで使用することができるのです。実際このChatGPTを用いて自動返信に使っている企業もいるみたいです。以降、Discordのbotを作成する手順を、ChatGPTの答えを基に書いていきます。

導入手順

実行した環境を記載します。

バージョン
OS Ubuntu 22.04.1 LTS
Python 3.10.6
discord,py 2.1.0
OpenAI 0.26.4

導入手順を聞いてみると以下の通り返答がありました。

ChatGPTをDiscordに導入するには以下の手順があります。

  1. Discord Botアカウントを作成する
  2. OpenAI API Keyを取得する
  3. DiscordのBotを開発するためのライブラリをインストールする
  4. Botのコードを作成し、OpenAI API Keyを使用してChatGPTモデルにアクセスする
  5. BotをDiscordサーバーに導入して動作を確認する

詳細については、関連のオンライン資源やチュートリアルを参照することをお勧めします。

ChatGPTの指示通りに進めていきます。

1. Discord Botアカウントを作成する

そのままですが、Discordのbotアカウントを作成します。Doscordの開発者ページにアクセスし、New Applicationを選択し名前を入力します。
https://discord.com/developers/applications
New Applicationボタン
次に左からbotという項目を選択し、Privileged Gateway Intentsのチェックマークをすべてチェックにします。
チェックマークについて

2. OpenAI API Keyを取得する

ここではOpenAIのAPIを取得します。OpenAIのアカウントを持っていない場合は、作成しましょう。
以下のサイトでAPIの取得をします。
https://platform.openai.com/account/api-keys

APIの取得

3. DiscordのBotを開発するためのライブラリをインストールする

今回必要となるライブラリは discord,py、OpenAI APIクライアントライブラリをpipを用いて入れます。

pip install discord.py
pip install openai

4. Botのコードを作成し、OpenAI API Keyを使用してChatGPTモデルにアクセスする

Pythonのプログラムを作成します。こちらもOpenAIに作成してもらいました。

main.py
import discord
import openai

# Discord Botのトークンを設定
TOKEN = 'YOUR_BOT_TOKEN'

# OpenAI APIキーを設定
openai.api_key = "YOUR_OPENAI_API_KEY"

# Discord Botのクライアントを作成
client = discord.Client()

# Botが起動したときの処理
@client.event
async def on_ready():
  print(f'{client.user} has connected to Discord!')

# メッセージが送信されたときの処理
@client.event
async def on_message(message):
  if message.author == client.user:
    return

  # OpenAI APIを使用して、メッセージに対する応答を生成する
  response = openai.Completion.create(
    engine="text-davinci-002",
    prompt=f"{message.content}",
    max_tokens=1024,
    n=1,
    stop=None,
    temperature=0.5,
  ).get("choices")[0].text

  # 応答を送信する
  await message.channel.send(response)

# Discord Botを起動する
client.run(TOKEN)

しかし、トークンやAPIキーを入れても以下のようなエラーが出て動作しませんでした。

TypeError: __init__() missing 1 required keyword-only argument: ‘intents’

これはintentsが設定されていないというエラーで、2020年の10月から設定が必須になったようです。
そのため以下のように修正しました。

main.py
# Discord Botのクライアントを作成
- client = discord.Client()
+ client = discord.Client(intents=discord.Intents.all())

以下のサイトを参考にさせていただきました。
https://zenn.dev/disneyresidents/articles/discordintents

5. BotをDiscordサーバーに導入して動作を確認する

最後にDiscordサーバにbotを追加します。
1.Discord Botアカウントを作成する でアクセスしたページの左側にあるOAuth2からURL Generatorを選択します。SCOPE(スコープ)はbotを、Bot Permissions(botの権限)は Read Messages/View ChannelsSend Messages にチェックを入れ、下に表示されるURLにアクセスします。
招待URLの生成

あとはサーバ側でPythonファイルを実行するだけで動作させることができます。

動作させた感想

実際に質問をすると返してくれることを確認しました。
動作結果

ちなみに、Web版は無料で使えますがこちらは有料で、送信したテキストの長さによって課金されます。上限を設定しておかないととんでもない額を請求されそうで怖いです。金欠なので毎月$1.00を上限にしています。すぐに使い切ってしまいそう。
ケチな様子

GitHubで編集を提案

Discussion