2023.04.29 - [프로젝트] - Chat GPT 활용 서비스 구현하기 - 1. 설계하기
2023.05.02 - [프로젝트] - Chat GPT 활용 서비스 구현하기 - 2. Open AI API 연동하기
2023.05.02 - [프로젝트] - Chat GPT 활용 서비스 구현하기 - 3. Open AI API 연동하기 ver2.
2023.05.04 - [프로젝트] - Chat GPT 활용 서비스 구현하기 - 4. 데이터 저장하기
2023.05.05 - [프로젝트] - Chat GPT 활용 서비스 구현하기 - 5. 메일로 전송하기
2023.05.06 - [프로젝트] - Chat GPT 활용 서비스 구현하기 - 6. 스케쥴러
Chat GPT 활용 면접 질문 메일링 서비스 포스팅을 마치면서 프로젝트 회고를 진행하자.
본론으로 바로 들어가서!
이 프로젝트 안에는 아직도 고칠 요소들이 많다. 고칠 요소들을 나열해보자.
- 사용자가 카테고리를 입력하여 해당 카테고리에 대한 질문만 메일로 받는 기능
- 아직 질문들의 정확도가 높지 않은 것으로 판단된다. 중복되는 질문들도 꽤 많이 발생한다. 이런 점들을 고치고 나서 각 카테고리 별 좋은 질문들이 많아졌을 때 개별 카테고리로만 질문을 받을 수도 있도록 변경하겠다.
- 중복되는 질문들이 많이 쌓이고 있다.
- 질의어가 같으니 어찌보면 당연한 결과일 수도 있다. 중복된 질문을 제거할 수 있는 방법을 고민해보고 해결해볼 예정이다.
- 현재 생각 중인 방법은 추출한 키워드를 기반으로 중복도를 계산하는 방법인데 적용하기가 만만치 않다.
이 프로젝트를 하면서 배운점들도 있다. 배운 점들을 나열해보자.
- 설계는 완벽할 수 없다.
- 처음에 이 프로젝트를 진행하며 설계를 먼저 완성했는데 완성된 설계를 보니 문제가 있다고 생각되지 않았었다. 하지만, 개발을 진행하면서 이 부분은 따로 빠져나와서 독립적인 책임을 가지고 있었어야 맞는 설계군! 이라고 생각이 든 부분이 몇 가지 있었다.
- 완벽한 설계를 할 수 있으면 좋겠지만, 완벽한 설계는 아직 내 수준에서 파악할 수 없는 것 같으니 힘들더라도 몸으로 떼우자는 마인드로 설계를 고침에 있어서 겁먹지 말고 많이 맞아보자.
- @Value 어노테이션과 Bean
- @Value 어노테이션은 Bean을 생성할 때 프로퍼티를 주입할 때 사용하는 것이므로 Bean이 아닌 객체에 자꾸 주입하려는 실수를 하지말자.
- OpenFeignClient 처음 사용!!
- 과거에는 외부 API를 사용하기 위해 RestTemplate을 사용했었다. RestTemplate을 사용하면서 직접 Message에 들어갈 파라미터 등을 매핑해줬었던 기억이 있는데 OpenFeignClient를 사용해보니 인터페이스를 통해 매우 편리하게 사용할 수 있었다. 더군다나 RestTemplate은 앞으로 Deprecated 된다는 로그를 본 적있었는데 새로운 방법을 찾았다.
- 데이터 역직렬화
- ChatGPT API를 사용해보니 결과를 JSON으로 주기는 하지만 우리가 원하는 값은 결국 content라는 필드에 존재한다. 이 필드는 String으로 되어 있어서 이를 Json 형식으로 받더라도 objectMapper를 통해 역직렬화를 해줄필요가 있었다. 처음에는 왜 자동 매핑이 안되지..? 하고 있었는데 생각해보니 content라는 필드 자체가 String이기는 했지만 Json Array를 요청하고 있었기 때문에 자동 매핑이 되지 않았다.
- parallel하게 메일 전송하기
- 프로젝트 구조 상 모든 사용자에게 같은 질문을 던져주기 때문에 발송 대상자 리스트만 있으면 질문을 고르는 과정은 1번만 수행되면 되고 이전의 작업이 다음의 작업에 영향을 주지 않는다. 따라서 이 경우에는 병렬적으로 메일을 발송하여 시간을 아낄 수 있다. stream API를 사용하면서 한 번도 parallel stream 을 사용할 일이 없었는데 이번 기회에 사용하게 되었다. 내부 동작 원리를 추가적으로 공부해보려고 한다.
이로써, 해당 프로젝트에 대한 포스팅은 마친다.
긴 글 읽어주셔서 감사합니다.
'프로젝트' 카테고리의 다른 글
Chat GPT 활용 서비스 구현하기 - 6. 스케쥴러 (0) | 2023.05.06 |
---|---|
Chat GPT 활용 서비스 구현하기 - 5. 메일로 전송하기 (2) | 2023.05.05 |
Chat GPT 활용 서비스 구현하기 - 4. 데이터 저장하기 (0) | 2023.05.04 |
Chat GPT 활용 서비스 구현하기 - 3. Open AI API 연동하기 ver2. (0) | 2023.05.02 |
Chat GPT 활용 서비스 구현하기 - 2. Open AI API 연동하기 (0) | 2023.05.02 |