前回、 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 を押します。
メニューが開いたら、from scratchのの方を選択します。
これで設定するappが作成されました。
⒈⒉設定しながら必要な情報を得る
まず、はじめに開くBasic Informationのページで、Signing Secretを取得してメモします。
次に左のメニューからOAuth & Permissionsを開いて、Scopesを設定します。
今回は、chat:writeとhistory系のものを入れます。
設定したら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を押して登録します。
これで、slackからのイベントを受け取れるようになります。
最後に、上に表示される黄色のポップアップかOAuth & Permissionsからアプリをワークスペースに再インストールしたらslackの設定は完了です!
⒉コードを作成する
まず、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()
実行後、作成したアプリをインストールしたワークスペースにテストチャンネルを作成して、アプリをインバイトして、そのチャンネルで、何かメッセージを送信してみます。
以下のようになったら、成功です!
最後に
今回は、slackの設定からコードの作成までほぼ全てChatGPTを頼りに行いました。
ChatGPTの登場で世界が変わるのを強く感じます。
また何か作ってみます。