2023/01/30

Discord上でChatGPTをPipeDreamで動かす方法

巷で話題のChatGPTをDiscord Botで動かすメモです。

こんな感じになります。

管理者権限を持つ任意のチャンネルに投稿されたメッセージに返信してくれます。

他サイトではmakeというWebサービスを使っていましたが、15分に1度しか実行してくれません。今回の方法では1日に330回実行できるので、cronで任意の時間に割り振ることができます。(2023/01/30現在)

例 12:00 PM ~ 2:59 AMまでの間に3分置きにプログラムを実行する。


準備するもの

  • PipeDreamのアカウント
  • OpenAIのアカウント
  • 管理者権限を持つDiscordサーバー
以下手順です。
  1. PipeDreamのアカウントを作成。
    https://pipedream.com

  2. Workflowからnew+をクリック。


  3. Discordにメッセージが投稿されたら反応するようにします。
    triggerに「Discord Bot」>「New Message in Channel」を選択。
    チャンネルを新規に作成して(例:chatgpt)、適当にメッセージを投稿しておきましょう。
    このサイトは開いたままにしておきます。

  4. DiscordのDeveloperサイトにアクセスし、Botを作成します。
    ログインしたらNew Applicationボタンをクリックし、名前を入力&ポリシーに同意をチェックしたらCreateボタンをクリック。


  5. 作成したら、左のメニューからBotをクリックしてAdd Botボタンをクリック。

    Yes,do it!をクリック。

    OAuth2 > URL GeneratorからScopesを「bot」、BOT PERMISSIONSを「Administrator」にしましょう。(面倒なので一括にしましたが、個別に設定したほうがいいかも)

    画面下部に表示されるGENERATED URLをコピーしてブラウザに貼り付けて、実装したいDiscordサーバーに追加しましょう。

    次に、左メニューからBotを選択し、好きな画像と名前をつけたらReset Tokenをクリック。Yes,do it!をクリックすると英数字が表示されるので、コピーしておきましょう。この英数字は再表示できないので注意。


    (画像は伏せています)

  6. PipeDreamのサイトに戻り、Discord Bot AcountからConnect new accountをクリック。手順5で取得したbot tokenを入力しましょう。NicknameはどちらでもOK。


  7. Guildを追加したDiscordサーバー、Channelsは先程作成したチャンネルを設定。

  8. TimerはIntervalかCRONにしましょう。
    Intervalにする場合は、24h × 60min / 330回 = 4.36min なので5分以上にしましょう。5分を下回ると毎日、回数制限に関するメールが来ます。
    CRONにする場合、AM12時~AM2時の間に3分おきで実行するには、「*/3 12-2 * * *」を設定しましょう。

  9. 次に、追加したBotが回答したメッセージに反応しないためにフィルターを作成します。
    Create sourceをクリックして、下のプラスボタンをクリック。
    「Filter」と検索して、「End execution if a condition is met」をクリック。

    Initial valueに「{{steps.trigger.event.author.username}}」を入力。
    Conditionは「[Text] Contains」を選択。
    Second ValueにBot名を入力。
    Case sensitiveは「FALSE」を選択。

  10. 次に肝心のChatGPT部分を実装します。
    フィルターを作り終えたら、下のプラスボタンから「OpenAI」と検索し、「Send Prompt」を選択してください。

    OpenAI Accountから、Connect new accountをクリックします。
    次に、https://beta.openai.com/からアカウントを作成しましょう。
    作成したら、https://beta.openai.com/account/api-keysにアクセスしてAPIキーを発行して、api_keyに入力してください。

    Model IDは「text-davinci-003」を選択。
    Promptは「「{{steps.trigger.event.author.username}}」さんからの「{{steps.trigger.event.content}}」という質問に対して、語尾は「~だぜ」「~なんだぜ」にしてください。回答内容は「」で囲まないでください。」のように、回答のやり方を指定してください。
    Max Tokensは2000を選択。

  11. 次に生成したメッセージをDiscord Botを介してチャンネルに投稿する機能を実装します。
    下のプラスから「Discord」と検索し、Discord Botをクリック。
    Discord Bot Accountは作成したBotを選択。
    GuildはDiscordサーバーを選択。
    Messageは「{{steps.send_prompt.$return_value.choices[0].text}}」を入力。
    Channelは前の手順で指定したチャンネルを選択。





    作成したら、Testをクリックして正常に動作したら、Deployをクリック。

    以上で終了です。指定した時間間隔でBotがメッセージを拾ってChatGPTが返信してくれます。

0 件のコメント:

コメントを投稿