Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 프메
- inxos
- nixos한글키보드
- nixos한글설정\
- EnhancedInput
- Express
- 미니프로젝트
- 알고풀자
- 언리얼뮤지컬
- R
- 으
- 디자드
- 스트림릿
- 판다스
- 오픈소스
- JWT
- ossca
- 정글사관학교
- 마인크래프트뮤지컬
- VUE
- flask
- Jinja2
- 지우개신공 #pc자기진단 #ram미인식 #컴퓨터고장해결 #램인식불량 #pc자가수리 #컴퓨터고장해결 #조립pc
- 메모리인식불량
- 파이썬서버
- pandas
- Enhanced Input System
- Bootstrap4
- streamlit
- 블랙스크린복구
Archives
- Today
- Total
Today, I will
[Rag, OpenAI] RAG 기반 피터래빗이야기 챗봇 구축하기 (LangChain + OpenAI + Streamlit) 본문
Computer Science/인공지능,딥러닝
[Rag, OpenAI] RAG 기반 피터래빗이야기 챗봇 구축하기 (LangChain + OpenAI + Streamlit)
Lv.Forest 2025. 4. 30. 20:20
피터래빗이야기 PDF 파일을 기반으로, GPT와 LangChain을 활용해 RAG 기반 대화형 챗봇을 만들어보았습니다.
📁 1. PDF 파일 준비
먼저 프로젝트 루트 디렉토리 아래에 `pdf` 폴더를 만들고, 여기에 오만과 편견 PDF 파일을 넣어줍니다:
project/
└── pdf/
└── 파일명.pdf
Kids-Stories-Peter-Rabbit.pdf
1.08MB
🧠 2. GPT 처리 모듈: `gpt_proc.py`
# gpt_proc.py
from langchain.prompts import PromptTemplate
from langchain_openai import ChatOpenAI
from langchain_community.document_loaders import PyPDFLoader
from langchain_openai import OpenAIEmbeddings
from langchain_community.vectorstores import FAISS
from langchain.text_splitter import RecursiveCharacterTextSplitter, TextSplitter
from langchain.chains import RetrievalQA, ConversationalRetrievalChain
mylist =[]
def create_vector():
print("create vector")
pdfloader = PyPDFLoader( 'pdf/Kids-Stories-Peter-Rabbit.pdf')
document = pdfloader.load()
txt_split = RecursiveCharacterTextSplitter( chunk_size=500, chunk_overlap=20 )
docs = txt_split.split_documents( document )
embedding = OpenAIEmbeddings( model='text-embedding-ada-002')
vdb = FAISS.from_documents( docs, embedding )
return vdb
def convesation_response( question, hist):
result = qa_chain.invoke( {'question':question, 'chat_history':hist} )
return result['answer']
gpt = ChatOpenAI( model='gpt-3.5-turbo', temperature=0)
vdb = create_vector()
retriever= vdb.as_retriever( )
qa_chain = ConversationalRetrievalChain.from_llm(llm=gpt,
retriever=retriever )
💬 3. Streamlit 챗봇 UI: `chatbot.py`
# chatbot.py
import streamlit as st
from streamlit_chat import message
from gpt_proc import convesation_response, mylist
if "history" not in st.session_state:
st.session_state['history'] =[]
response_container = st.container()
with st.form("rag chat", clear_on_submit=True):
user_input = st.text_input('User')
submit = st.form_submit_button('send')
if submit:
response = convesation_response(user_input,
st.session_state['history'] )
st.session_state['history'].append((user_input,response) )
mylist.append( user_input )
print( mylist)
with response_container:
for u, r in st.session_state['history']:
message( u, avatar_style="fun-emoji" ,is_user=True)
message( r, avatar_style="bottts")
# st.write( response)
▶️ 4. 실행 방법
터미널에서 아래 명령어로 실행할 수 있습니다:
streamlit run chatbot.py
'Computer Science > 인공지능,딥러닝' 카테고리의 다른 글
RAG 기반 Chat PDF 챗봇 만들기 | LangChain, Cohere, OpenAI API로 나만의 문서 질문 시스템 만들기 (1) | 2025.05.01 |
---|---|
[Rag, OpenAI] 웹로더 기반 크롤링 챗봇 구축하기 (LangChain + OpenAI + Streamlit) (1) | 2025.04.30 |
[Rag, OpenAI] RAG 기반 오만과 편견 챗봇 구축하기 (LangChain + OpenAI + Streamlit) (0) | 2025.04.30 |
Naive RAG, 라마인덱스 간단 구성 (0) | 2025.04.28 |
[streamlit] 스트림릿 기초 ui부터 텍스트 및 이미지 서버 저장, Pandas를 통한 디비 시각화까지 다양한 실습 예제 (0) | 2025.04.16 |