💬

ChatGPTを使ったSlack botを作る

2023/11/01に公開

はじめに

ChatGPTは、OpenAIによって開発された大規模言語モデルで、カスタマーサービス・マーケティング・教育などの活用先があります。今回はそんなChatGPTをSlack上で、質問・翻訳・要約などの用途に使いたいと思い、botを作って試してみました。Slackに限らず、ChatGPTをコミュニケーションツールで使うメリットは、ナレッジが自動的に共有されることにあると思います。また、問い合わせ対応や翻訳などを自動化することで生産性の向上にも繋がるかもしれません。

背景

  • ChatGPTを個人利用するだけではナレッジが共有されにくいため、Slack上で使いたい
  • 多言語コミュニケーションで翻訳をするのに時間がかかるため、自動化したい
  • 長いスレッドを全て読むのには時間がかかるため、要約をして効率化をしたい
  • コミュニケーションツールにおけるChatGPTの活用法を見出したい

ゴール

  • SlackでChatGPTのbotが使えるようになっている
    • botに質問することができる
    • botに翻訳させることができる
    • botにスレッド内の文脈を理解した返答をさせることが出来る
    • botにスレッドを要約させる事が出来る

対象読者

  • bash, git, dockerの基本的なコマンドが分かる方
  • 扱う内容:botの導入方法と使用例
  • 扱わない内容:botの実装内容(Python)について

動作環境

デバイス

項目 詳細
プロセッサ 11th Gen Intel(R) Core(TM) i5-1135G7 @ 2.40GHz 2.42 GHz
実装 RAM 16.0 GB (15.7 GB 使用可能)
システムの種類 64 ビット オペレーティング システム、x64 ベース プロセッサ

OS

エディション Windows 10 Business
バージョン 21H2
インストール日 ‎2022/‎07/‎25
OS ビルド 19044.2965
エクスペリエンス Windows Feature Experience Pack 1000.19041.1000.0

WSL (Windows Subsystem for Linux)

Distributor ID Ubuntu
Description Ubuntu 22.04.2 LTS
Release 22.04
Codename jammy

Docker

Client Docker Engine - Community
Version 23.0.1
API version 1.42

WSLにDockerをインストールする方法は以下を参考にしてください。
https://zenn.dev/ktsu/articles/56c2c9732af3be

個人利用であれば、Docker Desktopを利用する方が楽です。
https://www.docker.com/products/docker-desktop/

手順

  • ChatGPT-in-Slackをcloneする
  • slack apiでAppを作成する
  • OpenAI API keyを作る
  • 環境変数を設定する
  • dockerで実行する
  • 動作を確認する

ChatGPT-in-Slackをcloneする

Slackのエンジニアである瀬良さんが公開しているChatGPT-in-Slackというリポジトリをcloneして使用します。このリポジトリを使用すると、SlackのチャンネルやDMにChatGPTを組み込んで、テキストの生成や言語の翻訳などの機能を利用することができます。

bash
git clone https://github.com/seratch/ChatGPT-in-Slack.git

https://github.com/seratch/ChatGPT-in-Slack

ここからは基本的にREADME.mdの手順に従っていきます。
まずはbotの動作に必要なトークンやKeyをWebサイトから取得していきます。

slack apiでAppを作成する

  • slack apiに接続する
  • Create New AppからAppを作成する
  • From an app manifestを選択する
  • ワークスペースを選択する
  • YAMLを選択して、manifest-dev.ymlをコピペする
  • 作成したアプリを開いて、App-Level TokensGenerate Token and Scopesからトークンを生成する
  • .envという名前でテキストファイルを作成して、生成したトークンを追加する
.env
SLACK_APP_TOKEN=xapp-…
  • slack apiに戻る
  • Your App Configuration TokensGenerate Tokenからトークンを生成する
  • 生成したトークンを.envに追加する
.env
SLACK_BOT_TOKEN=xoxb-…

OpenAI API keyを作る

.env
OPENAI_API_KEY=sk-…

環境変数を設定する

最終的な.envは以下のようになります。

.env
SLACK_APP_TOKEN=xapp-…
SLACK_BOT_TOKEN=xoxb-…
OPENAI_API_KEY=sk-…

これらをまとめて環境変数に設定します。

bash
export $(cat .env| grep -v "#" | xargs)

dockerで実行する

Dockerfileからイメージを構築します。

bash
docker build . -t your-repo/chat-gpt-in-slack

新しいコンテナを起動してPyhonスクリプトを実行します。

bash
docker run -e SLACK_APP_TOKEN=$SLACK_APP_TOKEN -e SLACK_BOT_TOKEN=$SLACK_BOT_TOKEN -e OPENAI_API_KEY=$OPENAI_API_KEY -it your-repo/chat-gpt-in-slack

動作を確認する

botが起動したので動作を確認します。任意のチャンネルやDMで、botをメンションしてテキストを打ちます。質問・翻訳・要約の3つを試してみました。

スレッド内であればメンション無しでも反応するようです。

おわりに

今回はSlackで使えるChatGPTのbotを作って、質問・翻訳・要約の3つを試してみました。どれも問題なく使えそうでした。今後は規定などを学習させて、問い合わせに対応できるbotを作るのも面白そうですね。お疲れ様でした。

参考

https://openai.com/blog/chatgpt
https://slack.com/
https://www.docker.com/products/docker-desktop/
https://github.com/seratch/ChatGPT-in-Slack
https://api.slack.com/apps
https://platform.openai.com/account/billing/payment-methods
https://beta.openai.com/account/api-keys
https://docs.docker.jp/engine/reference/commandline

Discussion