SlackでAzure OpenAI Serviceを使ってみた(共有チャンネル対策もあるよ)

Isobe Kazuhiko

Isobe Kazuhiko

弊社では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_SCOPESapp_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 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 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に、自社のデータを躊躇せず入れて使うことができるようになりました。

動作確認

この記事をシェア