AWS Lambda で動作する ChatGPT モデルを使用した Slack Bot
- AWS CLI 2.11
- python 3.9
- Serverless Framework 3.29
- デプロイするAWSアカウント
- Slact アプリおよび以下の情報
- Bot User OAuth Token
- Signing Secret
- OpenAIの API KEY
新規にSlackアプリを作成します。App Manifestには以下の内容を設定します。 urlは後の手順で変更します。
display_information:
name: lambda-chatbot-app
features:
bot_user:
display_name: chatbot
always_online: true
oauth_config:
scopes:
bot:
- chat:write
- chat:write.public
- app_mentions:read
- channels:history
settings:
event_subscriptions:
request_url: https://example.execute-api.us-east-1.amazonaws.com/slack/events
bot_events:
- app_mention
- message.channels
org_deploy_enabled: false
socket_mode_enabled: false
token_rotation_enabled: false
アプリが作成できたらBot User OAuth TokenおよびSigning Secretをメモしておきます。
依存モジュールをインストールします。
$ sls plugin install -n serverless-python-requirements
環境変数にSlackのBot User OAuth Token、Signing Secretおよび OpenAIのAPI Keyを設定します。
環境変数にする内容を.envファイルに記載します。
.env
SLACK_SIGNING_SECRET=9999999...
SLACK_BOT_TOKEN=xoxb-xxxxx....
OPENAI_API_KEY=xx-xxxxx....
アプリケーションをデプロイします。
$ sls deploy
生成されたendpointのURLを、SlackアプリのApp ManifestのURLに設定し、アプリをインストールしなおします。
slackのチャンネルなどで、botにメンションを付けて質問などを行います
@chatbot 質問内容