효율적 복습을 위한 모의고사 자동제작 서비스
- 기간: 2024.03. - 2024.04. |
- 개인 프로젝트
GPT-4 API를 활용해 학습 자료로부터 객관식 문제 및 해설을 자동 생성하는 에듀테크 서비스
프로젝트 개요



본 서비스는 학생이 업로드한 학습 자료(PDF, docx, txt)를 분석하여 자동으로 객관식 모의고사를 생성하고, 문제 풀이 후 채점 및 해설까지 제공하는 GPT-4 기반 에듀테크 서비스입니다.
교육학과 전공수업 과제로 Streamlit Cloud를 통해 배포하여 실제 10명의 대학생을 대상으로 베타테스트를 진행하였으며, 시험기간 복습에 도움이 되었다는 긍정적인 평가를 받았습니다.
저는 소수과 임용고시를 준비 중인데, 저처럼 수험생이 적어 참고서가 부족한 분야 시험을 앞둔 사람들에게 매우 유용할 것 같습니다.
학생들 입장에서 장소나 시간에 구애받지 않고 학습 내용을 테스트할 수 있다는 점에서 공부의 효율성이 증가할 것 같습니다.
학생들이 직접 정리한 내용을 바탕으로 학습할 수 있어 자율 학습에 큰 도움이 될 것으로 보입니다.
추가 설명 - 프롬프팅 구현과정
추가 설명 - 이용자 반응
문제 해결


1. Pydantic 스키마로 LLM 출력 안정화
문제: 모의고사를 제작하기 위해 (문제 목록 → 각 문제 → 정답/오답 선지)의 중첩된 구조로 응답을 받아야 했습니다. 그러나 GPT-4는 응답 형식이 자유로워, 단순 프롬프트만으로 구조를 명시할 경우 GPT-4가 구조를 정확히 지키지 않아 실패하는 경우가 있었습니다.

해결: Pydantic 스키마로 클래스 필드의 타입과 설명을 정의하고, Langchain을 통해 GPT-4가 반드시 이 구조로만 응답하도록 강제했습니다. SingleQuestion과 Questionmaker 2개 클래스를 중첩하여 사용함으로써, 복잡한 모의고사 구조도 자동으로 검증 및 파싱되도록 구현했습니다.
결과: LLM 응답이 항상 정형화된 구조로 반환되어, 응답의 신뢰성을 확보할 수 있게 되었습니다.
2. 세션 기반 3단계 워크플로우 구현
문제: 파일 업로드 → 문제 풀이 → 채점 및 해설의 3단계 흐름을 개별 화면으로 구현해야 했는데, Streamlit은 화면이 전환될 때마다 스크립트를 처음부터 재실행하여 변수가 초기화되었습니다. 이로 인해 GPT API 호출 결과가 손실되어 비용이 중복 발생할 수 있는 문제가 있었습니다.

해결: 현재 진행 단계, 문제 데이터, 사용자가 제출한 정답 데이터를 세션 state에 저장하였습니다. 3단계 흐름이 진행되는 동안 세션에 저장된 데이터를 재사용하여 불필요한 API 재호출을 방지했습니다.
결과: 3단계 흐름 진행 시 불필요한 API 재호출로 인한 비용 발생을 방지했습니다.