brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Nov 13. 2024

AI 1탄-3. 랭체인을 활용한 AI서비스 8개-3/3

랭체인을 활용한 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

산출물




7

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


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

변경전

gpt-4-0314


변경후 

gpt-4



8



9

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



10

# windows 10 pc에서

Anaconda Prompt  실행


jupyter notebook 사용

LLM으로 변경하자



11





12

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




<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

순서

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를 올리면 요약해서 보여 준다.


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 키 변경하기!!!



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



2

아나콘다 프롬프트

쥬피터 노트 사용

기본 OPENAI APIKEY 입력

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




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





3

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







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



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

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




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





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



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- 번역서비스 - 스트림릿,아나콘다 - 잘됨



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

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






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 소스 파일로 실행하면 잘된다.




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 파일 실행 오류 





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



메일을 작성해주는 예제.


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 



실행하자.



12

원본 오류 , 수정함!!


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







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





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()


결과



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-febmAeqQRjKvXZvNA06iDl86IA" #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('가장 최근에 출간된 책은?')





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


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