이 프로젝트는 사용자의 감정을 인식하고 공감적인 대화를 나눌 수 있는 AI 챗봇입니다. GPT-4와 감정 분석 모델을 활용하여 사용자의 감정 상태를 파악하고 적절한 응답을 제공합니다.
- 🎯 실시간 감정 분석
- 💬 맥락을 이해하는 대화
- 📊 대화 통계 추적
- 🤝 공감적인 응답 생성
- Frontend: Streamlit
- Backend: Python
- AI Models:
- OpenAI GPT-4
- DistilRoBERTa (감정 분석)
- Dependencies: PyTorch, Transformers, Langchain
-
git clone https://github.com/your-username/emotion-aware-chatbot.git cd emotion-aware-chatbot
-
python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate
-
pip install -r requirements.txt
-
.env
파일을 생성하고 다음 내용을 추가합니다:OPENAI_API_KEY=your_openai_api_key HUGGINGFACEHUB_API_TOKEN=your_huggingface_token
streamlit run run.py
emotion-aware-chatbot/
├── src/
│ ├── app/
│ │ ├── __init__.py
│ │ ├── main.py
│ │ └── config.py
│ ├── core/
│ │ ├── models/
│ │ │ └── document.py
│ │ └── services/
│ │ └── chatbot_service.py
│ ├── components/
│ │ ├── chat_interface.py
│ │ ├── message_display.py
│ │ └── sidebar.py
│ └── utils/
│ ├── initialization.py
│ └── message_handler.py
├── .env
├── requirements.txt
├── run.py
└── README.md
- src/ - 소스 코드의 메인 디렉토리
- app/ - 애플리케이션 설정 및 실행 코드
- main.py - 앱의 메인 실행 파일
- config.py - 설정 관리 (API 키, 모델 설정 등)
- core/ - 핵심 비즈니스 로직
- models/ - 데이터 모델 정의
- services/ - 챗봇 서비스 로직 (감정 분석, 응답 생성 등)
- components/ - UI 컴포넌트
- chat_interface.py - 채팅 인터페이스 구현
- message_display.py - 메시지 표시 로직
- sidebar.py - 사이드바 구현
- utils/ - 유틸리티 함수 모음
- initialization.py - 초기화 함수
- message_handler.py - 메시지 처리 유틸리티
- app/ - 애플리케이션 설정 및 실행 코드
- .env - 환경 변수 파일 (API 키 등)
- requirements.txt - 필요한 패키지 목록
- run.py - 애플리케이션 실행 파일
- README.md - 프로젝트 설명서
Note: 코드의 역할과 책임이 명확하게 분리되어 있어 유지보수와 확장이 용이합니다.
- 사용자 입력 처리
- 감정 분석 수행
- GPT-4를 통한 응답 생성
- DistilRoBERTa 기반 감정 분석 모델 사용
- 7가지 감정 분류: 기쁨, 슬픔, 분노, 공포, 혐오, 놀람, 중립
- Streamlit 기반의 직관적인 채팅 인터페이스
- 실시간 감정 상태 표시
- 대화 이력 관리 기능
- Python 3.8 이상
- CUDA 지원 (선택 사항)
- 최소 4GB RAM
- OpenAI API 키
- Hugging Face API 토큰
이 프로젝트는 MIT 라이선스를 따릅니다.
-
저장소 포크
-
기능 브랜치 생성
git checkout -b feature/새로운기능
-
변경 사항 커밋
git commit -m '새로운 기능 추가'
-
브랜치에 푸시
git push origin feature/새로운기능
-
Pull Request 생성
프로젝트에 대한 문의는 Issues 탭에 등록해 주세요.