AI

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

弊社では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のデプロイ名(下記のスクリーンショットを参照)。
Azure OpenAI Studioから、必要な情報を取得。

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

動作確認

Isobe Kazuhiko

Web業界で上から下まで色々なことを経験してきて、今は、Identityに関することを中心にやってます。