Notice
Recent Posts
Recent Comments
Link
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

집 짓는 개발블로그

ChatGPT를 이용한 스몰톡 웹 어플리케이션 개발기(1) 프로젝트 개요 본문

토이프로젝트

ChatGPT를 이용한 스몰톡 웹 어플리케이션 개발기(1) 프로젝트 개요

취준er 2024. 2. 2. 02:36

 

위 이미지는 ChatGPT에 의해 생성되었습니다.

🎈배경

전부터 ChatGPT API를 이용한 웹 앱을 한 번쯤 만들어보고 싶었다. 주제에 대한 고려사항은 2가지였다.

 

1. 내가 생활 속에서 불편을 느끼는 문제들과 맞닿아 있어야 기획과 개발을 모두 맡은 내가 방향을 잡을 수 있다. 또한 나는 조직에 속하지 않은 + 실무 경험이 없는 취업준비생이기 때문에 과하게 '실무'를 의식한 주제는 오히려 마이너스가 되리라 생각했다. Jira와 ChatGPT, Zoom과 ChatGPT 등 여러 가지 조합을 생각해봤지만 1️⃣정말 회사에서 사용가치가 있다면 이미 누군가가 만들었을 거고(우아한 형제들의 테크블로그 참고) 2️⃣내 마음대로 실무진의 니즈를 넘겨짚어 뭔가를 만들어간다는 게 과연 그럴듯할까? 의문이 들었다.
⇒ 결론은 내가 필요한 걸 만드는 게 나한테도 편하고, 남들이 봤을 때도 설득력이 있다는 것. 

 

2. 사용자 입장에서 봤을 때 이 프로그램에서 '굳이 ChatGPT를 사용하는 의미'가 있어야 한다고 판단했다. 답변이 정해진 질의응답 같은 거라면 DB에 고스란히 저장해두고 요청이 들어오면 그대로 꺼내주면 된다. 지피티를 쓴다면 지피티에 입력이 넘어가는 시간과 지피티가 답변을 생성하는 시간, 그 답변을 필요한 형태로 가공하는 시간이 필요하다.

 서비스가 느리면 유저는 이탈한다. 그 시간을 기다릴 만큼 유저가 이 프로그램을 통해 얻어가는 것에 ChatGPT가 대체 불가능한 역할을 해야 한다.

 

 

가장 먼저 브레인스토밍이라는 키워드가 떠올랐다. 실제로 나는 프로젝트 주제를 고민하면서 하루에도 몇 번씩 챗지피티에게 프로젝트 주제 좀 추천해줘, 나는 신입 백엔드 개발자야... 를 입력하고 있었다. 

그렇다면 토이 프로젝트 주제를 추천에 챗지피티를 이용하는 웹 앱은 어떨까? 문제가 2가지 있었다. 

1. 특정 집단의 사람들만 필요로 할 것이다. 로그도 받을 생각이었는데, 주변에서 사용자를 구하기 어렵다.

⇒ 더 일반적인 주제가 필요하다.

2. 이럴 거면 굳이 왜 쓰나? 그냥 챗지피티한테 가서 물어보면 되지.

⇒ 결국 챗지피티가 생성하는 답변을 유저에게 서빙하는 프로그램이니, 사용자 1명이 챗지피티를 켜서 직접 답변을 받는 것과는 차별점이 있어야 한다.

⇒ 단체가 같이 쓰는 것 좋을 것 같다. 그런데 항상 같은 단체 안에서만 사용하는 프로그램이라면 커스텀 GPT를 만들어 정보를 입력해두고 사용하는 것과 비교했을 때 또 사용가치가 없어진다. 

 

 

이런 과정을 거쳐 스몰톡을 생각해냈다. 프로젝트를 위해 잠시 모인 팀이든 이전부터 알던 사람들의 모임이든 가벼운 대화 주제가 필요한 순간이 분명 있다. 대화 참여자의 기본 정보를 취합해 적절한 질문을 생성하고, 모든 이가 대화에 참여할 수 있도록 순서대로 질문을 화면에 띄워주는 프로그램이 있다면 좋을 것 같았다. 짧게는 30분만에 자리가 끝나는 소개팅부터 가끔 만나는 친구와의 식사 자리, 매주 멤버가 바뀌는 독서 모임에서까지 모두 사용 가능하다.

 

문제는 이런 프로그램이라면 좀 스타일리쉬한 맛이 있어야 하는데ㅎㅎ😇 나는 그런 디자이너나 프론트엔드와 일하고 있지 않으므로... 일단 투박하게 만들고 본다. 

 

 

🎈프로젝트 설명

스몰톡을 필요로 하는 팀원들이 방장에 의해 생성된 가상 공간인 '방'에 모인다. 각자의 닉네임을 입력하면 스몰톡 개인 프로필을 생성할 수 있다. 이 스몰톡 개인 프로필은 여러 가지 질문에 대한 사용자의 답변에 의해 만들어진다. (추후 ChatGPT가 생성한 일러스트를 프로필 아이콘으로 사용하는 기능 추가)

질문은 취미 있는대로 고르기, 최근의 관심사, 서버 시간을 기준으로 한 직전 시간대(아침/점심/저녁)의 식사 메뉴 3가지. (추후 거주지, 주로 사용하는 언어 추가 예정 - 팀원끼리 주언어가 다르다면 ChatGPT에게 여러 가지 언어로 답변을 생성하게 할 것)

사용자의 답변은 DB에 저장된다. 

모든 팀원의 스몰톡 개인 프로필이 생성되면 ChatGPT가 생성하는 스몰톡 질문을 받아볼 수 있다. 예를 들어 A라는 사용자가 취미 중 하나로 독서를 골랐다면, "독서를 좋아하는 A님, 가장 좋아하는 책이 무엇인가요?" 형식으로 질문이 생성된다. Regenerate버튼을 만들어 같은 주제로 새로운 질문을 받아볼 수 있다. (ex. "독서를 좋아하는 A님, 당신의 독서 스타일에 대해 설명해주세요.") 취미에 대해 전 팀원이 한 번씩 질문을 받고 나면 최근의 관심사, 식사 메뉴 순서대로 생성되는 질문의 주제가 돌아간다.

모든 순서가 끝나면 '방'은 사라진다. 

 

회원가입을 한 유저는 로그인 시 이전에 생성했던 스몰톡 개인 프로필을 불러와 사용할 수 있다. (식사 메뉴 답변은 새로 받을 것) 임시 닉네임만 입력한 채 비회원으로 진행한 유저는 마지막 단계에서 "스몰톡 프로필을 다음에 또 이용할 수 있어요." 멘트를 받는다. 이때 원하는 패스워드를 입력하면 초기 화면에서 입력했던 닉네임과 질문에 대한 답변을 그대로 사용해 간단히 회원가입이 완료된다.

 

🎈개발 계획

개발 언어: Java 17

프레임워크: Spring Boot 3.2.1

UI: thymeleaf

데이터베이스: MySQL, MongoDB

 

화면은 템플릿 엔진 thymeleaf를 이용해 간단히 구현.

 

아주 간단한 1차 구현 후 조금씩 개선시키는 것을 목표로 한다.

1차: 회원가입/로그인 없음, 초기 화면에서 닉네임 입력하면 곧바로 스몰톡 개인 프로필 생성 

 

UML

ERD

 

 

🎈예상 문제점

  • 당연히 지피티가 답변을 뱉는 데 시간이 걸릴 것. 도저히 수용 불가능한 속도라면 어떻게 해야 할지 아직 대책이 없다.

 

참고 링크

https://techblog.woowahan.com/11072/

https://www.baeldung.com/spring-boot-chatgpt-api-openai#1-api-parameters-and-authentication