Quizly 서비스에서는 사용자 학습 데이터를 기반으로 LLM 기반의 모델을 활용하여 문제를 자동 생성하고 있습니다. 하지만 QA 과정에서 여러가지 이슈를 발견하였습니다.
본 글에서는 QA 과정에서 발견된 문제점들을 분석하고 해결하기 위해 채택한 전략과 기술적 해결 과정을 공유합니다.
기존 시스템은 FIND_CORRECT, FIND_MATCH, ESSAY 등 6가지 문제 유형을 생성하기 위해 5,096자 규모의 단일 프롬프트를 사용했습니다. 여기에 사용자 데이터(약 1000자~10,000자)가 더해져 AI가 한 번에 처리해야 할 정보량이 지나치게 많았습니다.
일관성 저하
→ AI가 여러 유형의 규칙을 혼동하여, '옳은 것'을 찾는 문제에 '틀린 것'의 특징이 섞이는 등 품질이 저하되었습니다.
문항 수 미달
→ 20~25문항을 요청해도 AI가 5~17개만 반환하는 등 출제 개수가 유동적이었습니다.
JSON 파싱 실패
→ ****프롬프트 지시만으로는 완벽한 JSON 규격을 유지하지 못해 백엔드에서 파싱 에러가 빈번했습니다.
응답 지연
→ ****정확도를 높이기 위해 모델의 '추론(Thinking)' 옵션을 켜면 응답 시간이 5분에서 10분까지 늘어났습니다.
항상 정확히 20개의 문제 or 추후 기획에 따라 원하는 문제의 수를 생성해야 한다.
(Structured Outputs)
항상 동일한 JSON 형식으로 반환되어야한다.
(Structured Outputs)
각 문제 유형은 프롬프트에 명시된 모든 조건을 완벽하게 만족해야 한다.
(Structured Outputs + Prompt Routing & Post-processing, Chunking)
동일하거나 비슷한 문제가 나오지 않아야 한다.
(Chunking)
사용자가 입력한 데이터의 전체 범위에서 편중 없이 골고루 문제를 출제해야 한다.
(Chunking)
기획상 API 반환 시간이 최대 5분 이내로 작동해야 하며 빠를수록 좋다.
(Async(병렬처리) 해결)

5회 연속 테스트(사용자 입력 7000자 + FIND_MATCH, ESSAY) 중 3~5회차의 평균 응답시간을 기준으로 확인해보겠습니다. 전체 소요 시간의 86.8%를 제거(87.62초 →11.55초)하였으며 응답 속도가 약 7.6배 더 빨라졌습니다.
1m 27.62s11.55s마지막으로 AI API 1회 요청시 비용의 변화를 확인해보겠습니다. HCX-007의 비용은 입력 토큰(1.25원 / 1,000토큰), 출력 토큰 (5원 / 1,000토큰)입니다. 최종 비용 분석 결과 최적화 진행 이후 12%의 비용 상승이 있습니다.
기존 방식
토큰 사용량
→ 입력 5,384 / 출력 6,500
최종 비용
→ (5.384 X 1.25) + (6.5 X 5) = 39.22원
최적화 방식
단일 호출당 토큰
→ 입력 837 / 출력 670
단일 호출 비용
→ (0.837 X 1.25) + (0.67 X 5) = 4.39원
총 비용 (10회)
→ 4.39원 X 10 = 43.9원
https://github.com/Quizly-Team/backend/pull/38