CBT·행동활성화 기반 감정 회복 지원 RAG 챗봇(API + 서비스)
“당신의 감정을 이해하고, 다시 살아갈 힘을 주는 AI 친구”
📌 2025 새싹 해커톤(SeSAC Hackathon) 출품작
📌 팀명: 세계확장
📌 구성원: 정수미 · 이재훈 · 이동호 · 조영진 · 김지운
- *칭구야(Chingoo-ya)**는
우울감·고립감을 느끼는 청년들이 스스로 감정을 이해하고 회복 행동을 수행하도록 돕는
CBT 기반 감정 회복 AI 챗봇이다.
서비스는 다음 두 가지 핵심 개입(Evidence-Based Intervention)을 중심으로 구성된다:
-
사용자 과거 감정·행동 기록을 벡터DB(pgvector)에서 검색
-
“비슷한 감정을 느꼈던 순간”을 찾아 비교
-
감정 패턴을 재해석할 수 있도록 도움
[세계확장] 칭구야
-
치료 논문·심리학 매뉴얼을 기반으로
사고 재구성 / 행동 활성화 / 자기자비 훈련 과제를 추천
[세계확장] 칭구야
이 두 가지 RAG를 기반으로
단순 공감 챗봇을 넘어 실제 심리치료 원리를 적용한 개입형 챗봇을 제공한다.
-
공감 (Emotional Reflection)
-
사고 탐색 (Cognitive Exploration)
-
감정 명확화 (Labeling)
-
행동 제안 (Behavioral Suggestion)
-
인지 왜곡 자동 탐지
(흑백논리, 과일반화, 개인화, 파국화 등)
[세계확장] 칭구야
- 챗봇 내에 CBT 메뉴얼 기반 대화 유도
- 모델을 통해 나온 감정 기반으로 메뉴얼에 따라 과제 추천
- 사용자 개인 감정 기록에서 유사한 경험 검색
- “그때 무엇을 했는지” 비교 → 회복 전략 안내
- 감정 패턴 인식 & 자각 증진
- 일/주/월 단위 감정 그래프
- 감정 비율 파이차트
사용자 입력(대화 전체)
↓
감정 분석 모델 (BERT/RoBERTa)
↓
인지 왜곡 탐지
↓
[RAG] 과거 일기 검색 (pgvector)
[RAG] CBT 논문 기반 검색
↓
GPT-4.1이 CBT 대화 생성
↓
[RAG] 행동 활성화 과제 추천
↓
감정 일기 자동 저장 → 그래프 생성
- FastAPI
- PostgreSQL + pgvector
- LangChain RAG Pipeline
- OpenAI GPT-4o-mini
- text-embedding-3-small
- 감정 라벨링 BERT 모델
python -m venv venv
source venv/bin/activate # mac/Linux
# venv\Scripts\activate # Windows
pip install -r requirements.txt
cp .env.example .env
# OPENAI_API_KEY=your_api_key_here 입력
data/ 폴더에 PDF 파일들을 넣으면,
초기화 시 자동 학습(RAG 벡터 스토어 생성)된다.
mkdir -p data
cp ~/Downloads/*.pdf data/
python run.py
또는:
uvicorn app.main:app --reload
curl -X POST http://localhost:8000/api/chatbot/initialize
예시 응답:
{
"success": true,
"message": "챗봇 초기화 완료! 2개의 PDF 파일을 로드했습니다.",
"data": {
"document_count": 245,
"vector_db_path": "./chroma_db",
"loaded_files": ["support_guide.pdf", "program_info.pdf"]
}
}
curl http://localhost:8000/api/chatbot/status
curl -X POST http://localhost:8000/api/chatbot/chat \
-H "Content-Type: application/json" \
-d '{"question": "우울감을 해소하기 위한 지원 프로그램에는 어떤 것들이 있나요?"}'
| 기능 | 메서드/URL | 설명 |
|---|---|---|
| Health | GET /api/health |
서버 상태 확인 |
| 초기화 | POST /api/chatbot/initialize |
PDF 불러와 RAG DB 생성 |
| 상태조회 | GET /api/chatbot/status |
벡터DB/모델 초기화 여부 확인 |
| 질문 | POST /api/chatbot/chat |
RAG 기반 상담 답변 생성 |
- Swagger: http://localhost:8000/docs
- ReDoc: http://localhost:8000/redoc
h-sw-h-back/
├── app/
│ ├── main.py
│ ├── config.py
│ ├── routers/
│ │ ├── health.py
│ │ └── chatbot.py
│ ├── services/
│ │ └── vector_store.py
│ ├── utils/
│ │ └── pdf_loader.py
│ └── schemas/
│ └── chatbot.py
├── data/
├── chroma_db/
├── .env
├── .env.example
├── requirements.txt
├── run.py
└── README.md
- PDF 로드
- 텍스트 청크 분할 (500자 / overlap 100자)
- OpenAI 임베딩 생성
- postgreDB 저장
- 질문 → 벡터 검색 (Top-k)
- GPT-4o-mini가 CBT 스타일 답변 생성