弊社ではAzure OpenAI Serviceがホットなので、Slackから使えるようにしてみました。
SlackからChatGPTを扱うアプリがいくつか公開されていますが、いろいろ試してみて、ChatGPT-in-Slackがとても使いやすかったので、こちらを使うことにしました。2週間ぐらい前に、Azure OpenAI Serviceに対応されていたので、簡単に使うことができました。
https://cloudnative.co.jp/AzureOpenAI
導入方法
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のデプロイ名(下記のスクリーンショットを参照)。
Serverless Frameworkをインストールする
npm install -g serverlessserverless 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 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に、自社のデータを躊躇せず入れて使うことができるようになりました。
動作確認





