1. 들어가며
안녕하세요! 이번 글에서는 Streamlit을 활용해 ChatGPT 스타일의 대화형 챗봇 서비스를 개발하는 방법을 단계별로 설명하겠습니다. 최근 자연어 처리(NLP) 기술의 발전으로 인해 챗봇 개발이 더욱 쉬워지고 있으며, 누구나 쉽게 구현할 수 있는 환경이 갖춰지고 있습니다.
특히 Streamlit은 파이썬 기반의 강력한 웹 애플리케이션 프레임워크로, 머신러닝이나 데이터 시각화뿐만 아니라 인터랙티브한 챗봇 애플리케이션도 손쉽게 개발할 수 있습니다. 이번 가이드에서는 Streamlit의 Chat Elements 기능을 활용하여, 간단한 에코 봇부터 ChatGPT API를 이용한 AI 챗봇까지 단계적으로 만들어 보겠습니다.
2. Streamlit 설치 및 기본 사용법
2.1. Streamlit 설치하기
먼저 Streamlit을 설치해야 합니다. 파이썬이 설치된 환경에서 터미널 또는 명령 프롬프트를 열고 다음 명령어를 실행하세요.
pip install streamlit
설치가 완료되면 Streamlit이 정상적으로 동작하는지 확인하기 위해 아래 명령어를 실행합니다.
streamlit hello
브라우저가 열리면서 Streamlit의 기본 예제 애플리케이션이 실행되면 설치가 정상적으로 완료된 것입니다.
2.2. Streamlit 앱 실행하기
Streamlit 애플리케이션을 실행하려면, 다음과 같이 .py 파일을 생성하고 실행하면 됩니다.
streamlit run your_script.py
실행하면 로컬 서버가 시작되고, 브라우저에서 Streamlit 웹 애플리케이션이 표시됩니다.
3. Streamlit Chat Elements 활용하기
Streamlit은 기본적으로 데이터 시각화 및 대시보드를 위한 라이브러리이지만, 최근 업데이트된 Chat Elements를 활용하면 쉽게 챗봇 UI를 만들 수 있습니다.
3.1. st.chat_message 사용법
Streamlit에서 채팅 메시지 컨테이너를 만들려면 st.chat_message를 사용합니다.
import streamlit as st
with st.chat_message("assistant"):
st.write("안녕하세요! 무엇을 도와드릴까요?")
이렇게 하면 챗봇의 메시지가 사용자 인터페이스에 출력됩니다.
3.2. st.chat_input 사용법
사용자의 입력을 받을 때는 st.chat_input을 활용합니다.
import streamlit as st
prompt = st.chat_input("메시지를 입력하세요")
if prompt:
st.write(f"당신: {prompt}")
사용자가 입력한 메시지는 prompt 변수에 저장되고, 화면에 출력됩니다.
4. 간단한 챗봇 개발하기
이제 배운 내용을 활용하여 간단한 랜덤 응답 챗봇을 만들어 보겠습니다.
4.1. 랜덤 응답 챗봇 구현
import streamlit as st
import random
st.title("Simple Chat")
def get_response():
responses = [
"안녕하세요! 무엇을 도와드릴까요?",
"오늘도 좋은 하루 되세요!",
"저는 당신의 질문에 최선을 다해 답변드리겠습니다."
]
return random.choice(responses)
if "messages" not in st.session_state:
st.session_state.messages = []
for msg in st.session_state.messages:
with st.chat_message(msg["role"]):
st.markdown(msg["content"])
if prompt := st.chat_input("메시지를 입력하세요"):
st.session_state.messages.append({"role": "user", "content": prompt})
with st.chat_message("user"):
st.markdown(prompt)
response = get_response()
st.session_state.messages.append({"role": "assistant", "content": response})
with st.chat_message("assistant"):
st.markdown(response)
위 코드에서는 세션 상태 (st.session_state) 를 활용하여 대화 기록을 유지하고 있습니다.
5. OpenAI ChatGPT API를 활용한 대화형 챗봇 만들기
이제 OpenAI의 ChatGPT API를 활용하여 더욱 똑똑한 챗봇을 만들어 보겠습니다.
5.1. OpenAI API 설정
먼저 OpenAI의 openai 패키지를 설치합니다.
pip install openai
API 키를 발급받은 후 .streamlit/secrets.toml 파일을 만들어 저장합니다.
openai_api_key = "your_api_key"
5.2. ChatGPT 챗봇 구현
import streamlit as st
import openai
openai.api_key = st.secrets["openai_api_key"]
if "messages" not in st.session_state:
st.session_state.messages = []
for msg in st.session_state.messages:
with st.chat_message(msg["role"]):
st.markdown(msg["content"])
if prompt := st.chat_input("메시지를 입력하세요"):
st.session_state.messages.append({"role": "user", "content": prompt})
with st.chat_message("user"):
st.markdown(prompt)
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=st.session_state.messages,
stream=True
)
generated_text = ""
for chunk in response:
if "delta" in chunk["choices"][0]:
if "content" in chunk["choices"][0]["delta"]:
generated_text += chunk["choices"][0]["delta"]["content"]
with st.chat_message("assistant"):
st.markdown(generated_text)
st.session_state.messages.append({"role": "assistant", "content": generated_text})
이제 실행하면 실시간으로 응답을 생성하는 ChatGPT 챗봇을 사용할 수 있습니다.
6. 마무리
이번 포스팅에서는 Streamlit을 활용한 ChatGPT 스타일 챗봇을 단계별로 구현해 보았습니다.
- Streamlit의 기본 사용법을 익히고,
- Chat Elements를 활용한 기본 챗봇을 만들고,
- OpenAI API를 연동하여 AI 챗봇을 개발했습니다.
Streamlit을 활용하면 데이터 기반 챗봇, 고객 서비스 챗봇, 음성 어시스턴트 등 다양한 AI 서비스를 손쉽게 만들 수 있습니다. 여러분도 직접 챗봇을 개발해 보며 가능성을 탐색해 보시길 바랍니다! 🚀
'IT' 카테고리의 다른 글
스트림릿(Streamlit) 완벽 가이드: 설치부터 기본 개념까지 (0) | 2025.02.25 |
---|---|
Streamlit 멀티페이지 앱 개발 가이드: 단계별 튜토리얼 (0) | 2025.02.25 |
클로드(Claude) API 사용법: 시작부터 실전까지 (0) | 2025.02.25 |
아마존 베드록(Bedrock)이란? 대규모 AI 모델 개발을 위한 혁신적인 플랫폼 (0) | 2025.02.25 |
Ollama란? 내 PC에서 무료로 LLM 실행하기 (0) | 2025.02.25 |