LoginSignup
5
2

More than 1 year has passed since last update.

iPadでChatGPT APIを用いたSlack botを作成してみた。

Last updated at Posted at 2023-03-21

前回、 ChatGPT APIを用いたLINE botを思ったより簡単に作れたので、今回はChatGPT APIを用いたslack botを作成してみました。

私は自力でゼロからコードを書けないので、調べたり、ChatGPTやbingに教えてもらいながら製作するのですが、今回はあまり良い情報が見つからなかったので、ゼロから全てChatGPTにコードを書いてもらい、私が修正しています。

今回もGoogle Colabを使ってpythonでコードを書いています。

私が実際に行った製作プロセスとは異なりますが、Slack APIの設定をしてからコードを作成するという手順でプロセスを記載します。

⒈Slack APIを設定する

⒈⒈appを作成する

自分のワークスペースにログインした状態で、Slack APIのページにアクセスして、create an appを押します。
ページが開いたらcreate new app を押します。38BA7D06-8F25-4333-A5B5-91E08F9A3DBF.jpeg

メニューが開いたら、from scratchのの方を選択します。B67C091E-5086-497B-A768-FF6251EFC9BE.jpeg

アプリ名とアプリを使用するワークスペースを入力します。48A79AB9-ECD5-4D05-881B-3437293356EB.jpeg

これで設定するappが作成されました。

⒈⒉設定しながら必要な情報を得る

まず、はじめに開くBasic Informationのページで、Signing Secretを取得してメモします。21890052-D4B8-4399-84DA-2CDE3799B9A2.jpeg

次に左のメニューからOAuth & Permissionsを開いて、Scopesを設定します。
今回は、chat:writeとhistory系のものを入れます。A70D7EF3-8245-4B5E-ACFC-CF90D42AF1C1.jpeg

設定したらOAuth Tokens for Your Workspaceのところまで上にスクロールして、install to Workspace を押して、一度ワークスペースにインストールします。
インストールしたら、Bot User OAuth Tokenを入手可能になるので、入手してメモします。

ここまで終わったら左のメニューからSocket Modeを開いてEnable Socket Modeをオンにして、トークン名を設定して、Generateします。
Generateしたらトークンが発行されるので、メモします。
この設定を行うことでwebhookが不用になります。

トークンを取得したら、左のメニューからEvent Subscriptionsを開きます。
まず、Enable Eventsをオンにします。

オンにしたら、Subscribe to bot eventsを設定します。
今回はmessage 系のものを入れます。入れたら、右下のSave Changeを押して登録します。21DFD811-377C-48F7-8797-1E8EA59CBFB9.jpeg

これで、slackからのイベントを受け取れるようになります。

最後に、上に表示される黄色のポップアップかOAuth & Permissionsからアプリをワークスペースに再インストールしたらslackの設定は完了です!EF8490C7-208E-4E55-A9CC-A3F08E27392C.jpeg

⒉コードを作成する

まず、openaiとslack boltをインストールします。

!pip install --upgrade pip
!pip install setuptools wheel
!pip install openai

!pip install slack-bolt

次に必要なインポートと⒈⒉で取得したトークンなどを環境変数に入れる、openaiの APIキーの登録を行います。

import openai
from slack_bolt import App
from slack_bolt.adapter.socket_mode import SocketModeHandler
import os

#Bot User OAuth Token
os.environ["SLACK_BOT_TOKEN"] =  ""

#Signing Secret
os.environ["SLACK_SIGNING_SECRET"] = ""

#Token 
os.environ["SLACK_APP_TOKEN"] =  ""

#openaiの APIキー
openai_api_key = ""

次に下記のコードをコピペして、全てのコードを実行します。

app = App(
    token=os.environ.get("SLACK_BOT_TOKEN"),
    signing_secret=os.environ.get("SLACK_SIGNING_SECRET")
)

openai.api_key = openai_api_key
assist1 = ""

@app.event("message")
def handle_message(event, say):
    global assist1
    text = event["text"]
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[
            {"role": "system", "content": "好きな設定を書く。例:あなたは占い師です。"},
            {"role": "assistant", "content": assist1},
            {"role": "user", "content": text},
        ]
    )
    assist1 = response["choices"][0]["message"]["content"]  # assist1を更新
    say(assist1)

if __name__ == "__main__":
    handler = SocketModeHandler(app,app_token=os.environ.get("SLACK_APP_TOKEN"))
    handler.start()

実行後、作成したアプリをインストールしたワークスペースにテストチャンネルを作成して、アプリをインバイトして、そのチャンネルで、何かメッセージを送信してみます。
以下のようになったら、成功です!6D3D4AA1-D986-4FCC-8E14-91035A41D79F.jpeg

最後に

今回は、slackの設定からコードの作成までほぼ全てChatGPTを頼りに行いました。
ChatGPTの登場で世界が変わるのを強く感じます。
また何か作ってみます。

5
2
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2