brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Jul 07. 2024

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

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

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

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

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

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

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

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

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





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


1

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

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/









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 입력






3

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

chat:write 를 추가




4

OAuth Tokens 클릭





5

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





6

Basic Information

App-Level Tokens




7






8

소켓 모드 활성화


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

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



Socket  Mode = on






<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 선택





다음

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



                    

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari