Refact : 챗봇 관련 API 리팩토링 #38
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
관련 이슈
#36
작업한 내용
1. 응답 DTO 통합 관리, Clova API 호출시 사용되는 request, response DTO 통합
(관리 포인트를 줄이고 컨버터를 통한 DTO 변환 로직의 일관성을 확보하기 위함입니다.)
(질문 추천, 응답 생성 때문에 일부로 나누신거 같은데, 보니까 DTO의 필드값이 전부 똑같기 때문에 제거하는게 코드 가독성을 높이는 방향인것 같습니다!)
2. 챗봇 질문하기 API 개선
(예외 발생 지점을 명확히 추적하고, 불필요한 예외 래핑을 줄이기 위함입니다.. Dto를 생성하는 부분에서는 예외가 크게 발생하지 않기 때문에 최대한 외부 API를 호출하는 지점과, 응답값을 후처리하는 부분들 위주로 try-catch를 달았습니다.)
3. 채팅 로그 조회 API 개선
(해당 서비스 로직에서 발생 가능한 예외는 전역 예외 처리(@ControllerAdvice)를 통해 일관되게 관리되고 있기 때문입니다.)
4. 추천 질문 조회 API 개선
5. Clova 연동 구조 분리 (요청 생성은 converter에 HTTP 호출은 ClovaApiClient에)
가장 크게 변경된 부분입니다!
6. 메시지 후처리/JSON 파싱 리팩터링
(문자열을 정리하는 역할을 수행하고 있기에 util보다는 converter 네이밍이 어울린다고 판단했습니다. )
PR Point 및 참고사항, 스크린샷
본문이 너무 긴데.. 정리하자면
최대한 기존 서비스 로직/주석 최대 유지했습니다.
try-catch 범위를 축소(외부 호출/후처리)했고
응답 DTO를 ChatResponse 내부 클래스로 통합, 중복 DTO 제거를 진행했습니다.
아래 부분들 위주로 확인 부탁드리겠습니다!
가장 큰 변경은 요청 본문 생성 , Clova API 호출 분리입니다. 아래 두 클래스 위주로 봐주시면 좋을 것 같습니다..!
ClovaApiConverter = 요청 생성(프롬프트/하이퍼파라미터 세팅)
ClovaApiClient = 실제 HTTP 호출
Clova 요청 파라미터 값 동일한지 확인 부탁드립니다.
topP=0.8, topK=0, temperature=0.5, repeatPenalty=5.0,
maxTokens(채팅=512 / 추천=100), includeAiFilters=true, seed=0, stopBefore=[]
프론트로 나가는 응답 스키마/필드값 변화 없음 확인
가능한 기존 값과 동일하게 맞췄지만 놓친 부분이 있을 수 있습니다ㅠㅜ
숫자 파라미터나 응답 필드에서 달라진 점이 보이면 코멘트 부탁드립니다!
PR 본문이 길어져 죄송합니다 🙇♂️ 조금만 더 화이팅입니다!!
변경된 패키지 구조입니다.

그리고 해당 API에 대해 정상 작동하는 것을 확인했습니다!

아래 사진은 질문 2개 추천 하는 API 를 호출했을 경우의 응답값입니다.
채팅 로그를 확인하는 api를 호출했을 경우의 응답값입니다.
그리고 챗봇에게 질문하는 api를 호출했을 경우의 응답값입니다.

