brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Jun 23. 2024

2. 랭체인을 활용한 LLM AI 구축-2/2

랭체인을 활용한 LLM기반의 AI서비스 개발하기-2/2

Windows PC에 실습 환경을 구축해보자.

랭체인 사용하는 환경을 구축해보자

랭체인 주요모듈 5가지 알아보자

실습 해보자



<1>  Windows PC에 아나콘다 설치

<2> 주피터 노트북 설치

<3> ChatGPT API 사용 - 가입 필요 

<4> 허깅 페이스 가입하기

<5> 랭체인 주요 모듈 5가지 알아보기

<6> 실습 - 데이터 연결- 코랩

<7> 실습 - 체인 - 코랩

<8> 실습 - 데이터 연결- 아나콘다 (선택)

<9> 실습 - 메모리- 아나콘다  (선택)

<10> 실습 - 챗봇 만들기 - jupyter notebook

<11> 실습 - RAG기반 챗봇 만들기 - 코랩





<1>  Windows PC에 아나콘다 설치


실습 환경

Windows PC에 아나콘다 환경

ChatGPT API 사용 - 가입 필요 , 월 10달러 = 1만 4천원 정도 결재 필요.

랭체인  



1

Email 하나 준비



2

아나콘다 다운로드 - Email 필요


https://www.anaconda.com/download




3

Add PATH 체크하여 설치





4

Anaconda Prompt 

실행


(base) C:\Users\seo> conda env list

# conda environments:

#

base                  *  C:\Users\seo\anaconda3



conda create -n llm python=3.8

y


Proceed ([y]/n)?  y




# 가상환경 활성화

 conda env list


 conda activate llm


 conda env list




(base) C:\Users\seo> conda env list

# conda environments:

#

base                  *  C:\Users\seo\anaconda3

llm                      C:\Users\seo\anaconda3\envs\llm


(base) C:\Users\seo> conda activate llm



(llm) C:\Users\seo> conda env list

# conda environments:

#

base                     C:\Users\seo\anaconda3

llm                   *  C:\Users\seo\anaconda3\envs\llm




#삭제시

conda env remove -n llm   

// LLM 삭제





<2> 주피터 노트북 설치


1

pip install ipykernel



# 가상환경에 커널 연결하기

python -m ipykernel install --user --name 11m --display-name "llm"



# 주피터 노트북에 연결

jupyter notebook


FILE > NEW > notebook > llm




2


# 라이블러리 설치 =  아나콘다에서 !를 붙여 설치한다.

# 10초후 설치 시작함


!pip install langchain==0.0.350





# langchain version check

#

import langchain; print('the version of install langcahin is',langchain.__version__)


the version of install langcahin is 0.0.350




3

# 오픈 AI , 허킹페이스 , 스트림릿을 설치한다.


!pip install openai==1.4.0


!pip install huggingface-hub==0.19.4


!pip install streamlit==1.29.0







<3> ChatGPT API 사용 - 가입 필요


무료 제공 API는 제약으로 사용이 힘들다.

유로료 가입하여 테스트 하자.

openapi API key 발급받기



1

OPENAI 가입하기

https://platform.openai.com/docs/overview

나는 구글 계정으로 가입



2

Dashboard 에서 API Key 발급


brtest1-chat






3

결재


나는 매달 자동 결재는 OFF 하여 가입. 

10달러 결재 = 1달 1만 4천원정도 결재


https://platform.openai.com/account/billing/overview








<4> 허깅 페이스 가입하기



1

허깅 페이스  ?


다양한 모델과 학습 스크립트를 구현해 놓은 모듈.


https://huggingface.co/settings/tokens


나는 google 계정으로 가입


허깅 페이스 API KEY 발급 받기




brtest1-hugg




2

API 키 설정하기


import os

os.environ["OPENAI_API_KEY"]="sk-proj-gmPrO"


import os

os.environ["HUGGINGFACEHUB_API_KEY"]="hf_InnyCz"







<5> 랭체인 주요 모듈 5가지 알아보기




<6> 실습 - 데이터 연결- 코랩



1



2



3

코랩 실행


코드 실행은 SHIFT + ENTER 키


https://colab.research.google.com/?hl=ko



4

https://github.com/gilbutITbook/080413/blob/main/%EC%8B%A4%EC%8A%B5/4%EC%9E%A5/%EB%8D%B0%EC%9D%B4%ED%84%B0_%EC%97%B0%EA%B2%B0(Data_Connection)_%EC%BD%94%EB%9E%A9.ipynb




5

# 문서 가져 오기


# pdf파일은 코랩에 올려 놓는다

코랩 왼쪽 메뉴




# 문서 가져 오기


from langchain.document_loaders import PyPDFLoader

loader = PyPDFLoader("t.pdf")

document = loader.load()

document[5].page_content[:5000]





6

임베딩 처리




7

문장이 숫자의 나열인 벡터로 변경된다.





<7> 실습 - 체인 - 코랩




1



2

실행




https://github.com/gilbutITbook/080413/blob/main/%EC%8B%A4%EC%8A%B5/4%EC%9E%A5/%EC%B2%B4%EC%9D%B8(Chain)_%EC%BD%94%EB%9E%A9.ipynb





<8> 실습 - 데이터 연결- 아나콘다 (선택)


1




2

아나콘다 환경


Anaconda Prompt 

jupyter notebook



File - New  notebook 


https://github.com/gilbutITbook/080413/blob/main/%EC%8B%A4%EC%8A%B5/4%EC%9E%A5/%EB%8D%B0%EC%9D%B4%ED%84%B0_%EC%97%B0%EA%B2%B0(Data_Connection)_%EC%95%84%EB%82%98%EC%BD%98%EB%8B%A4.ipynb





3

!pip install langchain

!pip install openai

!pip install pypdf

!pip install tiktoken

!pip install faiss-cpu

!pip install sentence-transformers



실행은 SHIFT + ENTER 키


(5분 걸림)




4

샘플 pdf 다운로드

https://github.com/gilbutITbook/080413/blob/main/Data/The_Adventures_of_Tom_Sawyer.pdf





5


from langchain.document_loaders import PyPDFLoader

loader = PyPDFLoader("c:/3/The_Adventures_of_Tom_Sawyer.pdf")

document = loader.load()

document[5].page_content[:5000]




6

pip show langchain





<9> 실습 - 메모리- 아나콘다  (선택)


메모리 = 데이터를 저장하는 공간

데이터 = 대화 과정에서 발생하는 데이터 




메모리 실습


https://github.com/gilbutITbook/080413/blob/main/%EC%8B%A4%EC%8A%B5/4%EC%9E%A5/%EB%AA%A8%EB%8D%B8_I_O_(Model_I_O)_%EC%95%84%EB%82%98%EC%BD%98%EB%8B%A4.ipynb





<10> 실습 - 챗봇 만들기 - jupyter notebook



1

windows 10 pc에서


Anaconda Prompt 

jupyter notebook




2




3


!pip install langchain

!pip install streamlit

!pip install openai




4

C:\Users\seo\anaconda3\envs\llm\Scripts



5

실습

https://github.com/gilbutITbook/080413/blob/main/%EC%8B%A4%EC%8A%B5/5%EC%9E%A5/5_1_%EA%B0%84%EB%8B%A8%ED%95%9C_%EC%B1%97%EB%B4%87_%EB%A7%8C%EB%93%A4%EA%B8%B0.ipynb






<11> 실습 - RAG기반 챗봇 만들기 - 코랩



1

순서





상세

https://github.com/gilbutITbook/080413/blob/main/%EC%8B%A4%EC%8A%B5/5%EC%9E%A5/5_2_%EB%9E%AD%EC%B2%B4%EC%9D%B8%EA%B3%BC_%EC%B1%97GPT%EB%A1%9C_RAG_%EA%B5%AC%ED%98%84%ED%95%98%EA%B8%B0.ipynb





2

# 코랩

https://colab.research.google.com/?hl=ko




3

# 여러 라이브러리 설치



!pip install unstructured



실행

SHIFT + ENTER




4

#AI 파일을 코랩이 올리자


from langchain.document_loaders import TextLoader

documents = TextLoader("AI.txt").load()




5


# 문서를 청크로 분할


def split_docs(documents,chunk_size=1000,chunk_overlap=20):


  text_splitter = RecursiveCharacterTextSplitter(chunk_size=chunk_size, chunk_overlap=chunk_overlap)


  docs = text_splitter.split_documents(documents)


  return docs



# docs 변수에 분할 문서를 저장


docs = split_docs(documents)



6


#OpenAI의 임베딩 모델 사용


from langchain_openai import OpenAIEmbeddings


api_key="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"


embeddings = OpenAIEmbeddings(model="text-embedding-ada-002", api_key=api_key)



# Chromdb에 벡터 저장, 저장 장소는 c:/data



7


model_name = "gpt-3.5-turbo"  #GPT-3.5-turbo 모델 사용


llm = ChatOpenAI(model_name=model_name, api_key=api_key)



# Q&A 체인을 사용하여 쿼리에 대한 답변 얻기


from langchain.chains.question_answering import load_qa_chain


chain = load_qa_chain(llm, chain_type="stuff",verbose=True)



# 쿼리를 작성하고 유사성 검색을 수행하여 답변을 생성,따라서 txt에 있는 내용을 질의해야 합니다


query = "AI란?"







8

결과




다음

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



keyword
매거진의 이전글 (시작) AI 1탄-1. 랭체인을 활용한 LLM
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari