Skip to content
/ movie_chatbot Public template
forked from KTB-19/movie_chatbot

사용자 선호 및 위치 기반 영화관을 추천해주는 지능형 고객 지원 챗봇입니다.

Notifications You must be signed in to change notification settings

Yeeun-Jeong/movie_chatbot

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌱 무비빔밥

사용자 선호 및 위치 기반 영화관을 추천해주는 지능형 고객 지원 챗봇


👫 팀 구성 및 역할

🎞️ Alyssa - 인공지능 담당
  • Git : https://github.com/Yeeun-Jeong
  • ChatGPT API를 활용한 응답 생성
    • 사용자 질문 데이터 전처리
    • 프롬프트 엔지니어링을 통한 영화관 추천 생성
  • 프로젝트 협업 관리
🎾 Ryan - 인공지능 담당
  • Git : https://github.com/KHyunJoong
  • LLM ChatGPT api를 활용한 응답 생성
    • 사용자 질문에서 NER을 이용하여 Entity 추출
    • koBERT,kiwi를 이용한 RAG구축 후
    • FAISS를 이용한 Semantic Search, 및 Levenshtein distance 기반 검색 기능 개발
    • LLM 응답 정형화
🧩 Yohan - 풀스택 담당
  • Git : https://github.com/yohanii
  • 백엔드
    • Spring 애플리케이션 서버 개발
    • AI 모델 구동을 위한 FastAPI 서버 개발
    • OpenFeign을 사용해 서버 간 통신 구현
    • MySQL DB 조회 기능 개발
  • 프론트엔드
    • 날짜 선택, 지역 선택 화면 구현
🍭 Mir - 풀스택 담당
  • Git : https://github.com/mirlee0304
  • 영화 상영정보 크롤링 및 DB에 저장
  • 프론트엔드
    • 채팅 화면 구현
      • 질문-답변 채팅형태 구현 및 엔티티 관리
      • 매뉴얼/응답대기 메시지 및 재확인 버튼/체크박스 구현
      • 스타일 적용
    • 백엔드 연결
🎸 Bryan - 클라우드 담당
  • Git : https://github.com/dogyungkim
  • AWS 인프라 설계
  • Terraform을 활용해 AWS 구현
  • Ansible을 활용한 EC2 인스턴스 개발 환경 구축
  • Prometheus 및 Grafana를 활용한 인스턴스 모니터링 환경 구축
🚀 Eddy - 클라우드 담당
  • Git : https://github.com/KimMinWoooo
  • CI/CD 파이프라인 구축
  • Docker를 이용한 애플리케이션 이미지 만들기 및 배포
  • 전체적인 배포 환경에서의 애플리케이션 실행 테스트

🔧 주요 기능

  • 채팅, 버튼을 통한, 의사소통 기능
  • 영화 이름, 지역, 날짜, 시간 정보를 통해 조건에 맞는 영화관의 상영 정보 제공 기능

📚 Stack

  • Frontend
  • Backend
  • Cloud
  • AI

🗺️ 아키텍처

Movie-chatbot1


💎 프로젝트 수행 결과

  • 프론트엔드 자세히
    • React를 사용한 사용자 인터페이스 구축
    • 상태 관리 및 전역 상태 관리
    • 백엔드 API와의 통신
  • 백엔드 자세히
    • RESTful API 설계에 대한 이해 및 적용
    • Service, Repository 검증을 위해 BDDMockito를 사용해 단위 테스트, 통합 테스트 작성
    • ExceptionHandler을 통한 공통 예외 처리
    • Validation 과정을 통해 데이터 유효성 검증
    • Swagger를 사용한 API 명세서 작성
    • AI 워드 임베딩 과정 스케줄링
  • 크롤링 자세히
    • Kobis에서 제공하는 지역별 및 날짜별 상영 스케줄 정보를 크롤링
    • DB 설계 및 데이터 저장
    • 크롤링 속도 개선을 위해 멀티프로세싱 적용
  • 클라우드 자세히
    • Terraform을 활용한 인프라 구성
    • Ansible을 활용하여 Docker, Docker-compose, Node_exporter를 세팅
    • Github Actions를 이용한 CI/CD
    • Prometheus, Grafana를 통해 모니터링
    • 컨테이너 배포 후 연결 및 배포환경 api 연결
  • 인공지능 자세히
    • RAG 활용한 영화관 추천 전문 고객지원 챗봇 커스텀
    • ChatGPT API 프롬프트 엔지니어링을 통해 응답 생성

⚠️ 트러블 슈팅

  • 프론트엔드 자세히
    • useRef를 사용한 상태 반영
  • 백엔드 자세히
    • 아키텍처 구조 변경을 통해 Jython 한계 문제 해결
    • stream을 활용한 복잡한 로직 단순화
  • 크롤링 자세히
    • 멀티 프로세싱을 사용한 크롤링 시간 단축
  • 클라우드 자세히
    • Mysql 도커 이미지로 EC2에서 Endtrypoint 에러
    • Python Crawling 이미지 생성 중 chrome browser 설치 문제
    • 크롤링 인스턴스의 적절한 type 설정
    • 크롤링 이외의 시간에 사용되지 않는 인스턴스
    • 인스턴스와 서브넷 등의 네트워크 관계에 대한 공부의 필요성
    • CI/CD는 모든 상황에서 필요한 것인가?
    • Docker container 배포시 각 컨테이너의 연결 방법에 대한 고민
  • 인공지능 자세히
    • chatgpt api를 활용한 최적의 응답 생성 방법
    • 가공을 위한 정형화된 아웃풋
    • chatgpt api를 활용한 엔티티 추출 방식

🥳 회고

  • 종합 회고
    • 성과
      • 👍 초기 계획한 최소 기능 구현 완료
      • 👎 처음부터 기획 기능을 명확히 설계했다면, 시간 절약했을 듯
      • 👎 실 서비스 사용 테스트를 통해 예외 처리 개선 필요
    • 배움
      • 👍 서로 다른 직무 간 협업 방식을 익힘
      • 👍 실무에 필요한 기술 습득
    • 협업
      • 👍 매일 스크럼을 통해 진행상황과 문제점 공유
      • 👍 애자일 방식 도입을 통해 즉각적으로 논의 및 수정
      • 👎 일정 딜레이와 스프린트 진행 방식 변경이 아쉬움
      • 👎 태스크 관리 및 문서화 할 수 있는 환경 필요
  • 개인별 회고

📌 시연

  • 메인 화면

About

사용자 선호 및 위치 기반 영화관을 추천해주는 지능형 고객 지원 챗봇입니다.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 36.2%
  • Java 31.2%
  • JavaScript 17.0%
  • HCL 10.4%
  • CSS 3.8%
  • Dockerfile 0.7%
  • HTML 0.7%