쇼핑몰 카카오톡 챗봇(chatbot)만들기

"복잡한 웹개발 없이도 챗봇을 만들 수 있을까?" 이런 생각 한 번쯤 해보셨죠? 놀랍게도 단 20줄의 Python 코드로 실제 작동하는 선택형 FAQ 챗봇을 만들 수 있다면 믿으시겠나요?

오늘은 Streamlit이라는 마법같은 도구로 HTML/CSS 몰라도 되는 초간단 챗봇 제작법을 완전 정복해보겠습니다. 코딩 왕초보도 3분이면 뚝딱 완성!

chatbot용

💡 왜 지금 챗봇을 만들어야 할까?

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 앱 실행하기

파일 저장 및 실행

  1. 파일 저장: chatbot.py로 저장
  2. 터미널 열기: 저장한 폴더로 이동
  3. 실행 명령어:
     
    streamlit run chatbot.py
  4. 브라우저 자동 실행: 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 챗봇을 만들 수 있습니다.

중요한 것은 첫 걸음을 내딛는 것이죠.

다음 단계는?

  1. Python 설치 (python.org)
  2. Streamlit 설치: pip install streamlit
  3. 위의 코드를 복사해서 실행해보세요
  4. 나만의 FAQ 내용으로 커스터마이징하세요
  5. 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 챗봇 아이디어를 공유해주세요!