1+ from pydantic import BaseModel , Field
2+ from typing import List , Literal , Optional
3+
4+ # =========================================================
5+ # 문제 생성(Question Generation, QG) 스키마
6+ # =========================================================
7+
8+ class QuestionItem (BaseModel ):
9+ """생성된 문제 하나에 대한 데이터 모델"""
10+ question : str = Field (..., description = "질문 내용" )
11+ answer : str = Field (..., description = "정답 내용" )
12+ # 객관식일 경우 4개의 보기, 주관식일 경우 빈 리스트
13+ options : List [str ] = Field (default_factory = list , description = "질문 보기를 포함하는 리스트" )
14+
15+ class QuestionGenerationRequest (BaseModel ):
16+ """문제 생성 요청 시 사용되는 입력 모델"""
17+ text : str = Field (..., description = "문제를 생성할 기반 텍스트 (LLM 요약 결과 등)" )
18+ num_questions : int = Field (5 , description = "생성할 문제 개수 (1-10)" , ge = 1 , le = 10 )
19+ question_type : Literal ["multiple_choice" , "short_answer" ] = Field (
20+ "multiple_choice" , description = "생성할 문제 유형"
21+ )
22+ language : Literal ["ko" , "en" ] = Field ("ko" , description = "텍스트의 언어 (ko 또는 en)" )
23+
24+ class QuestionGenerationResponse (BaseModel ):
25+ """문제 생성 결과 응답 모델"""
26+ questions : List [QuestionItem ] = Field (..., description = "생성된 문제 리스트" )
0 commit comments