brunch

AI 3탄-4.스트림 형식,히스토리 기반응답 슬랙앱

챗GPT와 랭체인을 활용한 LLM기반 AI 앱 개발 -4/5

by Master Seo

<18> 히스토리 기반으로 응답하는 슬랙 앱

<19> 개발환경 구축 - Cloud9 (실습)

<20> 깃허브에서 저장소 생성,Cloud9과 연동 (실습)

<21> Cloud9에서 파이썬의 가상환경 활성화 (실습)

<22> 슬랙앱 만들기 (실습)

<23> 애플리케이션 만들기 (실습)

<24> 이벤트 설정하기 (실습)





<19> 히스토리 기반으로 응답하는 슬랙 앱


1

슬랙으로 질문하고 답변 받자.

슬라이드5.JPG

2

개발환경을 구성해 보자.


1) Cloud9 사용(개발서버)


2) 서버리스 사용

AWS 람다 사용 = 사용한 만큼만 과금.

Momento를 대화 히스토리 캐쉬 서비스 사용 = 사용한 만큼만 과금.



3

구성?


사용자 ----- 문의-----------LangChain (AWS lambda) ----------------- ChatGPT (API)

:______Momento(캐쉬)




<19> 개발환경 구축 - Cloud9 (실습)


AWS Cloud9 생성

https://console.aws.amazon.com/console/home


slack-app




<20> 깃허브에서 저장소 생성,Cloud9과 연동 (실습)


1

퍼블릭하게 하나 만들자.

https://github.com/



2

NEW

slack1


https://github.com/topasvga1/slack1



3

cloud9과 깃허브 연동?


Cloud9에서 깃허브에 SSH로 접속 하는 방법?

taeho.seo@메일


ssh-keygen -t ed25519 -C "taeho.seo@gmail.com"


cat ~/.ssh/id_ed25519.pub

공개키 xxxxxxxxxxxxxxxxxxxxxxx

# 공개키가 패스워드이므로 복사.



4

깃허브에 공개키 등록 ???


오른쪽위 프로필 > 세팅

SSH and GPG keys > New SSH key


cloud9-slack

공개키 등록



5

# cloud9 터미널에서


ssh -T git@github.com

Hi topasvga1! You've successfully authenticated, but GitHub does not provide shell access.



6


git config --global user.email taeho.seo@gmail.com

git config --global user.email topasvga1



# git clone으로 파일 가져오기


git clone git@github.com:topasvga1/slack1





<21> Cloud9에서 파이썬의 가상환경 활성화 (실습)


1

파이썬 환경으로 세팅하기


curl https://pyenv.run | bash



2

pyenv 설치

https://github.com/pyenv/pyenv#installation


3

echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc

echo 'command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc

echo 'eval "$(pyenv init -)"' >> ~/.bashrc


exec "$SHELL"


sudo yum remove -y openssl-devel


sudo yum install -y openssl-devel bzip2-devel xz-devel

sudo yum install libffi-devel

sudo yum install ncurses-devel

sudo yum install readline-devel



pyenv install 3.10

(10분 걸림)


4

# python 3.10 사용하기 위한 절차


ec2-user:~/environment $ cd slack1


ec2-user:~/environment/slack1(main) $ pyenv local 3.10

ec2-user:~/environment/slack1 (main) $ more .python-version

3.10

# local 명령어는 현재 디렉토리와 디렉토리 아래는 해당 파이썬 버전을 사용하게 된다.




5

# 파이썬 개발에서 여러 프로젝트에서 설치하는 패키지 충동하지 않도록 하기위해 가상환경을 사용한다.

가상 환경 사용법


ec2-user:~/environment/slack1 (main) $ python -m venv .venv

ec2-user:~/environment/slack1 (main) $ . .venv/bin/activate


비활성화

deactivate




6

# Momento 캐쉬 환경 설정 , 구글 계정으로 가입


https://www.gomomento.com/




170 cache.png





180 key.png


Download JSON




7

환경 설정 파일 만들기

.env 파일 만들기


SLACK_SIGNING_SECRET=

SLACK_BOT_TOKEN=

SLACK_APP_TOKEN=

OPENAI_API_KEY=

OPENAI_API_MODEL=gpt-3.5-turbo

OPENAI_API_TEMPERATURE=0.5

MOMENTO_AUTH_TOKEN=

MOMENTO_CACHE=

MOMENTO_TTL=1





<22> 슬랙앱 만들기 (실습)



1

슬랙 앱 만들기

https://api.slack.com/apps


Create New App

From scratch

chat2

SLACK_SIGNING_SECRET 복사




2

# cloud9 에서


.env

SLACK_SIGNING_SECRET= xxxxxxxxxxxxxxxxxxxxx 입력




110 Add-features.png



3

OAuth& Permissions > Scopes > Bot Token Scopes > Add on OAuth Scope

chat:write 를 추가

120 scope.png




4

OAuth Tokens 클릭



130 workspace.png



140 workspace2.png

5

OAuth Token 복사 > cloud9 .env 에 SLACK_BOT_TOKEN에 입력





6

Basic Information

App-Level Tokens




7

150 token.png






8

소켓 모드 활성화


Cloud9에서 Slack Bolt를 이용해 로컬 서버 구동

슬랙에서 발생한 이벤트를 수신하여 소켓 모드를 활성화 한다.



Socket Mode = on

160 socket.png






<23> 애플리케이션 만들기 (실습)



1

env 입력

SLACK_SIGNING_SECRET=

SLACK_BOT_TOKEN=

SLACK_APP_TOKEN=

OPENAI_API_KEY=

OPENAI_API_MODEL=gpt-3.5-turbo

OPENAI_API_TEMPERATURE=0.5

MOMENTO_AUTH_TOKEN=

MOMENTO_CACHE=

MOMENTO_TTL=1



2

app.py 생성

https://github.com/ychoi-kr/langchain-book/tree/main/chapter7




3

pip install slack-bolt==1.18.1 python-dotenv==1.0.1






4

pyenv install 3.10

(20분)


[notice] To update, run: pip install --upgrade pip



5

ec2-user:~/environment (main) $ python app.py

Traceback (most recent call last):

File "/home/ec2-user/environment/app.py", line 10, in <module>

from langchain_community.chat_message_histories import MomentoChatMessageHistory

ModuleNotFoundError: No module named 'langchain_community'





<24> 이벤트 설정하기 (실습)



1

Slack 에서

https://api.slack.com/apps


chat2 선택


190 event.png




다음

https://brunch.co.kr/@topasvga/3898




keyword
매거진의 이전글AI 3탄-3. 외부검색과 히스토리를 바탕응답-3/5