제가 직접 체크해본 결과로는, Streamlit을 이용하여 나만의 GPT 채팅 서비스를 만드는 과정은 매우 흥미롭고 유익했습니다. 이 글에서는 그 방법을 쉽게 설명드릴게요. 아래를 읽어보시면, 여러분도 금방 따라 하실 수 있습니다!
1. OpenAPI 키 발급 받기
Streamlit으로 시작하기 전에, 먼저 OpenAI에서 API 키를 발급받아야 해요. OpenAI의 웹사이트에 가서 회원가입을 하신 후, Dashboard로 이동하여 API Keys에서 키를 발급받으시면 됩니다.
아래는 발급받는 단계의 흐름이에요:
| 단계 | 설명 |
|---|---|
| 1 | OpenAI 웹사이트 방문 |
| 2 | 회원가입 |
| 3 | Dashboard로 이동 |
| 4 | API 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 키, 실시간 응답, 데이터 앱
