Slack x AWS로 나만의 ChatGPT 봇 만들기

xgro·2023년 3월 19일
0

DevOps

목록 보기
7/9
post-thumbnail

Github Repository - https://github.com/xgro/Friday.git

📌 Feature

Slack 봇과 OpenAI의 GPT-3.5를 활용한 챗봇 ChatGPT 구현 방법을 소개합니다.

AWS Lambda를 사용하여 Slack Bot을 구현하고 gpt-3.5-turbo API를 호출하여 질의 응답을 수행합니다.

  • gpt-3.5-turbo 기반의 api를 사용하여 나만의 챗봇을 구축할 수 있습니다.

  • serverless architecture 구성으로 인해 인프라 비용이 거의 들지 않습니다.

  • 스레드에서 최대 5개의 대화 히스토리를 추적하여 답변을 생성합니다.


📌 Prequisite

해당 블로그의 과정을 수행하기 위해 아래 내용이 준비되어야 합니다.

  1. Create an OpenAI account and get an API Key

  2. Create an AWS account

  3. Setup your Slack bot. You can follow this instructions to get your token.

  4. 서버리스 프레임워크를 이용하여 배포하므로, 배포를 위한 최소한의 패키지가 사전에 설치되어야 합니다.

    • node v18.14.0 LTS

    • serverless@3.28.1


📌 Architecture

📌 Setup

봇을 설치하는 과정을 세가지 절차로 나뉘어 구현합니다.

👉 Step.01 Slack BOT

슬랙 봇을 구성하기 위한 내용입니다.

봇을 생성하는 방법은 해당 블로그에서 다루지 않도록 하겠습니다.

https://api.slack.com/ 에서 봇을 생성합니다.

OAuth & Permissions

봇 기능을 이용하기 위해 권한을 부여합니다.

다음과 같은 권한을 부여해야 합니다.

권한 설정을 완료하고, Install to Workspace 버튼을 클릭하여 워크스페이스에 봇을 설치합니다.

OAuth Tokens for Your Workspace 항목에서 Bot User OAuth Token이 생성되는 것을 확인할 수 있습니다.


👉 Step 02. 서버리스 배포

서버리스 프레임워크를 이용하여 인프라를 배포합니다.

해당 소스코드는 파이썬으로 구성하였으며, 서버리스 프레임워크로 배포시 serverless-python-requirements 플러그인을 사용하여 자동으로 requirements.txt에 명시된 패키지를 Lambda Layer로 배포합니다.

✅ 소스코드 다운로드

git clone https://github.com/xgro/Friday.git

✅ node_modules 설치

배포에 필요한 패키지를 설치합니다.

cd Friday && npm install

✅ 환경변수 설정

cp .env.sample .env

--- 
# .env
# jobWorker's ENV
MODEL_ID="gpt-3.5-turbo"
BOT_NAME="Friday"

# SLACK_BOT_TOKEN
SLACK_TOKEN="sk_***"

# OPENAI_API_KEY
OPENAI_KEY="xoxb-***"

✅ 서버리스 배포

serverless deploy

배포가 완료되면 아래와 같이 API-gateway의 주소가 터미널에 출력됩니다.

👉 Step 03. BOT 연결

위 과정이 모두 완료되었다면, 배포한 서버리스 인프라와 Slack BOT을 연결해줍니다.

Event Subscriptions 탭에서 Enable Events를 선택하여 기능을 활성화 합니다.

Subscribe to bot events 항목에서 Add Bot User Event 버튼을 클릭하여 app_mention을 활성화합니다.

Request URL에서 Step 02에서 생성한 api-gateway의 주소를 넣어줍니다.

정상적으로 배포가 완료 되었다면, Request URL 항목이 Verified가 표시됩니다.

🗑️ Clean-up

소스코드를 제거하고자 한다면 아래 명령어를 이용하여 제거할 수 있습니다.

# 소스코드의 디렉토리에서 아래 명령어 실행
serverless remove


📌 Conclusion

나만의 ChatGPT 봇을 생성해보았습니다.

이미 Slack은 협업을 위한 도구로 많은 스타트업에서 사용하고 있고, AWS 서버리스 서비스를 이용하여 구현하여 인프라 유지를 위한 별도의 비용이 부과되지 않는 점이 가장 큰 장점입니다.

현재 공개되어 있는 OpenAI API중 최신버전인 gpt-3.5-turbo를 이용하여 구축하므로, 1000 토큰 당 0.002 달러로 아주 저렴하게 나만의 비서를 이용할 수 있습니다.

Chat completions에 따르면 추가적으로 gpt-4 api가 공개 되어도, gpt-3.5-turbo와 비슷한 구성을 가지고 사용할 수 있으므로, .env 파일에서 model에 대한 환경변수 변경만으로 간편하게 최신의 모델로 업그레이드를 기대할 수 있습니다.

📌 Reference

profile
안녕하세요! DevOps 엔지니어 이재찬입니다. 블로그에 대한 피드백은 언제나 환영합니다! 기술, 개발, 운영에 관한 다양한 주제로 함께 나누며, 더 나은 협업과 효율적인 개발 환경을 만드는 과정에 대해 인사이트를 나누고 싶습니다. 함께 여행하는 기분으로, 즐겁게 읽어주시면 감사하겠습니다! 🚀

0개의 댓글