콘텐츠로 건너뛰기

나만의 GPT 채팅 서비스를 Streamlit으로 만들기

  • 기준


나만의 GPT 채팅 서비스를 Streamlit으로 만들기

제가 직접 체크해본 결과로는, Streamlit을 이용하여 나만의 GPT 채팅 서비스를 만드는 과정은 매우 흥미롭고 유익했습니다. 이 글에서는 그 방법을 쉽게 설명드릴게요. 아래를 읽어보시면, 여러분도 금방 따라 하실 수 있습니다!

1. OpenAPI 키 발급 받기

Streamlit으로 시작하기 전에, 먼저 OpenAI에서 API 키를 발급받아야 해요. OpenAI의 웹사이트에 가서 회원가입을 하신 후, Dashboard로 이동하여 API Keys에서 키를 발급받으시면 됩니다.

아래는 발급받는 단계의 흐름이에요:

단계설명
1OpenAI 웹사이트 방문
2회원가입
3Dashboard로 이동
4API Keys 생성

이 키는 GPT 모델에 접근하기 위한 필수적인 요소이고, 이후 코드에서 사용되니 잘 보관하셔야 해요.

 



👉 ✅ 상세정보 바로 확인 👈

 

1-1. API 키 저장하기

API 키는 보안을 위해 환경 변수에 저장하는 것이 좋습니다. 제 경우에는 다음과 같이 Python 코드를 사용하여 설정했어요:

python
import os
os.environ["OPENAI_API_KEY"] = "your_key_here"

이렇게 하면 코드에서 API 키를 안전하게 사용할 수 있습니다.

1-2. Streamlit 설치하기

Streamlit을 사용하기 위해 먼저 설치가 필요해요. “pip install streamlit” 명령어로 간단하게 설치할 수 있습니다. 제 경우에는 아래와 같이 명령어를 입력했어요:

bash
pip install streamlit

2. 기본적인 Streamlit Chat UI 만들기

이제 본격적으로 Streamlit을 사용해 채팅 UI를 만들어볼게요. 아래 코드는 기본적인 UI 구조를 잡은 것입니다.

“`python
import streamlit as st

st.set_page_config(page_title=”S Chat”, page_icon=”💬”)
st.title(“💬Streamlit CHAT”)

if “messages” not in st.session_state:
st.session_state[“messages”] = []

if user_input := st.chat_input(“메시지를 입력해 주세요.”):
st.session_state[“messages”].append(user_input)
st.chat_message(“user”).write(user_input)
“`

이렇게 하면 기본적인 채팅창이 만들어져요. 사용자로부터 입력받은 메시지는 세션 상태에 저장할 수 있습니다.

2-1. 메시지 기록하기

채팅 내용을 기록하는 것이 중요해요. 아래 코드는 입력된 메시지를 저장하고 표시하는 부분입니다.

python
def print_messages():
if "messages" in st.session_state:
for message in st.session_state["messages"]:
st.chat_message("user").write(message)

이 코드를 사용해서 이전 메시지를 화면에 표시할 수 있어요. 사용자가 전송한 메시지가 화면에 나타나게 됩니다.

2-2. 채팅 내용 초기화 버튼 추가하기

사용자가 필요할 때 대화 기록을 초기화 할 수 있도록 버튼을 추가할 수 있어요. 이를 통해 새로운 세션을 시작할 수 있습니다.

python
if st.button("대화 기록 초기화"):
st.session_state["messages"] = []

3. GPT 응답 생성하기

이제 사용자가 입력한 내용을 바탕으로 GPT 모델이 응답을 생성하도록 코드를 추가할 차례에요. 아래 코드에서 ChatOpenAI를 사용하여 모델을 생성하고 응답을 받는 과정을 보여줍니다.

“`python
from langchain_openai import ChatOpenAI

if user_input := st.chat_input(“메시지를 입력해 주세요.”):
# User input and model response handling here
llm = ChatOpenAI(openai_api_key=os.getenv(“OPENAI_API_KEY”))
“`

3-1. 응답 처리하기

모델의 응답을 사용자에게 보여주기 위해서는 아래와 같이 처리할 수 있습니다.

python
response = llm.generate(user_input)
st.chat_message("assistant").write(response)

이렇게 하면 GPT가 생성한 응답이 화면에 나타납니다.

3-2. 세션 관리하기

각 사용자 세션에 따라 대화 내용을 별도로 관리할 수 있도록 세션 ID를 사용하는 것도 좋습니다. 이를 통해 각 사용자가 대화 내용을 독립적으로 유지할 수 있게 돼요.

python
session_id = st.text_input("Session ID", "test_session")

4. 애플리케이션 실행하기

모든 코드를 다 작성하였다면, 이제 Streamlit 애플리케이션을 실행해 봅시다. 아래 명령어를 사용하면 됩니다.

bash
streamlit run your_script.py

이렇게 실행하면, 웹 브라우저에서 채팅 애플리케이션을 확인할 수 있어요.

4-1. 웹 인터페이스 확인하기

브라우저에 들어가면, 여러분이 만든 채팅 UI가 보이고 사용자가 입력한 메시지에 대해 GPT가 실시간으로 응답하는 모습을 확인할 수 있습니다.

4-2. 추가 기능 고려하기

추가적으로 파일 업로드, 다양한 입력 방식(예: 바탕화면에서의 드래그 앤 드롭 등)과 같은 기능을 더해 본격적인 서비스로 발전시킬 수 있습니다.

자주 묻는 질문 (FAQ)

GPT 채팅 서비스는 무료인가요?

아니요, OpenAI의 API 사용에는 요금이 발생할 수 있습니다. 사용량에 따라 요금이 달라요.

Streamlit은 어떤 장점이 있나요?

Streamlit은 데이터 앱을 빠르게 개발할 수 있도록 돕는 간편한 프레임워크입니다.

채팅 기록은 어떻게 저장하나요?

채팅 기록은 세션 상태에 저장하여 관리합니다.

사용자 인증이 필요한가요?

특별한 요구사항이 없다면 별도의 인증 없이 사용 가능합니다.

모두의 편리한 사용을 위해, 이 과정과 방법들은 언제든지 수정 및 개선 할 수 있으며, 여러분만의 고유한 챗봇 서비스를 만들기 위한 기초를 제공하길 바랍니다.

키워드: streamlit, GPT 채팅 서비스, OpenAI, Python, 코딩, 사용자 인터페이스, 모델 응답, 세션 관리, API 키, 실시간 응답, 데이터 앱