"복잡한 웹개발 없이도 챗봇을 만들 수 있을까?" 이런 생각 한 번쯤 해보셨죠? 놀랍게도 단 20줄의 Python 코드로 실제 작동하는 선택형 FAQ 챗봇을 만들 수 있다면 믿으시겠나요?
오늘은 Streamlit이라는 마법같은 도구로 HTML/CSS 몰라도 되는 초간단 챗봇 제작법을 완전 정복해보겠습니다. 코딩 왕초보도 3분이면 뚝딱 완성!
💡 왜 지금 챗봇을 만들어야 할까?
ChatGPT의 등장 이후, 챗봇은 더 이상 대기업만의 전유물이 아닙니다. 개인 블로그부터 소규모 비즈니스까지, 챗봇은 필수 도구가 되었죠.
- 24시간 고객 응대 가능
- 반복적인 질문 자동 처리
- 사용자 경험 획기적 개선
- 개발 비용 대폭 절약
=
🛠️ FAQ 챗봇 제작에 필요한 것들
믿을 수 없을 정도로 간단합니다:
기술 스택:
- Python (기본 문법만)
- Streamlit (웹앱 프레임워크)
개발 환경:
- Python 설치 (python.org에서 다운로드)
- 메모장이나 Visual Studio Code
- 터미널 또는 명령 프롬프트
소요 시간:
- 코딩: 5분
- 커스터마이징: 10분
- 배포: 5분
🎯 Streamlit FAQ 챗봇 핵심 구현하기
1단계: 기본 설정 및 페이지 구성
Streamlit의 강력함은 단 몇 줄로 웹페이지를 만들 수 있다는 점입니다:
import streamlit as st
st.set_page_config(page_title="선택형 FAQ 챗봇", page_icon="🤖")
st.title("🙋♀️ 선택형 FAQ 챗봇")
2단계: FAQ 데이터 구조 설계
FAQ 챗봇의 핵심은 질문-답변 매핑입니다:
faq_map = {
"배송은 얼마나 걸려?" : "📦 배송은 결제 후 2~3일 이내 도착해!",
"환불은 어떻게 해?" : "💸 환불은 접수되면 보통 3일 안에 처리돼!",
"교환 가능해?" : "🔁 교환은 상품 받은 날부터 7일 안에 가능해.",
"사용법 알려줘" : "📘 사용법은 포장 안쪽 설명서 보면 돼!",
"고객센터 연결" : "☎️ 고객센터는 평일 10시~18시 운영 중이야!"
}
3단계: 선택형 UI 구현
사용자가 클릭 한 번으로 질문할 수 있는 인터페이스를 만듭니다:
selected_question = st.selectbox(
"궁금한 걸 하나 골라줘 👇",
["질문을 선택하세요"] + list(faq_map.keys())
)
if selected_question and selected_question != "질문을 선택하세요":
st.markdown(f"**🙋 너가 고른 질문:** {selected_question}")
st.markdown(f"**🧠 친구봇의 답변:** {faq_map[selected_question]}")
🎨 Streamlit 앱 실행하기
파일 저장 및 실행
- 파일 저장: chatbot.py로 저장
- 터미널 열기: 저장한 폴더로 이동
- 실행 명령어:
streamlit run chatbot.py
- 브라우저 자동 실행: http://localhost:8501
Streamlit 설치 방법
pip install streamlit
주의사항: Python이 설치되어 있어야 합니다!
🚀 FAQ 챗봇 고도화 팁
1. 답변 스타일 다양화
faq_map = {
"배송 문의" : """
📦 **배송 안내**
- 일반배송: 2~3일
- 당일배송: 오후 2시 이전 주문 시
- 택배사: CJ대한통운
""",
"사이즈 문의" : """
📏 **사이즈 가이드**
- S: 어깨 44cm, 가슴 50cm
- M: 어깨 46cm, 가슴 52cm
- L: 어깨 48cm, 가슴 54cm
"""
}
2. 이미지/링크 추가
if selected_question == "사이즈 문의":
st.image("size_guide.jpg", caption="상세 사이즈표")
st.markdown("[📱 모바일 사이즈 가이드](https://yoursite.com/size)")
3. 다중선택 옵션
# 여러 주제 선택 가능
topics = st.multiselect(
"관심있는 주제를 모두 선택하세요:",
["배송", "교환/환불", "사이즈", "재고", "이벤트"]
)
for topic in topics:
if topic in topic_answers:
st.write(f"**{topic}**: {topic_answers[topic]}")
📈 실무 활용 시나리오
쇼핑몰 고객센터 챗봇
ecommerce_faq = {
"배송비는 얼마야?" : "🚚 배송비는 3,000원이고, 30,000원 이상 무료배송!",
"교환 가능한 기간은?" : "📅 상품 수령 후 7일 이내 교환 가능해!",
"결제 방법은?" : "💳 카드결제, 계좌이체, 카카오페이, 네이버페이 가능!",
"적립금 사용법은?" : "🎯 결제 시 적립금 사용 체크하면 자동 차감돼!"
}
카페/식당 주문 챗봇
restaurant_faq = {
"메뉴 추천해줘" : "👨🍳 오늘의 추천: 크림파스타 + 시저샐러드 세트!",
"포장 가능해?" : "📦 모든 메뉴 포장 가능! 포장비 별도 500원",
"예약 방법은?" : "📞 전화예약 또는 방문예약 가능해요!",
"주차장 있어?" : "🅿️ 건물 지하 1층에 무료 주차장 운영 중!"
}
학원/교육기관 상담 챗봇
academy_faq = {
"수강료는 얼마야?" : "💰 기초반 월 15만원, 심화반 월 20만원이에요!",
"환불 규정은?" : "📋 수강 시작 전 100%, 1주일 후 70% 환불 가능!",
"시간표 알려줘" : "⏰ 평일반: 19~21시 / 주말반: 14~18시",
"무료체험 있어?" : "🎁 첫 수업 무료체험 가능! 미리 예약 필수!"
}
🔧 고급 기능 추가하기
사용자 피드백 수집
# 답변 후 만족도 조사
if selected_question != "질문을 선택하세요":
satisfaction = st.radio(
"답변이 도움이 되었나요?",
["😊 매우 도움됨", "😐 보통", "😞 아쉬움"]
)
if satisfaction == "😞 아쉬움":
feedback = st.text_area("어떤 점이 아쉬웠는지 알려주세요:")
if st.button("피드백 전송"):
# 피드백 저장 로직
st.success("소중한 의견 감사합니다! 🙏")
검색 기능 추가
# 키워드로 FAQ 검색
search_term = st.text_input("🔍 키워드로 검색하기:")
if search_term:
matching_faqs = {k: v for k, v in faq_map.items()
if search_term.lower() in k.lower()}
if matching_faqs:
st.write(f"**'{search_term}' 관련 {len(matching_faqs)}개 결과:**")
for q, a in matching_faqs.items():
st.write(f"**Q:** {q}")
st.write(f"**A:** {a}")
st.write("---")
통계 및 분석
import datetime
# 질문 선택 시 로그 저장
if selected_question != "질문을 선택하세요":
# 실제로는 데이터베이스에 저장
st.session_state.setdefault('question_log', []).append({
'question': selected_question,
'timestamp': datetime.datetime.now()
})
# 간단한 통계 표시
if st.checkbox("📊 이용 통계 보기"):
questions = [log['question'] for log in st.session_state.get('question_log', [])]
question_counts = {q: questions.count(q) for q in set(questions)}
st.bar_chart(question_counts)
🌟 Streamlit 챗봇 배포하기
1. Streamlit Community Cloud (무료)
- GitHub 저장소에 코드 업로드
- streamlit.io에서 Connect repository
- 자동 배포 및 무료 도메인 제공
- yourapp.streamlit.app 형태 URL
2. Heroku (무료 티어 종료, 유료)
# requirements.txt 생성
echo "streamlit" > requirements.txt
# Procfile 생성
echo "web: streamlit run chatbot.py --server.port $PORT" > Procfile
3. Railway (월 $5)
- GitHub 연동 원클릭 배포
- 자동 HTTPS 적용
- 커스텀 도메인 연결 가능
🎯 마무리: 지금 바로 시작하세요!
"Python도 모르는데 챗봇이 가능할까?"라고 생각하셨나요?
위에서 보신 것처럼, Streamlit을 사용하면 단 20줄의 코드로 실제 작동하는 FAQ 챗봇을 만들 수 있습니다.
중요한 것은 첫 걸음을 내딛는 것이죠.
다음 단계는?
- Python 설치 (python.org)
- Streamlit 설치: pip install streamlit
- 위의 코드를 복사해서 실행해보세요
- 나만의 FAQ 내용으로 커스터마이징하세요
- Streamlit Community Cloud에 무료 배포해보세요
더 나아가기
- OpenAI API 연동으로 AI 챗봇 만들기
- 데이터베이스 연결로 실시간 FAQ 관리
- 다국어 지원 기능 추가
- 음성 인식/합성 기능 구현
- 카카오톡/네이버톡톡 연동
"AI 시대의 챗봇 개발자가 되고 싶다면, 오늘 당장 시작하세요!"
완성된 전체 코드
import streamlit as st
st.set_page_config(page_title="선택형 FAQ 챗봇", page_icon="🤖")
st.title("🙋♀️ 선택형 FAQ 챗봇")
# ✅ 미리 정의된 질문-답변 맵
faq_map = {
"배송은 얼마나 걸려?" : "📦 배송은 결제 후 2~3일 이내 도착해!",
"환불은 어떻게 해?" : "💸 환불은 접수되면 보통 3일 안에 처리돼!",
"교환 가능해?" : "🔁 교환은 상품 받은 날부터 7일 안에 가능해.",
"사용법 알려줘" : "📘 사용법은 포장 안쪽 설명서 보면 돼!",
"고객센터 연결" : "☎️ 고객센터는 평일 10시~18시 운영 중이야!"
}
# ✅ 선택형 질문 UI
selected_question = st.selectbox(
"궁금한 걸 하나 골라줘 👇",
["질문을 선택하세요"] + list(faq_map.keys())
)
# ✅ 답변 출력
if selected_question and selected_question != "질문을 선택하세요":
st.markdown(f"**🙋 너가 고른 질문:** {selected_question}")
st.markdown(f"**🧠 친구봇의 답변:** {faq_map[selected_question]}")
💬 이 글이 도움이 되셨다면 댓글로 여러분만의 FAQ 챗봇 아이디어를 공유해주세요!
'개발 > Python' 카테고리의 다른 글
네이버 부동산 크롤링 방법 - 모든 사이트 활용가능 (2) | 2025.06.10 |
---|---|
엑셀 파일 100개, 자동 병합하기 (Python 자동화) (0) | 2025.04.19 |
파이썬 맥북으로 exe파일 만들기 (자동배포 가능) (0) | 2025.04.10 |
주식 이익률, 손익절 계산기 프로그램 무료 배포 (2) | 2025.04.08 |
PDF ↔ Word 무료 변환 프로그램 배포 (자동 변환 지원) (2) | 2025.04.07 |