DiscordにGPT-3によるChatAIを導入
はじめに
@yutakikuchi_です。
今日は自身が持つDiscord(Server)に対してGPT-3を組み込み、Chat形式でAIに問い合わせを行うものを作ります。私がDiscordとGPT-3を連携させた構成(Discord, Google App Engine, GPT-3 API)は下記のようになります。
私が運営している新しいフィットネスサービス「Do」のDiscordサーバーに 教えてAiくんというChannelにてGPT-3が利用できるようにしているので、もしよかったら試しに使ってみてください。ここではフィットネス・美容・健康に関する質問の投稿をOKとしています。
必要な作業内容は次のものになります。
Open AI
Discord Server, Discord Application
Discord Server
Discord Server ID取得
Discord Application
Bot token, client idを取得
Python Server
gpt-discord-botをGAEに設定、実行
設定手順1. Open AI
全体的な流れの目的として、gpt-discord-botの.envファイルに対して様々な値を書き込むために、その値を用意するための作業になります。
まずはOpenAI側からの手順を説明します。
GPT-3系のAIモデルをAPIとして利用するためには料金を払う必要があります。そのために下記リンクからクレジットカードなどの支払い方法で設定を済ませておく必要があります。
https://platform.openai.com/account/billing/overview
またGPT-3のAPIの利用者が個人の場合、万が一使いすぎて大きな課金が発生しないようにBillingのUsageに対してlimitを小さめに設定しておくと良いと思います。Hard limitがその金額に到達するとRequestをRejectするラインです。Soft limitは設定されたemail addressに通知が飛ぶ。
https://platform.openai.com/account/billing/limits
上の設定が完了したら、Open AIのAPIを利用するために下記のURLから「Create new secret key」ボタンを押下してkeyを発行します。発行したkey(①)は後ほど.envファイルに書き込むのでメモをしておきます。
https://platform.openai.com/account/api-keys
設定手順2. Discord Server
次にGTP-3と接続を行いたいDiscord Serverの情報を取得します。どのDiscord(Server)と接続すべきかの情報を.envファイルが必要とするため、その情報をDiscordアプリから取得します。Discord Serverのアイコンを右クリックすると「IDをコピー」というメニューが出てくるので、それをクリックしてDiscord ServerのID(②)をコピーします。IDをコピーメニューが出ない場合、はDiscord -> Preference -> 詳細設定 -> 開発者モードをON で表示されるようになります。
設定手順3. Discord Application(Bot)
https://discord.com/developers/applications
こちらのリンクからDiscordのChatBotとなるApplication情報を取得します。まだApplicationを作成していない場合はNew Applicationから作成します。DiscordのApplicationからBot tokenとApplication idの2点が必要になります。
BotのToken取得は Settings -> Bot -> Reset Tokenにて取得できるので、値をコピーします(③)。またApplication idはSettings -> General Information -> Application idの項目に表示されるので、同じように値をコピーします(④)。
またBotメニューの中でPublic botにするかどうかのメニューがあるのでこれをOffにし、Privileged Gateway IntentsについてはONにします。
設定手順4. gpt-discord-botをGoogle App Engineに反映
$ git clone https://github.com/openai/gpt-discord-bot.git
https://github.com/openai/gpt-discord-bot/blob/main/.env.example
githubからgpt-discord-botをcloneして、.env.exampleを.envにrenameして①〜④として取得した値をそれぞれ書き込んでいきます。
OPENAI_API_KEY=①
DISCORD_BOT_TOKEN=③
DISCORD_CLIENT_ID=④
ALLOWED_SERVER_IDS=②
SERVER_TO_MODERATION_CHANNEL=1:1
.envコードを修正したものとして、あとはGoogle App Engineとして実行するために、Google Cloud ConsoleのCloud shellなどにログインしてGoogle App Engineのインスタンスを起動しながら下記を実行します。実行するとDiscord Serverに対して認証を通すURLが発行されるので、そのURLを押下して認証させるだけになります。
$ pip install -r requirements.txt
$ python -m src.main &
Discordの実行画面
Discordのテキスト入力のformにて /chat コマンドをまずは入力し、その後にGPT-3に聞きたいことを投げかけるだけです。