Slackでチャットbotをつくる方法
Slackでチャットbot
Discordを使うことが多かったので、Discordでチャットアプリをつくっていたのですが、Slackを使う機会が最近増えてきたので、Slackでチャットbotを作ってみました。
Slackは色々な使い方ができる分、設定が多くて結構ハマったので、やり方をメモしておきます。個人的メモなので、自分の使い方に特化していることはご承知おきください。
作ったSlackのチャットボットは以下のGitHubリポジトリに格納しました。
なお、botとインタラクション不要で、単純にSlackの特定のチャンネルにメッセージをおくるだけなら、Webhookを使うのが簡単なので、そちらをオススメします。
OpenAIの初期登録
Webで調べて実施してください(さらなる手抜き)。ChatGPT以外の大規模言語モデル(LLM)を使いたい場合は登録不要です(というかこの記事が不要でしょう)。
Open AI Keyを取得しましょう。
Slackの設定
Slackの初期登録やSlackアプリの導入の説明は割愛します。よしなにしてください(いきなりの手抜き)。ある程度Slackは使ったことある人前提となります。
Slackを登録したら、以下のサイトでSlackのアプリをつくれます。「Create New App」からSlackアプリを作りましょう。
botを作るSlackの設定も色々あるのですが、今回は比較的簡単かつ高セキュリティなソケットモードを使います。ngrokでトンネル掘ったりしなくて使えて便利です。
上記のソケットモードも含めて、Slackのアプリは設定項目が多くて憤死しそうになりますが、マニフェストファイルという設定ファイルがあります。今回はこれを読み込んで設定します。
「Features → App Manifest」でJSONやYAMLファイルで設定をテキスト形式で扱えます。
Slackでうまく動かないとき、設定が間違っているのか、アプリが間違っているのか、はたまた両方間違っているのかを切り分けるために重要ですね。今回使ったSlackのマニフェストは以下です。
Slackアプリの「Features → App Manifest」のところで、マニフェストをコピペしましょう。
マニフェストをコピーした後は、Basic Informationの「Generate Token and Scopes」をクリックしてから、以下のとおりToken Nameを入力して「connections:write」を設定してからGenerateをクリックして、APP LevelのTokenを取得します。
続けて、OAuth & Permissionsで「Install to Workspace」で動かしたいワークスペースにBotをインストールしてから「Bot User OAuth Token」を取得します。
BotのIDはSlackアプリのチャンネルでbotを招待して、botのプロフィールから「メンバーIDをコピー」を実施しましょう。
最後にsetting.sh
に今まで得た必要な情報を記載しましょう。
Botアプリ
ソフトとしては、PythonとBOLTというSlackアプリに対応したフレームワークを使用します。
以下のREADMEの通り設定してください。
Dockerを準備していますので、MacでもLinuxでも動きます。家のPCでも、AWSでも簡単に動かせます。Devcontainerも準備しているので、VS Codeでの開発もラクラクです。
AWSの構築に関しては、この本がまとまっていて非常に分かりやすかったです。
まとめ
チャットボット、ChatGPTのおかげで、ちょっとしたものはサクッとできるのがよいですね。SlackとLLMは非常に相性良いです。色々実験してみたいなと思っています。
Slackも最初は複雑ですが、一回ベースを作り上げて開通してしまえば、色々できること増えていくのかな?と思っています。
参考リンク
関連記事
Discussion