Skip to content

AI 기반 가짜 감정 중독 예방 및 감정 단어 확장 솔루션 '아늑'의 AI server ⛓️

License

Notifications You must be signed in to change notification settings

NewMillenniumWorkout/A-Neuk-BE-AI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

아늑A

'ANeuk' 프로젝트의 감정 분석 및 일기 생성 AI 파트

아늑A

프로젝트 개요

'ANeuk'은 AI 기반 가짜 감정 중독 예방 및 감정 단어 확장 솔루션입니다. 사용자와 AI 챗봇의 대화를 통해 일기를 생성하고, 감정을 분석하며, 다양한 감정 단어를 학습하도록 돕습니다.

아늑2 아늑3 아늑3 (1) 아늑5 아늑1 아늑8 아늑6 아늑7

개발 동기 및 배경

  • 현대 사회에서 증가하는 가짜 감정 중독 문제 해결
  • 감정 표현의 중요성 인식 및 감정 표현 어휘 확장의 필요성
  • 한국어 감정 단어 434개 존재하지만 일상에서 사용하는 단어는 제한적 (434개의 감정 단어 존재는 '한국어 감정표현단어의 추출과 범주화' 논문에서 발췌했습니다.)

프로젝트 목표

  • AI 챗봇과의 대화를 통한 일기 작성
  • 자신의 감정을 정확히 인식하도록 지원
  • 다양한 감정 단어 학습을 통한 감정 표현력 향상

기대 효과

  • 일기 작성의 심리적 장벽 제거
  • 정서적 인지 능력 강화
  • 감정 표현의 확장
  • 정신적/신체적 회복

AI 파트 소개

'ANeuk' 프로젝트의 AI 파트는 사용자와의 채팅을 통해 일기를 생성하고, 감정을 분석하며, 적절한 감정 단어를 추천하는 역할을 합니다.

주요 기능

  • 하루에 대해 채팅: 사용자와 자연스러운 대화를 통해 하루 일과 및 감정에 대한 정보를 수집합니다.
  • 채팅 내용 기반 일기 생성: 채팅 내용을 기반으로 사용자의 감정이 반영된 일기를 생성합니다.
  • 주제 별 문단 분리: 생성된 일기를 주제 별로 분리하여 가독성을 높입니다.
  • 문단 별 감정 추천 (대분류): 각 문단에 어울리는 감정 대분류를 추천합니다.
  • 문단 별 감정 추천 (세부 감정): 선택된 감정 대분류에 맞는 세부 감정 단어를 추천합니다.
  • 감정 단어 선택 후 문장 재생성: 사용자가 선택한 감정 단어를 반영하여 문장을 자연스럽게 재구성합니다.

기술 스택

  • ChatGPT-4o-mini & ChatGPT-4o: 일기 생성 및 감정 분석을 위한 언어 모델
  • FastAPI: AI 모델을 API 서버로 구축하기 위한 프레임워크
  • LangChain: 언어 모델 체인을 구성하고 관리하기 위한 라이브러리

구현 방식

image

하루에 대한 채팅

  • 시스템 프롬프트: 사용자와 자연스럽게 대화하는 역할, 핵심 가이드라인, 금지된 행동, 자연스러운 대화 예시 등을 정의합니다.
  • temperature: 0.7로 설정하여 적절한 수준의 창의성을 가진 답변을 생성합니다.
  • HumanMessageAIMessage: 사용자 입력과 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 기법을 사용합니다.

사용법

API 엔드포인트

  • /ai/chat/: 사용자와의 채팅을 처리합니다.
    • POST /ai/chat/: 채팅 메시지를 전송하고 응답을 받습니다.
  • /ai/diary/: 채팅 내용을 기반으로 일기를 생성합니다.
    • POST /ai/diary/: 일기 생성 요청을 처리합니다.
  • /ai/remake/: 선택된 감정 단어를 기반으로 문장을 재생성합니다.
    • POST /ai/remake/: 문장 재생성 요청을 처리합니다.

About

AI 기반 가짜 감정 중독 예방 및 감정 단어 확장 솔루션 '아늑'의 AI server ⛓️

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •