14  챗봇 (Chatbot)

심심할 때 대화할 수 있는 나만의 챗봇을 만들어 봅시다. 보너스 점수를 얻으려면 머신러닝이나 AI를 활용하여 더욱 똑똑하게 만들어 보세요. 처음에는 간단한 명령줄 인터페이스(CLI) 애플리케이션으로 시작하는 것을 추천합니다.

챗봇은 단순한 키워드 응답부터 시작하여 사용자의 의도를 파악하고 대화의 맥락을 기억하는 복잡한 시스템으로 확장될 수 있습니다. 자연어 처리(NLP) 라이브러리를 사용하거나 최신 대규모 언어 모델(LLM) API를 연동하여 실감 나는 대화를 구현해 보세요.

14.1 주요 개발 포인트

  • 규칙 기반 로직: 특정 단어가 포함되면 미리 정해진 답변을 출력하는 방식입니다.
  • 의도 파악 (Intent Recognition): 사용자가 무엇을 원하는지(질문, 인사, 요청 등)를 분석합니다.
  • 맥락 관리 (Context Management): 이전 대화 내용을 기억하여 자연스러운 대화 흐름을 유지합니다.
  • 외부 API 연동: 날씨, 뉴스, 맛집 정보 등을 실시간으로 가져와 답변에 활용합니다.
  • UI 확장: CLI에서 텔레그램, 디스코드, 웹 기반 인터페이스로 확장 가능합니다.

14.2 Python 구현 예시 (간단한 키워드 기반 챗봇)

import random

def get_response(user_input):
    """
    사용자의 입력에 따라 적절한 답변을 생성합니다.
    """
    user_input = user_input.lower()
    
    responses = {
        "안녕": ["반가워요! 어떻게 도와드릴까요?", "안녕하세요! 좋은 하루 보내세요."],
        "이름": ["저는 당신의 개인 비서, 챗봇입니다.", "이름은 따로 없지만 챗봇이라고 불러주세요."],
        "날씨": ["오늘 날씨가 정말 좋아 보이네요!", "외출하기 전에 일기예보를 확인해 보세요."],
        "종료": ["대화를 종료합니다. 다음에 또 봐요!", "안녕히 가세요!"]
    }
    
    for key in responses:
        if key in user_input:
            return random.choice(responses[key])
            
    return "죄송해요, 무슨 말씀인지 잘 모르겠어요. 다시 말씀해 주시겠어요?"

if __name__ == "__main__":
    print("--- 챗봇 서비스를 시작합니다 ---")
    print("(종료하려면 '종료'를 입력하세요)")
    
    while True:
        user_msg = input("나: ")
        if "종료" in user_msg:
            print(f"챗봇: {get_response('종료')}")
            break
        
        response = get_response(user_msg)
        print(f"챗봇: {response}")