ANeuk AI
'ANeuk' 프로젝트의 감정 분석 및 일기 생성 AI 파트
'ANeuk'은 AI 기반 가짜 감정 중독 예방 및 감정 단어 확장 솔루션입니다. 사용자와 AI 챗봇의 대화를 통해 일기를 생성하고, 감정을 분석하며, 다양한 감정 단어를 학습하도록 돕습니다.
- 현대 사회에서 증가하는 가짜 감정 중독 문제 해결
- 감정 표현의 중요성 인식 및 감정 표현 어휘 확장의 필요성
- 한국어 감정 단어 434개 존재하지만 일상에서 사용하는 단어는 제한적 (434개의 감정 단어 존재는 '한국어 감정표현단어의 추출과 범주화' 논문에서 발췌했습니다.)
- AI 챗봇과의 대화를 통한 일기 작성
- 자신의 감정을 정확히 인식하도록 지원
- 다양한 감정 단어 학습을 통한 감정 표현력 향상
- 일기 작성의 심리적 장벽 제거
- 정서적 인지 능력 강화
- 감정 표현의 확장
- 정신적/신체적 회복
'ANeuk' 프로젝트의 AI 파트는 사용자와의 채팅을 통해 일기를 생성하고, 감정을 분석하며, 적절한 감정 단어를 추천하는 역할을 합니다.
- 하루에 대해 채팅: 사용자와 자연스러운 대화를 통해 하루 일과 및 감정에 대한 정보를 수집합니다.
- 채팅 내용 기반 일기 생성: 채팅 내용을 기반으로 사용자의 감정이 반영된 일기를 생성합니다.
- 주제 별 문단 분리: 생성된 일기를 주제 별로 분리하여 가독성을 높입니다.
- 문단 별 감정 추천 (대분류): 각 문단에 어울리는 감정 대분류를 추천합니다.
- 문단 별 감정 추천 (세부 감정): 선택된 감정 대분류에 맞는 세부 감정 단어를 추천합니다.
- 감정 단어 선택 후 문장 재생성: 사용자가 선택한 감정 단어를 반영하여 문장을 자연스럽게 재구성합니다.
- ChatGPT-4o-mini & ChatGPT-4o: 일기 생성 및 감정 분석을 위한 언어 모델
- FastAPI: AI 모델을 API 서버로 구축하기 위한 프레임워크
- LangChain: 언어 모델 체인을 구성하고 관리하기 위한 라이브러리
- 시스템 프롬프트: 사용자와 자연스럽게 대화하는 역할, 핵심 가이드라인, 금지된 행동, 자연스러운 대화 예시 등을 정의합니다.
temperature
: 0.7로 설정하여 적절한 수준의 창의성을 가진 답변을 생성합니다.HumanMessage
와AIMessage
: 사용자 입력과 AI 응답을 번갈아 저장하여 대화의 맥락을 유지합니다.- 비동기 실행: 사용자 경험을 향상시키기 위해 비동기 방식으로 채팅을 처리합니다.
- 시스템 프롬프트: 사용자 입장에서 일기를 작성하는 역할, 핵심 가이드라인, 금지된 행동,
few shot prompt
등을 정의합니다. temperature
: 0.7로 설정합니다.- 대화 내용 입력: 사용자와 나눈 대화 내용을 전부 입력으로 사용합니다.
few shot prompt
: 3가지 일기 예시를 제공하여 일기 생성의 방향성을 제시합니다.- 비동기 실행: 고성능 모델(ChatGPT-4o)을 사용하여 일기를 생성합니다.
- 시스템 프롬프트: 생성된 일기를 주제 별로 분리하는 역할과 가이드라인을 정의합니다.
temperature
: 0으로 설정하여 결정론적인 결과를 생성합니다.output parsing
: JSON 형식의 출력을 강제하여 일기를 문단 별로 분리합니다.
- 시스템 프롬프트: 각 문단에 어울리는 감정 대분류를 추천하는 역할과 가이드라인을 정의합니다.
- 감정 대분류: 11가지 감정 대분류(기쁨, 흥미, 놀람, 중성, 슬픔, 지루, 공포, 분노, 통증, 혐오, 기타)를 제시합니다.
- 일반적인 감정: 각 문단에 일반적으로 가장 어울리는 감정 2가지를 선택합니다.
- 일반적이지 않지만 어울리는 감정: 각 문단에 일반적이지는 않지만 어울릴 수 있는 감정 1가지를 선택합니다.
output parsing
: JSON 형식의 출력을 강제하여 추천된 감정 대분류를 반환합니다.
- 시스템 프롬프트: 각 문단에 어울리는 세부 감정 단어를 추천하는 역할과 가이드라인을 정의합니다.
- 감정 단어: 선택된 감정 대분류에 맞는 세부 감정 단어(약 30개 이상)를 제시합니다.
- 일반적인 감정: 각 문단에 일반적으로 가장 어울리는 감정 7가지를 선택합니다.
- 일반적이지 않지만 어울리는 감정: 각 문단에 일반적이지는 않지만 어울릴 수 있는 감정 3가지를 선택합니다.
output parsing
: JSON 형식의 출력을 강제하여 추천된 세부 감정 단어를 반환합니다.
- 시스템 프롬프트: 원본 문장의 내용을 훼손하지 않으면서 사용자가 선택한 감정 단어가 자연스럽게 녹아들도록 문장을 재생성하는 역할과 가이드라인을 정의합니다.
few shot prompt
: 문장 재생성 예시를 제공합니다.Debounce
: 과도한 리소스 낭비를 억제하기 위해debounce
기법을 사용합니다.
/ai/chat/
: 사용자와의 채팅을 처리합니다.POST /ai/chat/
: 채팅 메시지를 전송하고 응답을 받습니다.
/ai/diary/
: 채팅 내용을 기반으로 일기를 생성합니다.POST /ai/diary/
: 일기 생성 요청을 처리합니다.
/ai/remake/
: 선택된 감정 단어를 기반으로 문장을 재생성합니다.POST /ai/remake/
: 문장 재생성 요청을 처리합니다.