弊社ではAzure OpenAI Serviceがホットなので、Slackから使えるようにしてみました。
SlackからChatGPTを扱うアプリがいくつか公開されていますが、いろいろ試してみて、ChatGPT-in-Slackがとても使いやすかったので、こちらを使うことにしました。2週間ぐらい前に、Azure OpenAI Serviceに対応されていたので、簡単に使うことができました。
導入方法
Azure OpenAI Serviceはすでに利用可能な状態になっていることを前提とします。
Slack Appの作成
- https://api.slack.com/apps にアクセスして、新しくAppを作成する。
- From an app manifestを選ぶ。
- 対象となるワークスペースを選ぶ。
- manifest-prod.ymlファイルの中身を丸ごとペーストする。
- Createボタンを押す。
- Install to Workspaceボタンを押す。
認証情報を取得する
- Basic Information → App Credentialsから、下記の値を取得して控える。
- Client ID
- Client Secret
- Signing Secret
AWS S3 Bucketを作成する
- 下記の用途ごとに、3つ作成する。
- Slack Instrllation
- Slack State
- OpenAI
環境変数を設定する
- 下記の環境変数を設定する。
- SLACK_SCOPES
app_mentions:read,channels:history,groups:history,im:history,mpim:history,chat:write.public,chat:write,users:read
- SLACK_CLIENT_ID
- Slack Appから取得。
- SLACK_CLIENT_SECRET
- Slack Appから取得。
- SLACK_SIGNING_SECRET
- Slack Appから取得。
- SLACK_INSTALLATION_S3_BUCKET_NAME
- 作成したバケット名。
- SLACK_STATE_S3_BUCKET_NAME
- 作成したバケット名。
- OPENAI_S3_BUCKET_NAME
- 作成したバケット名。
- OPENAI_API_TYPE
azure
とする。
- OPENAI_API_BASE
- Azure OpenAI Studioから取得(下記のスクリーンショットを参照)。
- OPENAI_API_VERSION
- Azure OpenAI Studioから取得(下記のスクリーンショットを参照)。
- OPENAI_DEPLOYMENT_ID
- Azure OpenAI Serviceのデプロイ名(下記のスクリーンショットを参照)。
- SLACK_SCOPES
Serverless Frameworkをインストールする
npm install -g serverless
serverless plugin install -n serverless-python-requirements
AWSの認証情報を取得する
- serverless frameworkは、一時的な認証情報に対応していないため、永続的なキーを取得する必要がある。
~/.aws/credentials
にキーを設定する。
Deployする
sls deploy --aws-profile your-profilen-name --region us-west-2 --stage prod --verbose
Slack Appに設定する
- Deployしたあと、下記のような出力が出る。
✔ Service deployed to stack slack-chat-gpt-bot-dev (48s) dashboard: <https://app.serverless.com/xxxxxxx/apps/slack-chat-gpt-bot/slack-chat-gpt-bot/dev/us-east-1> endpoints: POST - <https://xxxxxxx.execute-api.us-east-1.amazonaws.com/slack/events> GET - <https://xxxxxxx.execute-api.us-east-1.amazonaws.com/slack/install> GET - <https://xxxxxxx.execute-api.us-east-1.amazonaws.com/slack/oauth_redirect> functions: app: slack-chat-gpt-bot-dev-app (2.6 MB)
- Slack Appの下記の設定に入力する。
- Interactivity & Shortcuts → Redirect URI
- 末尾が events になっているURL
- Event Subscriptions → Redirect URI
- 末尾が events になっているURL
- OAuth & Permissions → Redirect URL
- 末尾が oauth_redirect になっているURL
- Interactivity & Shortcuts → Redirect URI
Slack Appのインストール
- 末尾が install になっているURLをブラウザで開く。
- OAuthの承認をする。
Slack Appの設定
- 対象のSlackから、アプリを開く。
- ホームタブのConfigurationボタンを押す。
- OpenAIのキーと、OpenAI modelを登録する。
これで、SlackでChatGPT Botが使えるようになります。
検討課題
Slackで使えるようにする際に検討したこととして、Slack Connectを使って他のSlackワークスペースと共有しているチャンネルでは利用できないようにしたい、ということでした。Azure OpenAI Serviceを使うにあたり、弊社が持っている独自のデータを使わせたいので、社外の人が使えてしまうと困ります。
ということで、共有チャンネルの場合は、処理を中断するコードを入れました(当該コミット)。
これで、Azure OpenAI Serviceに、自社のデータを躊躇せず入れて使うことができるようになりました。