Quizly 서비스에서는 사용자 학습 데이터를 기반으로 LLM 기반의 모델을 활용하여 문제를 자동 생성하고 있습니다. 하지만 QA 과정에서 여러가지 이슈를 발견하였습니다.

본 글에서는 QA 과정에서 발견된 문제점들을 분석하고 해결하기 위해 채택한 전략과 기술적 해결 과정을 공유합니다.

1. 초기 시스템의 구조와 문제점

1.1 현재 상황

기존 시스템은 FIND_CORRECT, FIND_MATCH, ESSAY 등 6가지 문제 유형을 생성하기 위해 5,096자 규모의 단일 프롬프트를 사용했습니다. 여기에 사용자 데이터(약 1000자~10,000자)가 더해져 AI가 한 번에 처리해야 할 정보량이 지나치게 많았습니다.

1.2 주요 발견 이슈

2. 리펙토링 목표

2.1 일관성

2.2 정확성

2.3 사용성

3. 기술 적용 (해결 과정)

image.png

3.1 Structured Outputs (HCX-007)

3.2 Prompt Routing & Post-processing

3.3 Chunking

3.4 Async & 병렬 처리

3.5 트러블 슈팅 (Spring AOP, 셀프 호출)

4. 마치며

4.1 API 응답 시간

5회 연속 테스트(사용자 입력 7000자 + FIND_MATCH, ESSAY) 중 3~5회차의 평균 응답시간을 기준으로 확인해보겠습니다. 전체 소요 시간의 86.8%를 제거(87.62초 →11.55초)하였으며 응답 속도가 약 7.6배 더 빨라졌습니다.

4.2 비용

마지막으로 AI API 1회 요청시 비용의 변화를 확인해보겠습니다. HCX-007의 비용은 입력 토큰(1.25원 / 1,000토큰), 출력 토큰 (5원 / 1,000토큰)입니다. 최종 비용 분석 결과 최적화 진행 이후 12%의 비용 상승이 있습니다.

4.3 관련 PR

https://github.com/Quizly-Team/backend/pull/38