Github Repository - https://github.com/xgro/Friday.git
Slack 봇과 OpenAI의 GPT-3.5를 활용한 챗봇 ChatGPT 구현 방법을 소개합니다.
AWS Lambda를 사용하여 Slack Bot을 구현하고 gpt-3.5-turbo
API를 호출하여 질의 응답을 수행합니다.
gpt-3.5-turbo
기반의 api를 사용하여 나만의 챗봇을 구축할 수 있습니다.
serverless architecture 구성으로 인해 인프라 비용이 거의 들지 않습니다.
스레드에서 최대 5개의 대화 히스토리를 추적하여 답변을 생성합니다.
해당 블로그의 과정을 수행하기 위해 아래 내용이 준비되어야 합니다.
Create an OpenAI account and get an API Key
Create an AWS account
Setup your Slack bot. You can follow this instructions to get your token.
서버리스 프레임워크를 이용하여 배포하므로, 배포를 위한 최소한의 패키지가 사전에 설치되어야 합니다.
node v18.14.0 LTS
serverless@3.28.1
봇을 설치하는 과정을 세가지 절차로 나뉘어 구현합니다.
슬랙 봇을 구성하기 위한 내용입니다.
봇을 생성하는 방법은 해당 블로그에서 다루지 않도록 하겠습니다.
https://api.slack.com/ 에서 봇을 생성합니다.
봇 기능을 이용하기 위해 권한을 부여합니다.
다음과 같은 권한을 부여해야 합니다.
권한 설정을 완료하고, Install to Workspace
버튼을 클릭하여 워크스페이스에 봇을 설치합니다.
OAuth Tokens for Your Workspace 항목에서 Bot User OAuth Token
이 생성되는 것을 확인할 수 있습니다.
서버리스 프레임워크를 이용하여 인프라를 배포합니다.
해당 소스코드는 파이썬으로 구성하였으며, 서버리스 프레임워크로 배포시 serverless-python-requirements
플러그인을 사용하여 자동으로 requirements.txt에 명시된 패키지를 Lambda Layer로 배포합니다.
git clone https://github.com/xgro/Friday.git
배포에 필요한 패키지를 설치합니다.
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의 주소가 터미널에 출력됩니다.
위 과정이 모두 완료되었다면, 배포한 서버리스 인프라와 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가 표시됩니다.
소스코드를 제거하고자 한다면 아래 명령어를 이용하여 제거할 수 있습니다.
# 소스코드의 디렉토리에서 아래 명령어 실행
serverless remove
나만의 ChatGPT 봇을 생성해보았습니다.
이미 Slack은 협업을 위한 도구로 많은 스타트업에서 사용하고 있고, AWS 서버리스 서비스를 이용하여 구현하여 인프라 유지를 위한 별도의 비용이 부과되지 않는 점이 가장 큰 장점입니다.
현재 공개되어 있는 OpenAI API중 최신버전인 gpt-3.5-turbo
를 이용하여 구축하므로, 1000 토큰 당 0.002 달러로 아주 저렴하게 나만의 비서를 이용할 수 있습니다.
Chat completions에 따르면 추가적으로 gpt-4
api가 공개 되어도, gpt-3.5-turbo
와 비슷한 구성을 가지고 사용할 수 있으므로, .env
파일에서 model에 대한 환경변수 변경만으로 간편하게 최신의 모델로 업그레이드를 기대할 수 있습니다.
Slack BOT 만들기 - 정우일 블로그
Slack API - https://api.slack.com/