あなただけの、PersonalAISlackBot
この Slack ボットは、websocket、非同期実行、OpenAI API を使用して質問に答えます。Slack で/pragin-ai コマンドを受信すると、そのコマンドテキストを OpenAI API に送信し、API の応答をユーザーに直接一時的なメッセージで送り返します。
/pragin-ai コマンドがどのチャンネルから発行されても、質問と回答はアプリケーションの次回の再起動まで、特定のユーザーにのみ特定のデバイスで可視化されます。これは、ログ記録されたり、チャンネル/履歴を汚染することがないため便利です。
ボットは slack_bolt ライブラリを使用して Slack で/pragin-ai コマンドを監視します。そのようなコマンドを受け取ると、コマンドテキストを handle_faq 関数に渡します。
handle_faq 関数はコマンドテキストを OpenAI API に送信し、応答を待ちます。これは、新しい OpenAI スレッドを作成し、そのスレッドにメッセージを送信してから、スレッドの応答を取得する ask_llm 関数を呼び出すことによって行われます。
handle_faq が OpenAI API の応答を受け取ると、その応答をユーザーに直接メッセージとして送信します。これは、slack_bolt ライブラリの chat_postEphemeral メソッドを使用する send_dm 関数を呼び出すことで行われます。
Slack でアプリとボットを設定する Slack のワークスペースでボットを設定するには、新しい Slack アプリを作成し、提供された slack_app_manifest.yaml ファイルを使用して設定する必要があります。以下の手順で行います:
-
Slack API ウェブサイトに行き、「Create New App」ボタンをクリックします。
-
ポップアップウィンドウで「From an app manifest」を選択します。
-
ボットをインストールしたいワークスペースを選択します。
-
アプリマニフェストを入力するページに移動します。slack_app_manifest.yaml ファイルの内容をコピーして入力フィールドに貼り付けます。
-
「Next」ボタンをクリックします。Slack はマニフェストを検証し、アプリ設定の概要を表示します。
-
設定を確認し、「Create」ボタンをクリックします。
-
アプリの基本情報ページに移動します。「Install to Workspace」ボタンをクリックして、ワークスペースにアプリをインストールします。
-
アプリをインストールした後、Bot User OAuth Token が提供されます。このトークンを保存してください。ボットを実行する際に必要になります。
slack_app_manifest.yaml ファイルは、ボットが常にオンラインであり、/pragin-ai スラッシュコマンドを監視するように設定します。スラッシュコマンドが任意のチャンネルで使用されると、ボットはコマンドテキストを受け取り、OpenAI API からの回答で応答します。
ボットを実行するために必要になるので、アシスタント ID を.env ファイルに保存してください。
Slack と OpenAI の設定が完了したら、必要な Python ライブラリを poetry install でインストールし、ツールを実行する準備が整いました。
- Poerty を使用して必要な Python ライブラリを poetry install でインストールします。
- .env.example に従って.env ファイルを作成し、必要な変数に値を割り当てます。
- poetry run python slackbot.py でスクリプトを実行します。
- 任意のチャンネルで/pragin-ai コマンドを発行して、Slack のワークスペースでテストします。
このボットは非同期であり、ブロックすることなく複数のコマンドを同時に処理できます。これは、asyncio および concurrent.futures ライブラリを使用し、slack_bolt からの関連する組み込みライブラリとともに達成されます。