MyFriend 질의응답 대비
[전체 구성도/흐름도 이해]
(PPT그림 참고)
1. 영상대화 : 사용자 Comment -> Node.js(javascript언어) 서버에서 Flask서버로 Comment 전송 -> Comment 감정분류 -> 감정분류결과포함하여 ChatGPT에 전송 -> ChatGPT결과 내용을 D-ID API를 이용하여 전송 -> 최종 대화 영상 출력
2. 채팅대화 : 사용자 Comment -> 안드로이드 앱 에서 Flask서버로 Comment 전송 -> Comment 감정분류 -> 감정분류결과포함하여 ChatGPT에 전송 -> ChatGPT결과 내용을 D-ID API를 이용하여 전송 -> 최종 대화 영상 출력
3. 비밀다이어리 : 비밀다이어리 작성 -> 작성내용 데이터베이스 저장 -> 저장된 내용을 Flask서버로 전송 -> ChatGPT에 다이어리작성내용을 전달하여 비밀다이어리 댓글 작성후, 데이터베이스에 저장
4. 1문1답 : Database에 설정된 시간을 Flask서버가 읽어들여서 해당시간이 되면, 푸쉬알림 실행 -> Database의 질문중에 랜덤으로 1개선택 후 전송
[D-ID API]
1. API 기본원리 : 기반이 되는 이미지를 API로 데이터로 전송하면, 해당 이미지를 기반으로 말하는 입모양으로 영상파일을 만들어서 전송해줌(우리는 수신후 재생하면됨)
2. 사람 사진 초상권문제를 고려하여, 인공지능으로 생성된 가상인물의 사진을 사용
[감성분류 인공지능]
1. koBERT를 선택한 이유 : BERT, ELECTRA(일렉트라), GPT 모델들이 있지만, 모두 구현해서 비교하진 않았고 BERT가 가장 자료가 많아서 BERT를 선택하여 구현하였고, 훈련후 정확도가 95%이상 나와서
2. koBERT 학습데이터 : 총3가지 데이터들(감성대화 말뭉치, 감정 정보가 포함된 단발성 대화 데이터셋, 감정 정보가 포함된 연속성 대화 데이터셋)을 합쳐서 학습시킴.
- 총 데이터수량 : 14만6천개
- 감정종류 : 중립, 슬픔, 분노, 불안, 당황, 행복, 혐오
3. koBERT 학습시간 : 1 epoch(에포크)당 30분정도 걸려서, 15epoch 돌려서 7시간 반정도 걸렸다.(colab에서 T4 GPU를 사용)
4. koBERT 구현방법 : github에 자료와 오픈소스가 많아서 활용해서 구현하였다.
5. koBERT 학습 코드 : 구글 드라이브 확인해놓기
[GPT 연동]
1. 감정분류를 한 응답과 아닌것의 차이가 있는지? 비슷하게 응답하지 않는지?
감성분류를 포함한경우 최대한 공감한 대화를 해주는데, 일반 GPT의 경우엔 감성적인 대화보단 해결책 제시를 하려고 하며 친구같은 대화내용이 아님.

[Flask 웹서버]
- HTTP GET방식 통신
1) /predict URL로 통신 : 화상대화(Node.js), 채팅대화(안드로이드)와 연동
2) /diary URL로 통신하면 : 비밀다이어리(안드로이드)와 연동
** 시연연습
(준비)
1) Flask웹서버 실행
- /predict, /diary 통신 대기
- 주기적으로 1문1답 모니터링
2) VisualStudio Code실행 및 준비
3) 중요설명자료 PPT로 준비