brunch

AI 1탄-3. 랭체인으로 LLM기반의 AI서비스 개발

랭체인으로 LLM기반의 AI서비스 개발하기-3/3

by Master Seo

# 랭체인을 활용한 AI 서비스 8개 만들어 봅시다.

# 소스 변경, 라이브러리 변경등으로 실행이 안될 수도 있습니다. 계속 업데이트합니다.



<1> 서비스 1- 간단한 챗봇 만들기 - 아나콘다 (실습) - 잘됨

<2> 서비스 2- RAG기반 챗봇 만들기 - 코랩 (실습)-잘됨

<3> 서비스 3- PDF 요약 웹사이트 - 스트림릿, 아나콘다 - 잘됨

<4> 서비스 4- 독립형 질문 챗봇 - 스트림릿, 아나콘다 - 잘됨

<5> 서비스 5- 대화형 챗봇 - 스트림릿, 아나콘다 - 잘됨

<6> 서비스 6- 번역서비스 - 스트림릿, 아나콘다 - 잘됨

<7> 서비스 7- 메일 작성기 - 스트림릿, 아나콘다 - 잘됨

<8> 서비스 8- CSV 파일 분석하기 - 아나콘다 - 잘됨

<9> 추가 가능한 서비스 소개



실습 환경

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




<1> 서비스 1- 간단한 챗봇 만들기 - 아나콘다 (실습) - 잘됨



1

링체인을 이용한 챗봇.

RAG는 사용 안 함.




2

# 환경

스트림릿을 사용하기 위해서는 아나콘다 환경이어야 한다.

기본 라이브러리 설치하고, 제공하는. py 파일로 빠르게 실습해 보자.



3

# 작업 순서


# 아나콘다 설치


# windows > Amaconda Prompt


jupyter notebook 실행하여 라이브러리 설치

파이썬 소스 작성

dos창에서 python 실행



4

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



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




6

산출물

13 네이버.png




7

# ch.py로 제공하는 소스로 사용


예제에 있는 FM 모델 없어짐.

변경 전

gpt-4-0314


변경 후

gpt-4



8

30 model.png



9

# 서비스 1- 간단한 챗봇 만들기 - 아나콘다 - jupyter notebook (실습)- 잘됨.



10

# windows 10 pc에서

Anaconda Prompt 실행


jupyter notebook 사용

LLM으로 변경하자



11

100 juper.png





12

슬라이드16.JPG

13

!pip install langchain

!pip install streamlit

!pip install openai




14


실습

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




15

예제에 있는 FM 모델 없어짐.

모델 변경

gpt-4




#!/usr/bin/env python

# coding: utf-8

# In[1]:

#!pip install langchain

# In[2]:

#!pip install streamlit

# In[3]:

#!pip install openai

# In[4]:

import streamlit as st

from langchain.chat_models import ChatOpenAI

st.set_page_config(page_title="�� 뭐든지 질문하세요~ ")

st.title('�� 뭐든지 질문하세요~ ')

import os

os.environ["OPENAI_API_KEY"] = "sk" #openai 키 입력

def generate_response(input_text): #llm이 답변 생성

llm = ChatOpenAI(temperature=0, # 창의성 0으로 설정

model_name='gpt-4', # 모델명

)

st.info(llm.predict(input_text))

with st.form('Question'):

text = st.text_area('질문 입력:', 'What types of text models does OpenAI provide?') #첫 페이지가 실행될 때 보여줄 질문

submitted = st.form_submit_button('보내기')

generate_response(text)

# In[ ]:




16


c:\Users\seo\anaconda3\envs\llm\Scripts>streamlit run cha.py




17

20 언제까지 정보.png




<2> 서비스 2- RAG기반 챗봇 만들기 - 코랩 (실습)-잘됨



1

텍스트에 있는 내용을 벡터화하고, 내용을 참고해서 LLM에 질문하여 응답을 받는다.



ai란?

text 파일에 있는 내용을 참고해서 답변한다.


답변




2

랭체인에서 RAG 구현 방법을 알아보자.

AI.txt 파일을 읽어서 벡터 데이터 베이스에 저장하자.


질문을 하면 벡터 데이터 베이스 내용을 참고해서 LLM에 질의하여 응답을 받는다.

AI.TXT 내용을 참고하는 것이다.



# AI 관련 내용을 ai.txt로 만든다.


Artificial intelligence (AI) is the intelligence of machines or software, as opposed to the intelligence of humans or animals. It is a field of study in computer science that develops and studies intelligent machines. Such machines may be called AIs.

AI technology is widely used throughout industry, government, and science. Some high-profile applications are: advanced web search engines (e.g., Google Search), recommendation systems (used by YouTube, Amazon, and Netflix), understanding human speech (such as Google Assistant, Siri, and Alexa), self-driving cars (e.g., Waymo), generative and creative tools (ChatGPT and AI art), and superhuman play and analysis in strategy games (such as chess and Go).[1]



# ai에 대해 질문한다.




3

순서

슬라이드17.JPG

4

상세

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



5

# 코랩 사용


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




6

# 여러 라이브러리 설치

# 텍스트 파일처럼 구조화되지 않은 데이터를 다룰 때 사용하는 라이브러리


!pip install unstructured


실행

ALT + ENTER



7

// 아래 오류 해결을 위해 openai 버전과 httpx 버전 변경함.

//TypeError: Client.__init__() got an unexpected keyword argument 'proxies'



!pip install --upgrade openai==1.55.3

!pip install --upgrade httpx==0.27.2

!pip install langchain_community


!pip install langchain-openai


!pip install chromadb






8

#AI 파일을 코랩이 올리자



6

# textloader를 통해 파일을 불러오자


from langchain.document_loaders import TextLoader

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



9

# 문장을 청크로 분할 하자


from langchain.text_splitter import RecursiveCharacterTextSplitter


# 문서를 청크로 분할

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)




10

#OpenAI의 임베딩 모델 사용


from langchain_openai import OpenAIEmbeddings

api_key="sk-prfMLWHM_1ENA06iDl86IA"

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




# Chromdb에 벡터 저장, 저장 장소는 코랩


from langchain.vectorstores import Chroma

db = Chroma.from_documents(docs, embeddings, persist_directory="/")




11


from langchain.chat_models import ChatOpenAI

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란?"

matching_docs = db.similarity_search(query)

answer = chain.run(input_documents=matching_docs, question=query)

answer




12

답변


> Entering new StuffDocumentsChain chain... > Entering new LLMChain chain... Prompt after formatting: System: Use the following pieces of context to answer the user's question. If you don't know the answer, just say that you don't know, don't try to make up an answer. ---------------- Artificial intelligence (AI) is the intelligence of machines or software, as opposed to :

:

:

optimization, formal logic, artificial neural networks, and methods based on statistics, operations research, and economics.[b] AI also draws upon psychology, linguistics, philosophy, neuroscience and other fields.[12] Human: AI란? > Finished chain. > Finished chain.



AI(Artificial Intelligence)란 기계나 소프트웨어의 지능을 말합니다. 이는 인간이나 동물의 지능과는 다른 것을 의미하며, 컴퓨터 과학 분야에서 개발되고 연구되는 지능 기계들을 가리킵니다. AI 기술은 산업, 정부, 과학 분야에서 널리 사용되며, 구글 검색, YouTube, 아마존, 넷플릭스 등의 추천 시스템, 구글 어시스턴트, Siri, Alexa와 같은 음성 인식, Waymo와 같은 자율 주행 자동차, ChatGPT, AI art 등의 창의적인 도구, 체스와 바둑과 같은 전략 게임에서의 초인간적인 플레이와 분석 등 다양한 분야에서 사용되고 있습니다.






앞으로 돌아가기

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




<3> 서비스 3- PDF 요약 웹사이트 - 스트리릿, 아나콘다 - 잘됨



1

PDF파일을 요약해 주는 서비스.

웹페이지에 PDF를 올리면 요약해서 보여 준다.

31 요약.png


2

# windows 10 pc에서

Anaconda Prompt 실행


jupyter notebook 사용

LLM으로 변경하자



!pip install langchain

!pip install streamlit

!pip install PyPDF2

!pip install langchain-openai




3


# 제공하는. py 파일로 실행.

# OPENAI API 키 변경 필요



#!/usr/bin/env python

# coding: utf-8

# In[1]:

#!pip install langchain

# In[2]:

#!pip install streamlit

# In[3]:

#!pip install PyPDF2

# In[4]:

#!pip install langchain-openai

# In[5]:

import os

from PyPDF2 import PdfReader

import streamlit as st

from langchain.text_splitter import CharacterTextSplitter

from langchain_openai import OpenAIEmbeddings

from langchain import FAISS

from langchain.chains.question_answering import load_qa_chain

from langchain.chat_models import ChatOpenAI

from langchain.callbacks import get_openai_callback

api_key="sk-projfMLWHM_1ENA06iDl86IA"

def process_text(text):

#CharacterTextSplitter를 사용하여 텍스트를 청크로 분할

text_splitter = CharacterTextSplitter(

separator="\n",

chunk_size=1000,

chunk_overlap=200,

length_function=len

)

chunks = text_splitter.split_text(text)

#임베딩 처리(벡터 변환), 임베딩은 OpenAI 모델을 사용합니다.

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

documents = FAISS.from_texts(chunks, embeddings)

return documents

def main(): #streamlit을 이용한 웹사이트 생성

st.title("�PDF 요약하기")

st.divider()

pdf = st.file_uploader('PDF파일을 업로드해주세요', type='pdf')

if pdf is not None:

pdf_reader = PdfReader(pdf)

text = "" # 텍스트 변수에 PDF 내용을 저장

for page in pdf_reader.pages:

text += page.extract_text()

documents = process_text(text)

query = "업로드된 PDF 파일의 내용을 약 3~5 문장으로 요약해 주세요." # LLM에 PDF파일 요약 요청

if query:

docs = documents.similarity_search(query)

llm = ChatOpenAI(model="gpt-3.5-turbo-16k", api_key=api_key, temperature=0.1)

chain = load_qa_chain(llm, chain_type='stuff')

with get_openai_callback() as cost:

response = chain.run(input_documents=docs, question=query)

print(cost)

st.subheader('--요약 결과--:')

st.write(response)

if __name__ == '__main__':

main()

# In[ ]:



https://github.com/gilbutITbook/080413/tree/main/%EC%8B%A4%EC%8A%B5/5%EC%9E%A5



3

아나콘다 프롬프트 실행


4

기본 라이브러리 설치

py 소스 파일 실행


cd c:\Users\seo\anaconda3\envs\llm\Scripts


streamlit run pd.py







<4> 서비스 4- 독립형 질문 챗봇 - 스트림릿,아나콘다 - 잘됨



1

내가 가진 PDF로 RAG 구성

RAG는 질문을 받으면 내가 가진 PDF내용을 찾아보고 질문과 찾은 결과를 LLM에 제공하여 답변을 얻는다.

PDF 문서를 가져와 텍스트를 추출 하고 청크로 분할한다.

분할된 청크는 임베딩처리하고 파스(FAISS)에 저장

OPENAI API 키 변경하기!!!


41 pdf.png


# 하나의 질문에만 답하는 예제이다.



2

아나콘다 프롬프트

주피터 노트 사용

기본 OPENAI APIKEY 입력

도스창에서 제공하는 pdf.py 실행




c:\Users\seo\anaconda3\envs\llm\Scripts>streamlit run pdf.py


900 rag.png




3

https://github.com/gilbutITbook/080413/tree/main/%EC%8B%A4%EC%8A%B5/5%EC%9E%A5







<5> 서비스 5- 대화형 챗봇 - 스트림릿,아나콘다 - 잘됨



챗봇으로 올려진 PDF 파일 내용을 물어보자.

pdf 내용 이외의 내용을 물어보자.


51 챗봇-pdf.png



# pdf 내용 이외의 내용을 물어보자. = 답변을 하지 않는다.


1000 pdf.png




1

대화형 챗봇을 만들어 보자.

가진 데이터를 활용한 챗봇

PDF파일 업로드 사용

PDF 안의 내용을 물어보면 답을 준다.




2

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



3

# Jupyter 노트 실행


!pip install streamlit-chat


!pip install streamlit


!pip install langchain


4

!pip install faiss-cpu



5

# OPENAI API 키 변경


import streamlit as st

from streamlit_chat import message

from langchain.embeddings.openai import OpenAIEmbeddings

from langchain.chat_models import ChatOpenAI

from langchain.chains import ConversationalRetrievalChain

from langchain.vectorstores import FAISS

import tempfile

from langchain.document_loaders import PyPDFLoader


import os

os.environ["OPENAI_API_KEY"] = "sk-proj-jO-fMLWHM_1ENA06iDl86IA" #openai 키 입력


uploaded_file = st.sidebar.file_uploader("upload", type="pdf")




6

if uploaded_file :

with tempfile.NamedTemporaryFile(delete=False) as tmp_file:

tmp_file.write(uploaded_file.getvalue())

tmp_file_path = tmp_file.name

loader = PyPDFLoader(tmp_file_path)

data = loader.load()


embeddings = OpenAIEmbeddings()

vectors = FAISS.from_documents(data, embeddings)


chain = ConversationalRetrievalChain.from_llm(llm = ChatOpenAI(temperature=0.0,model_name='gpt-4'), retriever=vectors.as_retriever())


def conversational_chat(query): #문맥 유지를 위해 과거 대화 저장 이력에 대한 처리

result = chain({"question": query, "chat_history": st.session_state['history']})

st.session_state['history'].append((query, result["answer"]))

return result["answer"]

if 'history' not in st.session_state:

st.session_state['history'] = []


if 'generated' not in st.session_state:

st.session_state['generated'] = ["안녕하세요! " + uploaded_file.name + "에 관해 질문주세요."]


if 'past' not in st.session_state:

st.session_state['past'] = ["안녕하세요!"]

#챗봇 이력에 대한 컨테이너

response_container = st.container()

#사용자가 입력한 문장에 대한 컨테이너

container = st.container()


with container: #대화 내용 저장(기억)

with st.form(key='Conv_Question', clear_on_submit=True):

user_input = st.text_input("Query:", placeholder="PDF파일에 대해 얘기해볼까요? (:", key='input')

submit_button = st.form_submit_button(label='Send')

if submit_button and user_input:

output = conversational_chat(user_input)

st.session_state['past'].append(user_input)

st.session_state['generated'].append(output)


if st.session_state['generated']:

with response_container:

for i in range(len(st.session_state['generated'])):

message(st.session_state["past"][i], is_user=True, key=str(i) + '_user', avatar_style = "fun-emoji", seed = "Nala")

message(st.session_state["generated"][i], key=str(i), avatar_style = "bottts", seed = "Fluffy")



7

!pip install pypdf



!pip install tiktoken






8

# 주피터 노트에서 라이브러리들 설치

# cmd 창

# py 파일을 실행시키면 동작한다.


c:\Users\seo\anaconda3\envs\llm\Scripts>streamlit run co.py



9



10

51 챗봇-pdf.png



11

# 라이브러리들 설치하지 않고 실행하면 아래처럼 모듈이 없다고 나온다.


ModuleNotFoundError: No module named 'streamlit_chat'

Traceback:

File "C:\Users\seo\anaconda3\Lib\site-packages\streamlit\runtime\scriptrunner\script_runner.py", line 534, in _run_script exec(code, module.__dict__)


File "C:\0ai\co.py", line 32, in <module> from streamlit_chat import message








<6> 서비스 6- 번역서비스 - 스트림릿,아나콘다 - 잘됨



한글로 텍스트를 입력하면 번역해 주는 서비스이다.

일본어, 중국어, 영어로 번역해 주는 서비스이다.



610 번역.png




1

번역 서비스?

번역을 원하는 텍스트를 입력한다.

번역을 원하는 언어를 선택 > 번역 클릭

번역된다.

https://github.com/gilbutITbook/080413/blob/main/%EC%8B%A4%EC%8A%B5/5%EC%9E%A5/5_6_%EB%B2%88%EC%97%AD_%EC%84%9C%EB%B9%84%EC%8A%A4_%EB%A7%8C%EB%93%A4%EA%B8%B0.ipynb



2

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



#windows에서

아나콘다 프롬프트 실행



3

주피터 노트북 실행



4

llm 지정



5

# 라이브러리들 설치


!pip install langchain


!pip install langchain_community



6

!pip install streamlit



7

!pip install openai



8

# OPENAPI AI 변경


import streamlit as st

from langchain.chat_models import ChatOpenAI

from langchain.prompts import PromptTemplate

from langchain.chains import LLMChain

from langchain.memory import ConversationBufferMemory

import os

os.environ["OPENAI_API_KEY"] = "sk" #openai 키 입력




# 제공되는 py 소스 파일로 실행하면 잘된다.


610 번역.png



9

# 웹페이지에 보여질 내용

langs = ["Korean", "Japanese", "chinese", "English"] #번역을 할 언어를 나열

left_co, cent_co,last_co = st.columns(3)


#웹페이지 왼쪽에 언어를 선택할 수 있는 라디오 버튼

with st.sidebar:

language = st.radio('번역을 원하는 언어를 선택해주세요.:', langs)


st.markdown('### 언어 번역 서비스예요~')

prompt = st.text_input('번역을 원하는 텍스트를 입력하세요') #사용자의 텍스트 입력


trans_template = PromptTemplate(

input_variables=['trans'],

template='Your task is to translate this text to ' + language + 'TEXT: {trans}'

) #해당 서비스가 번역에 대한 것임을 지시


#momory는 텍스트 저장 용도

memory = ConversationBufferMemory(input_key='trans', memory_key='chat_history')


llm = ChatOpenAI(temperature=0.0,model_name='gpt-4')

trans_chain = LLMChain(llm=llm, prompt=trans_template, verbose=True, output_key='translate', memory=memory)


# 프롬프트(trans_template)가 있으면 이를 처리하고 화면에 응답을 작성

if st.button("번역"):

if prompt:

response = trans_chain({'trans': prompt})

st.info(response['translate'])





10

c:\Users\seo\anaconda3\envs\llm\Scripts>streamlit run tr.py





# 쥬피터 노트북에서 라이블러리들 설치 하지 않고 실행하면 아래처럼 모듈이 없다고 나온다.



오류 내용 ?


2024-11-13 17:02:42.901 Thread 'MainThread': missing ScriptRunContext! This warning can be ignored when running in bare mode. C:\Users\seo\AppData\Local\Temp\ipykernel_1040\496781053.py:20: LangChainDeprecationWarning: The class `ChatOpenAI` was deprecated in LangChain 0.0.10 and will be removed in 1.0. An updated version of the class exists in the langchain-openai package and should be used instead. To use it run `pip install -U langchain-openai` and import as `from langchain_openai import ChatOpenAI`. llm = ChatOpenAI(temperature=0.0,model_name='gpt-4')



11

# 쥬피터 노트북에서 라이블러리들 설치 하지 않고 실행하면 아래처럼 모듈이 없다고 나온다.


번역 서비스 py 파일 실행 오류

600 번역서비스.png





<7> 서비스7- 메일 작성기 - 스트림릿,아나콘다 - 잘됨



메일을 작성해주는 예제.

720 한게임.png


1

메일 작성서비스 ?

모임이 있어요 입력

[예제를 보여 주세요] 버튼을 클릭하면 이메일을 작성해주는 서비스를 만들자.

https://github.com/gilbutITbook/080413/blob/main/%EC%8B%A4%EC%8A%B5/5%EC%9E%A5/5_7_%EB%A9%94%EC%9D%BC_%EC%9E%91%EC%84%B1%EA%B8%B0_%EB%A7%8C%EB%93%A4%EA%B8%B0.ipynb



2

아나콘다 프롬프트



3

!pip install streamlit

!pip install langchain

!pip install openai



4

import streamlit as st

import os

os.environ["OPENAI_API_KEY"] = "sk-proj-fMLWHM_1ENA06iDl86IA" #openai 키 입력


st.set_page_config(page_title="이메일 작성 서비스예요~", page_icon=":robot:")

st.header("이메일 작성기")



5

def getEmail():

input_text = st.text_area(label="메일 입력", label_visibility='collapsed',

placeholder="당신의 메일은...", key="input_text")

return input_text


input_text = getEmail()



6

# 이메일 변환 작업을 위한 템플릿 정의

query_template = """

메일을 작성해 주세요.

아래는 이메일입니다:

이메일: {email}

"""


7

from langchain import PromptTemplate

# PromptTemplate 인스턴스 생성

prompt = PromptTemplate(

input_variables=["email"],

template=query_template,

)



8

from langchain.chat_models import ChatOpenAI

# 언어 모델을 호출합니다

def loadLanguageModel():

llm = ChatOpenAI(temperature=0.0,model_name='gpt-4')

return llm



9

# 예시 이메일을 표시

st.button("*예제를 보여주세요*", type='secondary', help="봇이 작성한 메일을 확인해보세요.")

st.markdown("### 봇이 작성한 메일은:")


if input_text:

llm = loadLanguageModel()

# PromptTemplate 및 언어 모델을 사용하여 이메일 형식을 지정

prompt_with_email = prompt.format(email=input_text)

formatted_email = llm.predict(prompt_with_email)

# 서식이 지정된 이메일 표시

st.write(formatted_email)



# 반응이 없다. 정상.



10

# 주피터 노트에서 .py 확장자료 다운 받자. = File > Save and Export Notebook > Executable Scropt 선택



11

도스창에서

streamlit run em3.py



실행하자.

1200 팀회식.png



12

원본 오류, 수정함!!


# 제공하는 email.py에서 get_ipy 부분 삭제 - 불필요하게 들어가 있음.


700 오류.png






<8> 서비스 8- CSV 파일 분석하기 - 아나콘다 - 잘됨



800 csv.png



CSV 파일(Excel)파일을 읽고 , 원하는 것을 묻고 답변을 받는 서비스



1

가상환경 하나 추가로 만들자

판다스 사용하려 한다. = 파이썬 3.9 이상에서 동작한다.


2

Windows에서 아나콘다 프롬프트 실행



3

conda create -n llm2 python=3.9

activate llm2

pip install ipykernel

python -m ipykernel install --user --name llm39 --display-name "llm39"

jupyter notebook



4

NEW > llm39 선택하여 사용



5

# 라이브러리 설치하자.

# langchain-experimental 는 판다스 사용을 위해 필요하다.



!pip install langchain-experimental

!pip install tabulate

!pip install pandas

!pip install openai



6

# CSV 파일을 C:/data 폴더에 넣어두자.

CSV파일의 형식은 다음과 같다.





import pandas as pd #파이썬 언어로 작성된 데이터를 분석 및 조작하기 위한 라이브러리


#csv 파일을 데이터프레임으로 가져오기

df = pd.read_csv('c:/data/booksv_02.csv') #booksv_02.csv 파일이 위치한 경로 지정

df.head()


결과

799 data.png



7

# OPENAI API 키 입력하기


from langchain_experimental.agents.agent_toolkits import create_pandas_dataframe_agent

from langchain.chat_models import ChatOpenAI

from langchain.agents.agent_types import AgentType

import os

os.environ["OPENAI_API_KEY"] = "sk-proj-febmAeqQRjKvXZvN iDl86 IA" #openai 키 입력


#에이전트 생성

agent = create_pandas_dataframe_agent(

ChatOpenAI(temperature=0, model='gpt-4o'), #gpt-3.5-turbo 사용

df, #데이터가 담긴 곳

verbose=False, #추론 과정을 출력하지 않음

agent_type=AgentType.OPENAI_FUNCTIONS,

allow_dangerous_code=True,

)




8

결과 확인?


# 카운트 높은 것에 대해 문의, 가장 최근 출간된 책 문의


agent.run('어떤 제품의 ratings_count가 제일 높아?')


agent.run('가장 최근에 출간된 책은?')


800 csv.png




9

# 소스 모음


https://github.com/gilbutITbook/080413/tree/main/%EC%8B%A4%EC%8A%B5/5%EC%9E%A5






<9> 추가 가능한 서비스 소개



1

고객센터 상담원 사용 매뉴얼 제공 서비스?


기존 상담원에서 바뀐 화장품에 대한 추가 교육

신규 입사한 상담원에게 이전 버전과 바뀐 버전에 대한 교육필요로 비용, 시간 부담 가중

LLM을 이용해 스크립트 생성


동작)

xx 상품에 대해 이전 버전과 비교 설명해 줘?


화장품 DB에서 검색

검색 결과 반환

질문 +검색 결과 반환로 LLM에 문의

스크립트 생성

상담원이 스크립트 보고 답변함.




2

상품 추천?


동작)

최근 유행하는 청바지는? 묻는다.

검색 엔진을 통해 가장 많이 팔린 청바지 확인.

최근 유행하는 청바지 + 검색 엔진을 통해 가장 많이 팔린 청바지 확인.으로 질문

LLM이 답변한다.



3

보험 가입 신청 검토?


보험료, 가입 조건을 결정해 계약의 승낙/거절 여부를 판단.


동작)

보험 가입 여부 질의 - 사용자 정보 확인 (질병여부, 최근 3년 내 보험금 지급내역 등)- 질문 + 검색결과 - 가입?





다음

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


keyword
매거진의 이전글AI 1탄-2. 랭체인으로 AI서비스 개발하기