chat gpt api를 사용한 채팅 어플 구현시 응답 지연 개선작업

su dong·2023년 6월 5일
2
post-thumbnail

해커톤에서 chat gpt api를 사용하여 상담 챗봇을 구현하려고 한다.

기능구현 관점에서 서비스 관계도를 그려보면 아래와 같다.

구현방법은 서버 2개를 띄워서 각각의 서버에서 프론트-백(tomcat), 백-ai(fast api)의 통신을 연결한다.

db는 관계형 데이터베이스인 mysql로 설정했다.

이렇게 하면 기초적인 통신은 가능함을 확인했는데, 예상치 못한 문제가 발생했다.

문제 상황:
-> 현재 chat gpt 3.5를 사용할 경우 채팅을 보내고 응답이 오는 속도가 20초 정도 소요됨.
(사용가능한 chat gpt api 모델들: https://platform.openai.com/docs/models/model-endpoint-compatibility)
사용자는 0.4초 이상 무응답시 서비스 장애로 느껴 서비스 이탈 확률이 높아짐.(사용자 경험 저해)

개선이 필요한 지점: 클라이언트와 백엔드를 연결하는 지점(메시지 브로커, 메시지 헨들러)의 반응속도 개선점 생각해보기

개선방법 1:
chat gpt 3.5 대신에 유료 버전인 chat gpt4를 사용한다.

개선방법 2:
최적화된 모델 사용: 상황에 따라 더 적은 계산력을 필요로 하는, 예를 들면 GPT-2나 distilGPT 등의 모델을 사용할 수도 있습니다. 이들 모델은 GPT-3 또는 GPT-4와 비교하여 응답 생성 속도가 빠르지만, 언어 생성 품질은 다소 낮을 수 있습니다.

개선방법 3:
매번 통신 시에 Java 백엔드를 거치지 않고 바로 fast api로 통신 하다가 사용자가 "대화 분석하기"버튼을 클릭하거나, "(홈으로)뒤로가기"버튼을 클릭 시 프론트에서 변수에 저장해놓은 지금까지의 대화 내용을 백엔드에 전송함.

개선방법 4:
초창기 엘리베이터는 속도가 굉장히 느려서 사용자 경험이 좋지 않았는데, 이 때 엘리베이터 속도를 높이는 대신에 엘리베이터에 거울을 비치함으로써 사람들이 기다리는 시간을 지루하지 않도록 만듬. -> 마찬가지로 대화를 입력하고 chat gpt 상담 봇의 응답을 기다리는 동안 특별한 이벤트를 추가하면 (가령 대화 말풍선이 생성 중이라고 움직인다던가!) 사용자 경험 향상 기대가능.

참고 자료:
https://platform.openai.com/docs/models/gpt-4
https://tech.scatterlab.co.kr/ml-model-optimize/

profile
매일매일 성장하는 백엔드 엔지니어 박지수입니다.

0개의 댓글