문제 상황 및 배경

저희는 “**사용자가 학습한(정리) 내용을 바탕으로 맞춤형 문제를 생성해주는 서비스”**를 개발하고 있습니다.

현재 프로젝트의 핵심인 모의고사 생성 API의 QA 과정에서 여러 문제점들을 발견했고 이 글에서는 기존 모의고사 API가 가진 문제점들을 분석하고 이를 해결하기 위한 과정을 공유하고자 합니다.

현재 모의고사 API의 문제점

우리 서비스에서 현재 선택 가능한 모의고사 유형은 6가지 문제 유형이 존재합니다.

모든 유형의 생성 조건을 담은 프롬프트는 하나의 파일로 관리되었으며 이 프롬프트의 길이는 5,096자에 달했고, 사용자의 입력값(학습 내용)은 대략 1,000~10,000자까지 매우 유동적이었습니다.

이러한 구조는 다음과 같은 네 가지 주요 문제점을 야기했습니다.

  1. 결과물의 일관성 및 정확도 부족

    → AI 모델이 방대한 프롬프트를 완벽하게 이해하지 못했습니다. (6가지 문제 유형별 특징을 제대로 반영하지 못해 좋지 않은 품질의 문제 생성)

    → 요청한 20문제를 생성하지 못하고 5~17개 사이를 유동적으로 반환하는 점이었습니다.

    → 일정하지 않은 JSON 형식으로 반환되어 파싱 과정에서 오류가 비번하게 발생하였습니다.

  2. 사용자 입력에 따른 품질 저하

    → 사용자 입력의 길이에 따라 결과물의 편차가 컸습니다.

리펙토링 목표

  1. 일관성

    → 항상 정확히 20개의 문제 or 추후 기획에 따라 원하는 문제의 수를 생성해야 한다. (Structured Outputs 해결)

    → 항상 동일한 JSON 형식으로 반환되어야한다. (Structured Outputs 해결)