Skip to content

SeungJin051/LangChain-StoryBot-main

Repository files navigation

ChatGPT-LLM

스토리봇 - 유아용 동화 스토리봇 (유아용 동화 읽기, 번역 도우미)

  1. 프로젝트 개요

스토리봇은 ChatGPT 기반의 유아용 동화 스토리봇입니다. 이 프로젝트는 다음과 같은 주요 기능을 제공합니다:

  • 동화 읽어주기: 사용자에게 선택된 동화를 읽어주는 기능
  • 질의응답하기: 사용자의 질문에 대답해주는 기능
  • 역할놀이: 사용자와 대화하며 역할놀이를 할 수 있는 기능
  • 요약: 동화를 요약하여 사용자에게 제공하는 기능
  • 번역: 동화를 다른 언어로 번역해주는 기능

또한, 이 모델은 PDF 문서를 학습시켜 콘텐츠를 이해하고 처리하는 기능을 갖추고 있습니다.

  1. 목표:
    • 유아들을 대상으로 한 유창한 동화 읽기 및 상호작용 서비스 개발
    • 상상력을 자극하고 언어 능력 향상을 도모하는 동화 스토리봇 구현
    • ChatGPT 모델에 PDF 학습을 통해 다양한 동화를 구현할 수 있는 환경 제공
  2. 기능 설명:
    • 동화 읽어주기 기능: ChatGPT 모델을 활용하여 다양한 동화를 실시간으로 읽어주는 기능
    • 질의응답하기 기능: 유아들이 동화 내용에 대해 질문을 하고, ChatGPT 모델이 답변을 제공하는 기능
    • 역할놀이 기능: 유아들이 동화의 캐릭터 역할을 맡고, ChatGPT 모델이 상호작용하여 역할놀이를 도와주는 기능
    • 동화 요약 기능: ChatGPT 모델을 사용하여 동화의 주요 내용을 요약하여 제공하는 기능
    • 번역 기능: ChatGPT 모델을 활용하여 다양한 언어로 동화를 번역하는 기능

기술 스택

  • 언어 모델: ChatGPT (langchain.chat_models.ChatOpenAI)
  • 벡터 데이터베이스: ChromaDB (chromadb)
  • 토큰 수 계산: TikToken (tiktoken)
  • PDF 처리: PyPDF2 (pypdf2)
  • 음성 처리: Google Text-to-Speech (gtts), PyAudio (pyaudio), SpeechRecognition (speech_recognition)
  • chromadb: ChromaDB는 특정 도구와 연계하여 데이터베이스를 구축하고 쿼리하는 데 사용되었습니다.
  • tiktoken: Tiktoken은 텍스트 데이터를 토큰화하는 데 사용되었습니다. ChatGPT 모델에 입력으로 사용되는 텍스트를 토큰 단위로 분할하여 처리하는 데 활용되었습니다.
  • langchain.chat_models: langchain.chat_models는 ChatGPT 모델의 구현과 관련된 모듈로 사용되었습니다. 이 모듈은 채팅 기반 기계 학습 모델을 사용하여 대화를 생성하고 처리하는 기능을 제공합니다.
  • langchain.chains: langchain.chains는 LangChain 프레임워크의 일부로 사용되었습니다. 이 프레임워크는 자연어 처리 및 기계 학습 작업을 지원하는 다양한 도구와 모델을 제공합니다. ChatGPT 모델과의 통합 및 데이터 처리에 활용되었습니다.
  • pypdf2: PyPDF2는 PDF 파일을 읽고 작성하는 데 사용되었습니다. PDF 학습 환경에서 사용자가 제공한 PDF 파일을 처리하고 필요한 데이터를 추출하는 데 활용되었습니다.

Langchain을 쓰는 이유?

하나의 prompt만 가지고 답을 구하는건 이미 기존 LLM에서도 충분히 좋은 성능을 낼 수 있었습니다. 예를 들면 문서를 “요약”한다던지, 유사한 문서를 “검색” 한다던지 이런 기능들은 이미 충분히 좋은 모델들이 많이 나와있습니다. 하지만 진짜 사람이 생각하는 것처럼 “추론”을 하는 관점에서는 약점이 많았습니다.

Langchain을 사용한다면, agent를 사용하여 “문제”를 “추론”하고 여러 개의 작은 sub-task로 분할하는게 가능합니다. 각 단계마다 context를 유지하기 위해 어떤 도구를 사용해야하는지 결정하고 memory, prompt 등 다양한 기능들을 사용하여 원하는 결과를 만들어내게 할 수 있습니다.

https://jayhey.github.io/deep learning/2023/04/23/langchain/

일정

  1. 기획 및 환경 설정 (1일):
    • 프로젝트 목표 및 요구사항 정의
    • 필요한 라이브러리 및 도구 설치
    • Jetson Nano 설정 및 연결
  2. 데이터 수집 및 전처리 (1일):
    • 유아용 동화 데이터 수집
    • 데이터 전처리 (텍스트 정제, 포맷 변환 등)
  3. 언어 모델 학습 (1일):
    • ChatGPT 모델 학습 데이터 준비
    • ChatGPT 모델 학습 및 튜닝
    • 학습된 모델 저장 및 테스트
  4. PDF 문서 학습 (1일):
    • PDF 문서를 텍스트로 변환하여 벡터 데이터베이스에 등록
    • 벡터 데이터베이스 구축 및 검색 기능 테스트
  5. 음성 처리 기능 추가 (1일):
    • 음성 인식 기능 구현
    • 음성을 텍스트로 변환하여 질의응답 기능에 통합
    • 음성 출력 기능 구현
  6. 기능 통합 및 최적화 (1일):
    • 각 기능을 통합하여

사용자 친화적인 인터페이스 제공

  • 성능 향상을 위한 최적화 작업
  • 테스트 및 버그 수정
  1. 최종 배포 및 문서 작성 (1일):
    • 젯슨나노에 프로젝트 배포
    • 사용 설명서 및 기술 문서 작성

향후 계획

  • 사용자 피드백을 수집하여 모델 개선 및 기능 확장
  • 추가적인 언어 모델 학습 및 데이터 수집
  • 기존 기능의 성능 향상 및 새로운 기능 추가

기대 효과

  • 유아들의 상상력과 언어 능력 향상에 기여
  • 다양한 동화를 제공하여 교육적 가치와 즐거움을 동시에 제공
  • ChatGPT 모델에 PDF 학습을 통해 다양한 동화를 구현할 수 있는 환경 제공
  1. 참고 자료:

2023 DX Challenge Hackathon

스크린샷 2023-07-19 오후 10 59 26

해커톤 진행 시 어려웠던 점은 무엇인가?

어떻게 보충(보강)해야 하는가?

성공시키기 위해서는 무엇을 해야할 것인가?

  1. 기술
  • 심사위원이 말이 입출력된 것을 직관적으로 확인하기가 어렵다.
  • 지연
  • 다양한 방법으로 디버깅
  • 주제가 너무 하드웨어에 집중되어 있으며 langchain 등의 기능들은 심사위원들이 알지 못하는 예도 있고, 기존에 상용화된 시스템과 차이점을 느끼지 못함 (기가지니 및 대화형 인공지능시스템 )
  1. 기능
  • 일시 정지, 홈으로 돌아가기 등의 기술을 구현해야 한다.
  • 주변 소음이 심하면 STT가 불가능, (STT가 잘 판별할 수 있는 동화, 질문 미리 선정)
  • 젯슨나노가 모니터와 연결되어 있어서 심사위원들이 젯슨나노를 사용하였다고 느끼지 못했을 것 같음
  • 젯슨나노를 모니터와 분리하여 독립적인 시스템으로 구축
  • 데이터베이스 구축 후 사용자의 질문과 gpt의 답변을 저장하여 웹, 어플리케이션에서 확인할 수 있으면 좋을 것 같음
  • 읽기, 번역, 질의응답 기능을 완성하고, 차례로 부가적인 기능을 더해가야 할 것 같다.
  • 영어 TTS 목소리 추가
  1. 발표, 데모
  • 시냅스 팀을 제외한 모든 팀이 시각적인 소프트웨어 기능을 정리하여 보고서 작성 및 발 표를 진행함 (사용자에 의해 제어되는 동적인 UI, 데이터 감지 등)
  • 기술 설명부터 잘 풀어나가야 이 프로젝트가 신기술이라는 것을 어필할 수 있는데 데모 시 딜레이도 길어, 한정된 시간 내에 모든 것을 보여주는 것이 어려움
  1. 보고서
  • 기능 구현에만 집중하여 보고서에 신경쓰지 못했었는데, 캡스톤때는 준비기간 중 틈틈히 보고서를 작성해야겠다고 느낌
  1. 팀 활동
  • 소통 (조장 중심의 소통 OR 10-5 자리를 지킨다는 전제하에 자유로운 소통)
  • 컨디션 관리
  • 역할 분담

About

2023 캡스톤 프로젝트 | LangChain

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages