ChatGPTを使ったSlack botを作る
はじめに
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をインストールする方法は以下を参考にしてください。
個人利用であれば、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を組み込んで、テキストの生成や言語の翻訳などの機能を利用することができます。
git clone https://github.com/seratch/ChatGPT-in-Slack.git
ここからは基本的にREADME.mdの手順に従っていきます。
まずはbotの動作に必要なトークンやKeyをWebサイトから取得していきます。
slack apiでAppを作成する
- slack apiに接続する
-
Create New App
からAppを作成する -
From an app manifest
を選択する - ワークスペースを選択する
- YAMLを選択して、manifest-dev.ymlをコピペする
- 作成したアプリを開いて、
App-Level Tokens
のGenerate Token and Scopes
からトークンを生成する -
.env
という名前でテキストファイルを作成して、生成したトークンを追加する
SLACK_APP_TOKEN=xapp-…
- slack apiに戻る
-
Your App Configuration Tokens
のGenerate Token
からトークンを生成する - 生成したトークンを
.env
に追加する
SLACK_BOT_TOKEN=xoxb-…
OpenAI API keyを作る
- https://platform.openai.com/account/billing/payment-methods に接続する
-
Add payment method
からクレジットカードを登録する - https://beta.openai.com/account/api-keys に接続する
-
Create new secret key
から作成する - 作成したkeyを
.env
に追加する
OPENAI_API_KEY=sk-…
環境変数を設定する
最終的な.env
は以下のようになります。
SLACK_APP_TOKEN=xapp-…
SLACK_BOT_TOKEN=xoxb-…
OPENAI_API_KEY=sk-…
これらをまとめて環境変数に設定します。
export $(cat .env| grep -v "#" | xargs)
dockerで実行する
Dockerfileからイメージを構築します。
docker build . -t your-repo/chat-gpt-in-slack
新しいコンテナを起動してPyhonスクリプトを実行します。
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を作るのも面白そうですね。お疲れ様でした。
参考
Discussion