Categories: 'IT 인터넷'

나만의 Chatgpt + RAG 시스템 만들기 with streamit

streamlit-chat은 Streamlit을 이용하여 실시간 대화형 Web 애플리케이션을 쉽게 만들 수 있는 패키지입니다. 만드는 방법은 매우 간단합니다. 나만의 chatgpt 를 만들거나, 아니면 Pdf 등의 문서를 참고해서 답변을 할 수 있도록 만들 수도 있습니다.

예제파일 확인 링크 : https://ai-ynk.streamit.io

streamlit-chat으로 Hugging Face에서 제공하는 Facebook AI BlenderBot과 OpenAI의 GPT-3 모델로 챗봇 프로그램을 만들어 보겠습니다.


1. 설치 (Installation)

streamlit과 streamlit-chat 패키지 설치는 pip 명령어를 이용하여 설치할 수 있습니다.

pip install streamlit
pip install streamlit-chat

streamlit 설치와 관련된 내용은 이전 글을 참고하시기 바랍니다.

Streamlit 시작하기 (설치방법)

Streamlit은 Machine learning과 Data science project에서 사용자가 Web 애플리케이션을 쉽게 생성하고 공유할 수 있는 Python 오픈 소스 라이브러리입니다. Streamlit을 사용하면 최소한의 코드와 노력으로 interac

yunwoong.tistory.com

2. BlenderBot 챗봇

BlenderBot은 Hugging Face의 Transformers 라이브러리를 이용하여 쉽게 사용할 수 있습니다. 먼저 Hugging Face Inference API Key 발급을 진행합니다. 아래 글을 참고하세요.

Hugging Face Inference API Key 발급

Hugging Face는 자연어 처리를 위해 오픈 소스 도구와 라이브러리를 만들며 인기 있는 Transformers 라이브러리를 비롯한 다양한 제품을 개발하고 있습니다. Inference API는 Hugging Face가 제공하는 서비스

yunwoong.tistory.com

Python 파일 blenderbot_app.py 을 생성하고 아래와 같이 작성합니다. API_TOKEN은 자신의 Hugging Face Inference API Key 를 입력합니다. (예: hf_xxxxxxxxxxxxxxxxxxxxx)

mport streamlit as st
from streamlit_chat import message
import requests
 
API_URL = "https://api-inference.huggingface.co/models/facebook/blenderbot-400M-distill"
API_TOKEN = "YOUR API TOKEN HERE"
headers = {"Authorization": f"Bearer {API_TOKEN}"}
 
st.header("BlenderBot (Demo)")
st.markdown("[Be Original](https://miracool.co.kr/)")
 
if 'generated' not in st.session_state:
    st.session_state['generated'] = []
 
if 'past' not in st.session_state:
    st.session_state['past'] = []
 
def query(payload):
 response = requests.post(API_URL, headers=headers, json=payload)
 return response.json()
 
 
with st.form('form', clear_on_submit=True):
    user_input = st.text_input('You: ', '', key='input')
    submitted = st.form_submit_button('Send')
 
if submitted and user_input:
    output = query({
        "inputs": {
            "past_user_inputs": st.session_state.past,
            "generated_responses": st.session_state.generated,
            "text": user_input,
        },
        "parameters": {"repetition_penalty": 1.33},
    })
 
    st.session_state.past.append(user_input)
    st.session_state.generated.append(output["generated_text"])
 
if st.session_state['generated']:
    for i in range(len(st.session_state['generated'])-1, -1, -1):
        message(st.session_state['past'][i], is_user=True, key=str(i) + '_user')
        message(st.session_state["generated"][i], key=str(i))
streamlit run blenderbot_app.py

3. GPT-3 챗봇

다음으로 OpenAI API를 이용한 GPT-3 챗봇을 만들도록 하겠습니다.

먼저 OpenAI API를 사용하기 위해 API 키 발급이 필요합니다. 먼저 OpenAI API 사이트로 이동합니다. OpenAI 계정이 필요하며 계정이 없다면 계정 생성이 필요합니다. 간단히 Google이나 Microsoft 계정을 연동 할 수 있습니다. 이미 계정이 있다면 로그인 후 진행하시면 됩니다.

OpenAI API

An API for accessing new AI models developed by OpenAI

platform.openai.com

로그인이 되었다면 우측 상단 Personal -> [ View API Keys ] 를 클릭합니다.

[ + Create new secret key ] 를 클릭하여 API Key를 생성합니다. API key generated 창이 활성화되면 Key 를 반드시 복사하여 두시기 바랍니다. 창을 닫으면 다시 확인할 수 없습니다. (만약 복사하지 못했다면 다시 Create new secret key 버튼을 눌러 생성하면 되니 걱정하지 않으셔도 됩니다.)


매우 간단하게 Web 애플리케이션을 만들어 시뮬레이션이 가능합니다. 만일 개발자가 아닌 데이터 과학자나 AI 모델러인 경우 시뮬레이터를 구축하려면 시간과 노력이 많이 들 수 있지만 Streamlit을 이용한다면 이 과정을 단순화하고 시간을 절약할 수 있을 것 같습니다.

urjent

Share
Published by
urjent

Recent Posts

지동원 현역 은퇴 선언, 런던 올림픽 동메달 주역의 16년 축구 여정 마침표

공격수 지동원 선수가 2026년 9월 7일 자신의 사회관계망서비스를 통해 16년간 이어온 프로 축구선수 생활을 마감한다고…

26분 ago

궁채 논란 중국산 줄기상추 불법 착색제 적발 및 국내 유통 검사 결과

중국에서 줄기상추를 신선해 보이게 하려고 금지된 색소를 입혀 유통한 사실이 드러나며 궁채 논란이 거세지고 있습니다.…

1시간 ago

인도네시아 아낙크라카타우 화산 폭발로 인한 공항 마비와 최신 현지 소식

인도네시아 순다 해협에 위치한 아낙크라카타우 화산이 폭발하면서 전역의 공항 운영이 중단되는 비상 상황이 발생했습니다. 이번…

1일 ago

울진 수난사고 발생, 아들 구한 아버지와 물놀이객 등 4명 사망 비극

경북 울진의 계곡과 해변에서 수난사고가 잇따라 발생하여 총 4명이 사망하는 비극적인 일이 벌어졌습니다. 2026년 9월…

3일 ago

권민아 친언니 횡령 의혹 폭로 및 8억 원 규모 금전 갈등 법적 대응 예고

그룹 에이오에이 출신 배우 권민아가 자신의 친언니가 약 7억 원에서 8억 원에 달하는 금액을 횡령했다는…

4일 ago

여의도 불꽃축제 2026 일정과 명당 자리 거래 및 안전관리 주의사항

2026 서울세계불꽃축제가 9월 5일 토요일 여의도 한강공원 일대에서 성대하게 개최됩니다. 이번 행사는 한국과 미국, 영국…

4일 ago