ハカセノオト

moon indicating dark mode
sun indicating light mode

OpenAI GPT ChatAPI を使って Slack チャットボットを作成する

September 18, 2023

OpenAI Chat API を利用したシンプルな Slack Chat Bot を作成しましたのでご紹介します。

使い方

最初にどのようなものを作ったのかを記載します(デモ)。

ボットを追加したパブリックチャンネルまたはプライベートチャンネルでは、ボットに対してメンションすることで、質問が可能です。

screenshot

ボットとのダイレクトメッセージ (DM) でも質問が可能です。

DM の場合は、メンションは不要です。

screenshot

質問したスレッドに連続して質問することで、ボットが、そのスレッドの一連の内容を把握して対話を続けることができます。

(例えば、一連のスレッドの要約や しりとり ができます。)

アプリの概要

以下のリポジトリにて公開しているものです。

https://github.com/hnishi/simple-ai-slack-bot

Slack の Python SDK である Bolt を利用して作成しています。

導入に必要なもの

  • OpenAI API の利用登録
    • API の利用は有料のため、登録が必要になります
  • アプリを動かす PC (サーバー)
    • Docker もしくは Python が動かせること
  • アプリを導入する Slack ワークスペース

導入方法

Slack アプリの作成

Slack ワークスペースのアプリの管理画面から、新規アプリを作成します。

マニュアル を見ながら、以下の一連の設定を有効にします。

  1. Socket Mode (ソケットモード)

    • On
  2. Bot Token Scopes (ボットトークンスコープ)

    • app_mentions:read
    • chat:write
    • im:history
    • im:read
    • im:write
  3. App Token Scopes (アプリトークンスコープ)

    • connections:write
  4. Event Subscriptions (Subscribe to bot events) (イベントサブスクリプション)

    • app_mentions:read
    • message.im
  5. Messages Tab (メッセージタブ)

    • App Home —> Show Tabs —> Messages Tab
    • Check Allow users to send Slash commands and messages from the messages tab

ソースコードのダウンロード

GitHub からソースコードをダウンロードします。

git clone https://github.com/hnishi/simple-ai-slack-bot.git

設定ファイルを作成する

ダウンロードしたソースコードの中の .env.sample をコピーして .env ファイルを作成します。

ここに、OpenAI API Key や Slack ボットトークンなどを設定します。

Slack のトークンは、先ほどの Slack アプリの設定画面からコピーしてください。

OpenAI の API キーと オーガナイゼーション ID は OpenAI API の管理画面 から取得します。

SLACK_BOT_TOKEN=xoxb-token // Slack ボットトークン
SLACK_APP_TOKEN=xapp-token // Slack アプリトークン
OPENAI_API_KEY=sk-token // OpenAI API キー
OPENAI_ORGANIZATION=org-token // OpenAI オーガナイゼーション ID (行を削除で省略可能)
MODEL_NAME=gpt-3.5-turbo // モデル名

モデル名は、OpenAI のドキュメント に利用可能なモデルの記載がありますが、gpt-3.5-turbo のままで問題ないです。

アプリを起動する

Docker を使う場合

Docker を利用することで、Python や必要な依存ライブラリのインストールが不要になります。

以下のように Docker コンテナを起動します。

docker compose up

しばらく待つと、アプリが起動するため、Slack でボットと対話が可能になります。

Docker を利用しない場合

自前の Python 実行環境を利用する場合は、以下のような手順を参考に動かします。

依存パッケージは Poetry を利用しています。

Poetry のインストール方法は、以下のページを参考にしてください。

https://python-poetry.org/docs/#installation

以下のように、必要なパッケージをインストールします。

poetry install --no-root

アプリを動かす場合は、以下のコマンドを打ちます。

poetry run python app.py

まとめ

以上、シンプルな Slack チャットボットの利用方法でした。

要望やコメントなどあれば、以下のリポジトリの issues によろしくお願いします!

https://github.com/hnishi/simple-ai-slack-bot/issues

参考資料


hnishi

hnishi のブログ

ソフトウェアエンジニアです。
誰かの役に立つかもしれないと思って、調べたこと、勉強したこと、躓いた箇所などを記事にしています。
問い合わせはこちらからお願いします。